From 1ed674b934a07515652cc71c849484c7521ebab9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 30 Jul 2023 14:30:41 +0000 Subject: [PATCH] deploy: abaplint/abaplint@488d82658cea1a4fb69c44b67544b8385e2d1b5d --- .nojekyll | 0 63f3cfe3c7682305cb2a.png | 1 + 81bf728c0119b97a865c.png | 1 + CNAME | 1 + a30fc9b58d49256698dcdd100bafe2f2.svg | 253 + app.bundle.js | 28131 ++++++++++++++++ c1e1ed3a9c1ad6a35a55.png | 1 + codicon.ttf | Bin 0 -> 73464 bytes d1ad2f913c5dc1f01a03.png | 1 + editor.worker.bundle.js | 678 + favicon-16x16.png | Bin 0 -> 569 bytes favicon-32x32.png | Bin 0 -> 1421 bytes index.html | 26 + json.worker.bundle.js | 688 + ..._vs_basic-languages_apex_apex_js.bundle.js | 22 + ...s_basic-languages_azcli_azcli_js.bundle.js | 22 + ...sm_vs_basic-languages_bat_bat_js.bundle.js | 22 + ...s_basic-languages_bicep_bicep_js.bundle.js | 22 + ...c-languages_cameligo_cameligo_js.bundle.js | 22 + ...basic-languages_coffee_coffee_js.bundle.js | 22 + ...sm_vs_basic-languages_cpp_cpp_js.bundle.js | 22 + ...basic-languages_csharp_csharp_js.bundle.js | 22 + ...sm_vs_basic-languages_csp_csp_js.bundle.js | 22 + ...sm_vs_basic-languages_css_css_js.bundle.js | 22 + ...basic-languages_cypher_cypher_js.bundle.js | 22 + ..._vs_basic-languages_dart_dart_js.bundle.js | 22 + ...nguages_dockerfile_dockerfile_js.bundle.js | 22 + ...sm_vs_basic-languages_ecl_ecl_js.bundle.js | 22 + ...s_basic-languages_flow9_flow9_js.bundle.js | 22 + ...basic-languages_fsharp_fsharp_js.bundle.js | 22 + ..._esm_vs_basic-languages_go_go_js.bundle.js | 22 + ...sic-languages_graphql_graphql_js.bundle.js | 22 + ...sm_vs_basic-languages_hcl_hcl_js.bundle.js | 22 + ..._vs_basic-languages_html_html_js.bundle.js | 22 + ...sm_vs_basic-languages_ini_ini_js.bundle.js | 22 + ..._vs_basic-languages_java_java_js.bundle.js | 22 + ...basic-languages_kotlin_kotlin_js.bundle.js | 22 + ..._vs_basic-languages_less_less_js.bundle.js | 22 + ...s_basic-languages_lexon_lexon_js.bundle.js | 22 + ...basic-languages_liquid_liquid_js.bundle.js | 22 + ...sm_vs_basic-languages_lua_lua_js.bundle.js | 22 + ..._esm_vs_basic-languages_m3_m3_js.bundle.js | 22 + ...c-languages_markdown_markdown_js.bundle.js | 22 + ..._vs_basic-languages_mips_mips_js.bundle.js | 22 + ...s_basic-languages_msdax_msdax_js.bundle.js | 22 + ...uages_objective-c_objective-c_js.bundle.js | 22 + ...basic-languages_pascal_pascal_js.bundle.js | 22 + ...languages_pascaligo_pascaligo_js.bundle.js | 22 + ...sm_vs_basic-languages_pla_pla_js.bundle.js | 22 + ...nguages_powershell_powershell_js.bundle.js | 22 + ...sm_vs_basic-languages_pug_pug_js.bundle.js | 22 + ...basic-languages_python_python_js.bundle.js | 22 + ...basic-languages_qsharp_qsharp_js.bundle.js | 22 + ...or_esm_vs_basic-languages_r_r_js.bundle.js | 22 + ...s_basic-languages_redis_redis_js.bundle.js | 22 + ...ructuredtext_restructuredtext_js.bundle.js | 22 + ..._vs_basic-languages_rust_rust_js.bundle.js | 22 + ..._esm_vs_basic-languages_sb_sb_js.bundle.js | 22 + ...basic-languages_scheme_scheme_js.bundle.js | 22 + ..._vs_basic-languages_scss_scss_js.bundle.js | 22 + ...s_basic-languages_shell_shell_js.bundle.js | 22 + ...basic-languages_sophia_sophia_js.bundle.js | 22 + ...basic-languages_sparql_sparql_js.bundle.js | 22 + ...s_basic-languages_swift_swift_js.bundle.js | 22 + ...sm_vs_basic-languages_tcl_tcl_js.bundle.js | 22 + ..._vs_basic-languages_twig_twig_js.bundle.js | 22 + ...nguages_typescript_typescript_js.bundle.js | 22 + ..._esm_vs_basic-languages_vb_vb_js.bundle.js | 22 + ..._vs_basic-languages_wgsl_wgsl_js.bundle.js | 22 + ...sm_vs_basic-languages_xml_xml_js.bundle.js | 22 + ..._vs_basic-languages_yaml_yaml_js.bundle.js | 22 + ..._vs_basic-languages_abap_abap_js.bundle.js | 22 + ...sic-languages_clojure_clojure_js.bundle.js | 22 + ...basic-languages_elixir_elixir_js.bundle.js | 22 + ...uages_freemarker2_freemarker2_js.bundle.js | 22 + ...nguages_handlebars_handlebars_js.bundle.js | 22 + ...nguages_javascript_javascript_js.bundle.js | 32 + ...s_basic-languages_julia_julia_js.bundle.js | 22 + ...s_basic-languages_mysql_mysql_js.bundle.js | 22 + ..._vs_basic-languages_perl_perl_js.bundle.js | 22 + ...s_basic-languages_pgsql_pgsql_js.bundle.js | 22 + ...sm_vs_basic-languages_php_php_js.bundle.js | 22 + ...c-languages_postiats_postiats_js.bundle.js | 22 + ...nguages_powerquery_powerquery_js.bundle.js | 22 + ...c-languages_protobuf_protobuf_js.bundle.js | 22 + ...s_basic-languages_razor_razor_js.bundle.js | 22 + ...c-languages_redshift_redshift_js.bundle.js | 22 + ..._vs_basic-languages_ruby_ruby_js.bundle.js | 22 + ...s_basic-languages_scala_scala_js.bundle.js | 22 + ...c-languages_solidity_solidity_js.bundle.js | 22 + ...sm_vs_basic-languages_sql_sql_js.bundle.js | 22 + ..._esm_vs_basic-languages_st_st_js.bundle.js | 22 + ...s_systemverilog_systemverilog_js.bundle.js | 22 + ...r_esm_vs_language_css_cssMode_js.bundle.js | 22 + ...esm_vs_language_html_htmlMode_js.bundle.js | 22 + ...esm_vs_language_json_jsonMode_js.bundle.js | 22 + ...vs_language_typescript_tsMode_js.bundle.js | 22 + 97 files changed, 31617 insertions(+) create mode 100644 .nojekyll create mode 100644 63f3cfe3c7682305cb2a.png create mode 100644 81bf728c0119b97a865c.png create mode 100644 CNAME create mode 100644 a30fc9b58d49256698dcdd100bafe2f2.svg create mode 100644 app.bundle.js create mode 100644 c1e1ed3a9c1ad6a35a55.png create mode 100644 codicon.ttf create mode 100644 d1ad2f913c5dc1f01a03.png create mode 100644 editor.worker.bundle.js create mode 100644 favicon-16x16.png create mode 100644 favicon-32x32.png create mode 100644 index.html create mode 100644 json.worker.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_apex_apex_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_azcli_azcli_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_bat_bat_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_bicep_bicep_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_cameligo_cameligo_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_coffee_coffee_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_cpp_cpp_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_csharp_csharp_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_csp_csp_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_css_css_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_cypher_cypher_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_dart_dart_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_dockerfile_dockerfile_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_ecl_ecl_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_flow9_flow9_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_fsharp_fsharp_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_go_go_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_graphql_graphql_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_hcl_hcl_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_html_html_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_ini_ini_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_java_java_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_kotlin_kotlin_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_less_less_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_lexon_lexon_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_liquid_liquid_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_lua_lua_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_m3_m3_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_markdown_markdown_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_mips_mips_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_msdax_msdax_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_objective-c_objective-c_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_pascal_pascal_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_pascaligo_pascaligo_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_pla_pla_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_powershell_powershell_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_pug_pug_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_python_python_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_qsharp_qsharp_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_r_r_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_redis_redis_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_restructuredtext_restructuredtext_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_rust_rust_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_sb_sb_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_scheme_scheme_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_scss_scss_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_shell_shell_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_sophia_sophia_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_sparql_sparql_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_swift_swift_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_tcl_tcl_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_twig_twig_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_typescript_typescript_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_vb_vb_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_wgsl_wgsl_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_xml_xml_js.bundle.js create mode 100644 node_modules_monaco-editor_esm_vs_basic-languages_yaml_yaml_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_abap_abap_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_clojure_clojure_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_elixir_elixir_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_handlebars_handlebars_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_javascript_javascript_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_julia_julia_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_mysql_mysql_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_perl_perl_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_pgsql_pgsql_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_php_php_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_postiats_postiats_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_powerquery_powerquery_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_protobuf_protobuf_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_razor_razor_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_redshift_redshift_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_ruby_ruby_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_scala_scala_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_solidity_solidity_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_sql_sql_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_st_st_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_basic-languages_systemverilog_systemverilog_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_language_css_cssMode_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_language_html_htmlMode_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_language_json_jsonMode_js.bundle.js create mode 100644 vendors-node_modules_monaco-editor_esm_vs_language_typescript_tsMode_js.bundle.js diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/63f3cfe3c7682305cb2a.png b/63f3cfe3c7682305cb2a.png new file mode 100644 index 00000000..83782e71 --- /dev/null +++ b/63f3cfe3c7682305cb2a.png @@ -0,0 +1 @@ +export default "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUAAABDSURBVChTnctBCgAwCANBf+3z0+YgFExr9TAEAmsA2uRZkWdFnsHd9+Q/HYFBK4rgOzqD74hGEY0iGkU38qzI8w22AMNb74XHwmKSAAAAAElFTkSuQmCC" \ No newline at end of file diff --git a/81bf728c0119b97a865c.png b/81bf728c0119b97a865c.png new file mode 100644 index 00000000..f3e4910b --- /dev/null +++ b/81bf728c0119b97a865c.png @@ -0,0 +1 @@ +export default "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUAAABDSURBVChTlcsxCgAwCENRb+3xUzIIlUZDhzf4MQHgm4yOjI6MjoxOOzITk/uvjcgNqB1lG9ATyjQgGR0ZHRkdGXeIA38574WaLSX0AAAAAElFTkSuQmCC" \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..2e702fc2 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +playground.abaplint.org diff --git a/a30fc9b58d49256698dcdd100bafe2f2.svg b/a30fc9b58d49256698dcdd100bafe2f2.svg new file mode 100644 index 00000000..00f984ed --- /dev/null +++ b/a30fc9b58d49256698dcdd100bafe2f2.svg @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app.bundle.js b/app.bundle.js new file mode 100644 index 00000000..f6264267 --- /dev/null +++ b/app.bundle.js @@ -0,0 +1,28131 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/lexer.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/lexer.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Lexer = void 0;\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst tokens_1 = __webpack_require__(/*! ./tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass Buffer {\n constructor() {\n this.buf = \"\";\n }\n add(s) {\n this.buf = this.buf + s;\n return this.buf;\n }\n get() {\n return this.buf;\n }\n clear() {\n this.buf = \"\";\n }\n countIsEven(char) {\n let count = 0;\n for (let i = 0; i < this.buf.length; i += 1) {\n if (this.buf.charAt(i) === char) {\n count += 1;\n }\n }\n return count % 2 === 0;\n }\n}\nclass Stream {\n constructor(raw) {\n this.offset = -1;\n this.raw = raw;\n this.row = 0;\n this.col = 0;\n }\n advance() {\n if (this.currentChar() === \"\\n\") {\n this.col = 1;\n this.row = this.row + 1;\n }\n if (this.offset === this.raw.length) {\n return false;\n }\n this.col = this.col + 1;\n this.offset = this.offset + 1;\n return true;\n }\n getCol() {\n return this.col;\n }\n getRow() {\n return this.row;\n }\n prevChar() {\n if (this.offset - 1 < 0) {\n return \"\";\n }\n return this.raw.substr(this.offset - 1, 1);\n }\n prevPrevChar() {\n if (this.offset - 2 < 0) {\n return \"\";\n }\n return this.raw.substr(this.offset - 2, 2);\n }\n currentChar() {\n if (this.offset < 0) {\n return \"\\n\"; // simulate newline at start of file to handle star(*) comments\n }\n else if (this.offset >= this.raw.length) {\n return \"\";\n }\n return this.raw.substr(this.offset, 1);\n }\n nextChar() {\n if (this.offset + 2 > this.raw.length) {\n return \"\";\n }\n return this.raw.substr(this.offset + 1, 1);\n }\n nextNextChar() {\n if (this.offset + 3 > this.raw.length) {\n return this.nextChar();\n }\n return this.raw.substr(this.offset + 1, 2);\n }\n getRaw() {\n return this.raw;\n }\n getOffset() {\n return this.offset;\n }\n}\nclass Lexer {\n constructor() {\n this.ModeNormal = 1;\n this.ModePing = 2;\n this.ModeStr = 3;\n this.ModeTemplate = 4;\n this.ModeComment = 5;\n this.ModePragma = 6;\n }\n run(file, virtual) {\n this.virtual = virtual;\n this.tokens = [];\n this.m = this.ModeNormal;\n this.process(file.getRaw());\n return { file, tokens: this.tokens };\n }\n add() {\n const s = this.buffer.get().trim();\n if (s.length > 0) {\n const col = this.stream.getCol();\n const row = this.stream.getRow();\n let whiteBefore = false;\n if (this.stream.getOffset() - s.length >= 0) {\n const prev = this.stream.getRaw().substr(this.stream.getOffset() - s.length, 1);\n if (prev === \" \" || prev === \"\\n\" || prev === \"\\t\" || prev === \":\") {\n whiteBefore = true;\n }\n }\n let whiteAfter = false;\n const next = this.stream.nextChar();\n if (next === \" \" || next === \"\\n\" || next === \"\\t\" || next === \":\" || next === \",\" || next === \".\" || next === \"\" || next === \"\\\"\") {\n whiteAfter = true;\n }\n let pos = new position_1.Position(row, col - s.length);\n if (this.virtual) {\n pos = new position_1.VirtualPosition(this.virtual, pos.getRow(), pos.getCol());\n }\n let tok = undefined;\n if (this.m === this.ModeComment) {\n tok = new tokens_1.Comment(pos, s);\n }\n else if (this.m === this.ModePing || this.m === this.ModeStr) {\n tok = new tokens_1.StringToken(pos, s);\n }\n else if (this.m === this.ModeTemplate) {\n const first = s.charAt(0);\n const last = s.charAt(s.length - 1);\n if (first === \"|\" && last === \"|\") {\n tok = new tokens_1.StringTemplate(pos, s);\n }\n else if (first === \"|\" && last === \"{\" && whiteAfter === true) {\n tok = new tokens_1.StringTemplateBegin(pos, s);\n }\n else if (first === \"}\" && last === \"|\" && whiteBefore === true) {\n tok = new tokens_1.StringTemplateEnd(pos, s);\n }\n else if (first === \"}\" && last === \"{\" && whiteAfter === true && whiteBefore === true) {\n tok = new tokens_1.StringTemplateMiddle(pos, s);\n }\n else {\n tok = new tokens_1.Identifier(pos, s);\n }\n }\n else if (s.length > 2 && s.substr(0, 2) === \"##\") {\n tok = new tokens_1.Pragma(pos, s);\n }\n else if (s.length === 1) {\n if (s === \".\" || s === \",\") {\n tok = new tokens_1.Punctuation(pos, s);\n }\n else if (s === \"[\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WBracketLeftW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WBracketLeft(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.BracketLeftW(pos, s);\n }\n else {\n tok = new tokens_1.BracketLeft(pos, s);\n }\n }\n else if (s === \"(\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WParenLeftW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WParenLeft(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.ParenLeftW(pos, s);\n }\n else {\n tok = new tokens_1.ParenLeft(pos, s);\n }\n }\n else if (s === \"]\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WBracketRightW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WBracketRight(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.BracketRightW(pos, s);\n }\n else {\n tok = new tokens_1.BracketRight(pos, s);\n }\n }\n else if (s === \")\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WParenRightW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WParenRight(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.ParenRightW(pos, s);\n }\n else {\n tok = new tokens_1.ParenRight(pos, s);\n }\n }\n else if (s === \"-\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WDashW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WDash(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.DashW(pos, s);\n }\n else {\n tok = new tokens_1.Dash(pos, s);\n }\n }\n else if (s === \"+\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WPlusW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WPlus(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.PlusW(pos, s);\n }\n else {\n tok = new tokens_1.Plus(pos, s);\n }\n }\n else if (s === \"@\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WAtW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WAt(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.AtW(pos, s);\n }\n else {\n tok = new tokens_1.At(pos, s);\n }\n }\n }\n else if (s.length === 2) {\n if (s === \"->\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WInstanceArrowW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WInstanceArrow(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.InstanceArrowW(pos, s);\n }\n else {\n tok = new tokens_1.InstanceArrow(pos, s);\n }\n }\n else if (s === \"=>\") {\n if (whiteBefore === true && whiteAfter === true) {\n tok = new tokens_1.WStaticArrowW(pos, s);\n }\n else if (whiteBefore === true) {\n tok = new tokens_1.WStaticArrow(pos, s);\n }\n else if (whiteAfter === true) {\n tok = new tokens_1.StaticArrowW(pos, s);\n }\n else {\n tok = new tokens_1.StaticArrow(pos, s);\n }\n }\n }\n if (tok === undefined) {\n tok = new tokens_1.Identifier(pos, s);\n }\n this.tokens.push(tok);\n }\n this.buffer.clear();\n }\n process(raw) {\n this.stream = new Stream(raw.replace(/\\r/g, \"\"));\n this.buffer = new Buffer();\n const splits = {};\n splits[\" \"] = true;\n splits[\":\"] = true;\n splits[\".\"] = true;\n splits[\",\"] = true;\n splits[\"-\"] = true;\n splits[\"+\"] = true;\n splits[\"(\"] = true;\n splits[\")\"] = true;\n splits[\"[\"] = true;\n splits[\"]\"] = true;\n splits[\"\\t\"] = true;\n splits[\"\\n\"] = true;\n const bufs = {};\n bufs[\".\"] = true;\n bufs[\",\"] = true;\n bufs[\":\"] = true;\n bufs[\"(\"] = true;\n bufs[\")\"] = true;\n bufs[\"[\"] = true;\n bufs[\"]\"] = true;\n bufs[\"+\"] = true;\n bufs[\"@\"] = true;\n for (;;) {\n const current = this.stream.currentChar();\n const buf = this.buffer.add(current);\n const ahead = this.stream.nextChar();\n const aahead = this.stream.nextNextChar();\n if (this.m === this.ModeNormal) {\n if (splits[ahead]) {\n this.add();\n }\n else if (ahead === \"'\") {\n // start string\n this.add();\n this.m = this.ModeStr;\n }\n else if (ahead === \"|\" || ahead === \"}\") {\n // start template\n this.add();\n this.m = this.ModeTemplate;\n }\n else if (ahead === \"`\") {\n // start ping\n this.add();\n this.m = this.ModePing;\n }\n else if (aahead === \"##\") {\n // start pragma\n this.add();\n this.m = this.ModePragma;\n }\n else if (ahead === \"\\\"\"\n || (ahead === \"*\" && current === \"\\n\")) {\n // start comment\n this.add();\n this.m = this.ModeComment;\n }\n else if (ahead === \"@\" && buf.trim().length === 0) {\n this.add();\n }\n else if (aahead === \"->\"\n || aahead === \"=>\") {\n this.add();\n }\n else if (current === \">\"\n && ahead !== \" \"\n && (this.stream.prevChar() === \"-\" || this.stream.prevChar() === \"=\")) {\n // arrows\n this.add();\n }\n else if (buf.length === 1\n && (bufs[buf]\n || (buf === \"-\" && ahead !== \">\"))) {\n this.add();\n }\n }\n else if (this.m === this.ModePragma && (ahead === \",\" || ahead === \":\" || ahead === \".\" || ahead === \" \" || ahead === \"\\n\")) {\n // end of pragma\n this.add();\n this.m = this.ModeNormal;\n }\n else if (this.m === this.ModePing\n && buf.length > 1\n && current === \"`\"\n && aahead !== \"``\"\n && ahead !== \"`\"\n && this.buffer.countIsEven(\"`\")) {\n // end of ping\n this.add();\n if (ahead === `\"`) {\n this.m = this.ModeComment;\n }\n else {\n this.m = this.ModeNormal;\n }\n }\n else if (this.m === this.ModeTemplate\n && buf.length > 1\n && (current === \"|\" || current === \"{\")\n && (this.stream.prevChar() !== \"\\\\\" || this.stream.prevPrevChar() === \"\\\\\\\\\")) {\n // end of template\n this.add();\n this.m = this.ModeNormal;\n }\n else if (this.m === this.ModeStr\n && current === \"'\"\n && buf.length > 1\n && aahead !== \"''\"\n && ahead !== \"'\"\n && this.buffer.countIsEven(\"'\")) {\n // end of string\n this.add();\n if (ahead === \"\\\"\") {\n this.m = this.ModeComment;\n }\n else {\n this.m = this.ModeNormal;\n }\n }\n else if (ahead === \"\\n\" && this.m !== this.ModeTemplate) {\n this.add();\n this.m = this.ModeNormal;\n }\n else if (this.m === this.ModeTemplate && current === \"\\n\") {\n this.add();\n }\n if (!this.stream.advance()) {\n break;\n }\n }\n this.add();\n }\n}\nexports.Lexer = Lexer;\n//# sourceMappingURL=lexer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/lexer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Token = void 0;\nconst position_1 = __webpack_require__(/*! ../../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass Token {\n constructor(start, str) {\n this.start = start;\n this.str = str;\n }\n getStr() {\n return this.str;\n }\n getRow() {\n return this.start.getRow();\n }\n getCol() {\n return this.start.getCol();\n }\n getStart() {\n return this.start;\n }\n getEnd() {\n return new position_1.Position(this.start.getRow(), this.start.getCol() + this.str.length);\n }\n}\nexports.Token = Token;\n//# sourceMappingURL=_token.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/at.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/at.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WAtW = exports.AtW = exports.WAt = exports.At = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass At extends _token_1.Token {\n static railroad() {\n return \"@\";\n }\n}\nexports.At = At;\nclass WAt extends _token_1.Token {\n static railroad() {\n return \" @\";\n }\n}\nexports.WAt = WAt;\nclass AtW extends _token_1.Token {\n static railroad() {\n return \"@ \";\n }\n}\nexports.AtW = AtW;\nclass WAtW extends _token_1.Token {\n static railroad() {\n return \" @ \";\n }\n}\nexports.WAtW = WAtW;\n//# sourceMappingURL=at.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/at.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_left.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_left.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WBracketLeftW = exports.BracketLeftW = exports.WBracketLeft = exports.BracketLeft = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass BracketLeft extends _token_1.Token {\n static railroad() {\n return \"[\";\n }\n}\nexports.BracketLeft = BracketLeft;\nclass WBracketLeft extends _token_1.Token {\n static railroad() {\n return \" [\";\n }\n}\nexports.WBracketLeft = WBracketLeft;\nclass BracketLeftW extends _token_1.Token {\n static railroad() {\n return \"[ \";\n }\n}\nexports.BracketLeftW = BracketLeftW;\nclass WBracketLeftW extends _token_1.Token {\n static railroad() {\n return \" [ \";\n }\n}\nexports.WBracketLeftW = WBracketLeftW;\n//# sourceMappingURL=bracket_left.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_left.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_right.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_right.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WBracketRightW = exports.BracketRightW = exports.WBracketRight = exports.BracketRight = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass BracketRight extends _token_1.Token {\n static railroad() {\n return \"]\";\n }\n}\nexports.BracketRight = BracketRight;\nclass WBracketRight extends _token_1.Token {\n static railroad() {\n return \" ]\";\n }\n}\nexports.WBracketRight = WBracketRight;\nclass BracketRightW extends _token_1.Token {\n static railroad() {\n return \"] \";\n }\n}\nexports.BracketRightW = BracketRightW;\nclass WBracketRightW extends _token_1.Token {\n static railroad() {\n return \" ] \";\n }\n}\nexports.WBracketRightW = WBracketRightW;\n//# sourceMappingURL=bracket_right.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_right.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/colon.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/colon.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Colon = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass Colon extends _token_1.Token {\n}\nexports.Colon = Colon;\n//# sourceMappingURL=colon.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/colon.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/comment.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/comment.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Comment = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass Comment extends _token_1.Token {\n}\nexports.Comment = Comment;\n//# sourceMappingURL=comment.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/comment.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/dash.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/dash.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WDashW = exports.DashW = exports.WDash = exports.Dash = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass Dash extends _token_1.Token {\n static railroad() {\n return \"-\";\n }\n}\nexports.Dash = Dash;\nclass WDash extends _token_1.Token {\n static railroad() {\n return \" -\";\n }\n}\nexports.WDash = WDash;\nclass DashW extends _token_1.Token {\n static railroad() {\n return \"- \";\n }\n}\nexports.DashW = DashW;\nclass WDashW extends _token_1.Token {\n static railroad() {\n return \" - \";\n }\n}\nexports.WDashW = WDashW;\n//# sourceMappingURL=dash.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/dash.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Identifier = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass Identifier extends _token_1.Token {\n}\nexports.Identifier = Identifier;\n//# sourceMappingURL=identifier.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js ***! + \****************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./at */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/at.js\"), exports);\n__exportStar(__webpack_require__(/*! ./bracket_left */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_left.js\"), exports);\n__exportStar(__webpack_require__(/*! ./bracket_right */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/bracket_right.js\"), exports);\n__exportStar(__webpack_require__(/*! ./colon */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/colon.js\"), exports);\n__exportStar(__webpack_require__(/*! ./comment */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/comment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./dash */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/dash.js\"), exports);\n__exportStar(__webpack_require__(/*! ./identifier */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js\"), exports);\n__exportStar(__webpack_require__(/*! ./instance_arrow */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/instance_arrow.js\"), exports);\n__exportStar(__webpack_require__(/*! ./paren_left */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_left.js\"), exports);\n__exportStar(__webpack_require__(/*! ./paren_right */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_right.js\"), exports);\n__exportStar(__webpack_require__(/*! ./plus */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/plus.js\"), exports);\n__exportStar(__webpack_require__(/*! ./pragma */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/pragma.js\"), exports);\n__exportStar(__webpack_require__(/*! ./punctuation */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/punctuation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./static_arrow */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/static_arrow.js\"), exports);\n__exportStar(__webpack_require__(/*! ./string */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/string.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/instance_arrow.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/instance_arrow.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WInstanceArrowW = exports.InstanceArrowW = exports.WInstanceArrow = exports.InstanceArrow = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass InstanceArrow extends _token_1.Token {\n static railroad() {\n return \"->\";\n }\n}\nexports.InstanceArrow = InstanceArrow;\nclass WInstanceArrow extends _token_1.Token {\n static railroad() {\n return \" ->\";\n }\n}\nexports.WInstanceArrow = WInstanceArrow;\nclass InstanceArrowW extends _token_1.Token {\n static railroad() {\n return \"-> \";\n }\n}\nexports.InstanceArrowW = InstanceArrowW;\nclass WInstanceArrowW extends _token_1.Token {\n static railroad() {\n return \" -> \";\n }\n}\nexports.WInstanceArrowW = WInstanceArrowW;\n//# sourceMappingURL=instance_arrow.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/instance_arrow.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_left.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_left.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WParenLeftW = exports.ParenLeftW = exports.WParenLeft = exports.ParenLeft = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass ParenLeft extends _token_1.Token {\n static railroad() {\n return \"(\";\n }\n}\nexports.ParenLeft = ParenLeft;\nclass WParenLeft extends _token_1.Token {\n static railroad() {\n return \" (\";\n }\n}\nexports.WParenLeft = WParenLeft;\nclass ParenLeftW extends _token_1.Token {\n static railroad() {\n return \"( \";\n }\n}\nexports.ParenLeftW = ParenLeftW;\nclass WParenLeftW extends _token_1.Token {\n static railroad() {\n return \" ( \";\n }\n}\nexports.WParenLeftW = WParenLeftW;\n//# sourceMappingURL=paren_left.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_left.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_right.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_right.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WParenRightW = exports.ParenRightW = exports.WParenRight = exports.ParenRight = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass ParenRight extends _token_1.Token {\n static railroad() {\n return \")\";\n }\n}\nexports.ParenRight = ParenRight;\nclass WParenRight extends _token_1.Token {\n static railroad() {\n return \" )\";\n }\n}\nexports.WParenRight = WParenRight;\nclass ParenRightW extends _token_1.Token {\n static railroad() {\n return \") \";\n }\n}\nexports.ParenRightW = ParenRightW;\nclass WParenRightW extends _token_1.Token {\n static railroad() {\n return \" ) \";\n }\n}\nexports.WParenRightW = WParenRightW;\n//# sourceMappingURL=paren_right.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_right.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/plus.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/plus.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WPlusW = exports.PlusW = exports.WPlus = exports.Plus = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass Plus extends _token_1.Token {\n static railroad() {\n return \"+\";\n }\n}\nexports.Plus = Plus;\nclass WPlus extends _token_1.Token {\n static railroad() {\n return \" +\";\n }\n}\nexports.WPlus = WPlus;\nclass PlusW extends _token_1.Token {\n static railroad() {\n return \"+ \";\n }\n}\nexports.PlusW = PlusW;\nclass WPlusW extends _token_1.Token {\n static railroad() {\n return \" + \";\n }\n}\nexports.WPlusW = WPlusW;\n//# sourceMappingURL=plus.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/plus.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/pragma.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/pragma.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Pragma = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass Pragma extends _token_1.Token {\n}\nexports.Pragma = Pragma;\n//# sourceMappingURL=pragma.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/pragma.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/punctuation.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/punctuation.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Punctuation = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass Punctuation extends _token_1.Token {\n}\nexports.Punctuation = Punctuation;\n//# sourceMappingURL=punctuation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/punctuation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/static_arrow.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/static_arrow.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WStaticArrowW = exports.StaticArrowW = exports.WStaticArrow = exports.StaticArrow = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass StaticArrow extends _token_1.Token {\n static railroad() {\n return \"=>\";\n }\n}\nexports.StaticArrow = StaticArrow;\nclass WStaticArrow extends _token_1.Token {\n static railroad() {\n return \" =>\";\n }\n}\nexports.WStaticArrow = WStaticArrow;\nclass StaticArrowW extends _token_1.Token {\n static railroad() {\n return \"=> \";\n }\n}\nexports.StaticArrowW = StaticArrowW;\nclass WStaticArrowW extends _token_1.Token {\n static railroad() {\n return \" => \";\n }\n}\nexports.WStaticArrowW = WStaticArrowW;\n//# sourceMappingURL=static_arrow.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/static_arrow.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/string.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/string.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StringTemplateMiddle = exports.StringTemplateEnd = exports.StringTemplateBegin = exports.StringTemplate = exports.StringToken = void 0;\nconst _token_1 = __webpack_require__(/*! ./_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nclass StringToken extends _token_1.Token {\n}\nexports.StringToken = StringToken;\nclass StringTemplate extends _token_1.Token {\n}\nexports.StringTemplate = StringTemplate;\nclass StringTemplateBegin extends _token_1.Token {\n}\nexports.StringTemplateBegin = StringTemplateBegin;\nclass StringTemplateEnd extends _token_1.Token {\n}\nexports.StringTemplateEnd = StringTemplateEnd;\nclass StringTemplateMiddle extends _token_1.Token {\n}\nexports.StringTemplateMiddle = StringTemplateMiddle;\n//# sourceMappingURL=string.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/string.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.failStar = exports.failCombinator = exports.verNot = exports.ver = exports.plusPrio = exports.plus = exports.starPrio = exports.star = exports.per = exports.optPrio = exports.opt = exports.altPrio = exports.alt = exports.seq = exports.tok = exports.regex = exports.str = exports.Combi = exports.Expression = void 0;\nconst Tokens = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst version_1 = __webpack_require__(/*! ../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst result_1 = __webpack_require__(/*! ./result */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/result.js\");\nclass Regex {\n constructor(r) {\n this.regexp = r;\n }\n listKeywords() {\n return [];\n }\n getUsing() {\n return [];\n }\n run(r) {\n const result = [];\n for (const input of r) {\n if (input.remainingLength() === 0) {\n continue;\n }\n const token = input.peek();\n if (this.regexp.test(token.getStr()) === true) {\n result.push(input.shift(new nodes_1.TokenNodeRegex(token)));\n }\n }\n return result;\n }\n railroad() {\n return \"Railroad.Terminal(\\\"\" + this.regexp.source.replace(/\\\\/g, \"\\\\\\\\\") + \"\\\")\";\n }\n toStr() {\n return this.regexp.toString();\n }\n first() {\n return [\"\"];\n }\n}\nclass Word {\n constructor(s) {\n this.s = s.toUpperCase();\n }\n listKeywords() {\n return [this.s];\n }\n getUsing() {\n return [];\n }\n run(r) {\n const result = [];\n for (const input of r) {\n if (input.remainingLength() !== 0\n && input.peek().getStr().toUpperCase() === this.s) {\n // console.log(\"match, \" + this.s + result.length);\n result.push(input.shift(new nodes_1.TokenNode(input.peek())));\n }\n }\n return result;\n }\n railroad() {\n return \"Railroad.Terminal('\\\"\" + this.s + \"\\\"')\";\n }\n toStr() {\n return \"\\\"\" + this.s + \"\\\"\";\n }\n first() {\n return [this.s];\n }\n}\nclass Token {\n constructor(s) {\n this.name = s.toUpperCase();\n }\n listKeywords() {\n return [];\n }\n getUsing() {\n return [];\n }\n run(r) {\n const result = [];\n for (const input of r) {\n if (input.remainingLength() !== 0\n && input.peek().constructor.name.toUpperCase() === this.name) {\n result.push(input.shift(new nodes_1.TokenNode(input.peek())));\n }\n }\n return result;\n }\n railroad() {\n let text = this.name;\n const toke = Tokens;\n for (const token in Tokens) {\n if (token.toUpperCase() === this.name && toke[token].railroad) {\n text = toke[token].railroad();\n break;\n }\n }\n return \"Railroad.Terminal('!\\\"\" + text + \"\\\"')\";\n }\n toStr() {\n return \"Token \\\"\" + this.name + \"\\\"\";\n }\n first() {\n return [\"\"];\n }\n}\nclass Vers {\n constructor(version, runnable, or) {\n this.version = version;\n this.runnable = runnable;\n this.or = or;\n }\n listKeywords() {\n return this.runnable.listKeywords();\n }\n run(r) {\n const targetVersion = Combi.getVersion();\n if (this.or && targetVersion === this.or) {\n return this.runnable.run(r);\n }\n else if (targetVersion === version_1.Version.OpenABAP) {\n if (this.version > version_1.Version.v702) {\n return [];\n }\n else {\n return this.runnable.run(r);\n }\n }\n else if (targetVersion >= this.version || targetVersion === version_1.Version.Cloud) {\n return this.runnable.run(r);\n }\n else {\n return [];\n }\n }\n getUsing() {\n return this.runnable.getUsing();\n }\n railroad() {\n let text = this.version;\n if (this.or) {\n text += \" or \" + this.or;\n }\n return \"Railroad.Sequence(Railroad.Comment(\\\"\" +\n text +\n \"\\\", {}), \" +\n this.runnable.railroad() +\n \")\";\n }\n toStr() {\n return \"Version(\" + this.runnable.toStr() + \")\";\n }\n first() {\n return this.runnable.first();\n }\n}\nclass VersNot {\n constructor(version, runnable) {\n this.version = version;\n this.runnable = runnable;\n }\n listKeywords() {\n return this.runnable.listKeywords();\n }\n getUsing() {\n return this.runnable.getUsing();\n }\n run(r) {\n if (Combi.getVersion() !== this.version) {\n return this.runnable.run(r);\n }\n else {\n return [];\n }\n }\n railroad() {\n return \"Railroad.Sequence(Railroad.Comment(\\\"not \" +\n this.version +\n \"\\\", {}), \" +\n this.runnable.railroad() +\n \")\";\n }\n toStr() {\n return \"VersionNot(\" + this.runnable.toStr() + \")\";\n }\n first() {\n return this.runnable.first();\n }\n}\nclass OptionalPriority {\n constructor(optional) {\n this.optional = optional;\n }\n listKeywords() {\n return this.optional.listKeywords();\n }\n getUsing() {\n return this.optional.getUsing();\n }\n run(r) {\n const result = [];\n for (const input of r) {\n const res = this.optional.run([input]);\n if (res.length > 1) {\n result.push(...res);\n }\n else if (res.length === 0) {\n result.push(input);\n }\n else if (res[0].remainingLength() < input.remainingLength()) {\n result.push(...res);\n }\n else {\n result.push(input);\n }\n }\n return result;\n }\n railroad() {\n return \"Railroad.Optional(\" + this.optional.railroad() + \")\";\n }\n toStr() {\n return \"opt(\" + this.optional.toStr() + \")\";\n }\n first() {\n return [\"\"];\n }\n}\nclass Optional {\n constructor(optional) {\n this.optional = optional;\n }\n listKeywords() {\n return this.optional.listKeywords();\n }\n getUsing() {\n return this.optional.getUsing();\n }\n run(r) {\n const result = [];\n for (const input of r) {\n result.push(input);\n const res = this.optional.run([input]);\n result.push(...res);\n }\n return result;\n }\n railroad() {\n return \"Railroad.Optional(\" + this.optional.railroad() + \")\";\n }\n toStr() {\n return \"opt(\" + this.optional.toStr() + \")\";\n }\n first() {\n return [\"\"];\n }\n}\nclass Star {\n constructor(sta) {\n this.sta = sta;\n }\n listKeywords() {\n return this.sta.listKeywords();\n }\n getUsing() {\n return this.sta.getUsing();\n }\n run(r) {\n const result = r;\n try {\n let res = r;\n let input = [];\n for (;;) {\n input = res;\n res = this.sta.run(input);\n if (res.length === 0) {\n break;\n }\n result.push(...res);\n }\n }\n catch (err) {\n if (err instanceof FailStarError) {\n return result;\n }\n throw err;\n }\n // console.dir(result);\n return result;\n }\n railroad() {\n return \"Railroad.ZeroOrMore(\" + this.sta.railroad() + \")\";\n }\n toStr() {\n return \"star(\" + this.sta.toStr() + \")\";\n }\n first() {\n return [\"\"];\n }\n}\nclass StarPriority {\n constructor(sta) {\n this.sta = sta;\n }\n listKeywords() {\n return this.sta.listKeywords();\n }\n getUsing() {\n return this.sta.getUsing();\n }\n run(r) {\n let result = r;\n let res = r;\n // let input: Result[] = [];\n let prev;\n for (;;) {\n // input = res;\n res = this.sta.run(res);\n if (res.length === 0) {\n if (prev !== undefined) {\n // console.log(\"star length: \" + prev.length);\n let best = Number.MAX_SAFE_INTEGER;\n for (const p of prev) {\n if (p.remainingLength() < best) {\n result = [p];\n best = p.remainingLength();\n }\n }\n }\n break;\n }\n prev = res;\n }\n return result;\n }\n railroad() {\n return \"Railroad.ZeroOrMore(\" + this.sta.railroad() + \")\";\n }\n toStr() {\n return \"star(\" + this.sta.toStr() + \")\";\n }\n first() {\n return [\"\"];\n }\n}\nclass Plus {\n constructor(plu) {\n this.plu = plu;\n this.sub = new Sequence([this.plu, new Star(this.plu)]);\n }\n listKeywords() {\n return this.plu.listKeywords();\n }\n getUsing() {\n return this.plu.getUsing();\n }\n run(r) {\n return this.sub.run(r);\n }\n railroad() {\n return \"Railroad.OneOrMore(\" + this.plu.railroad() + \")\";\n }\n toStr() {\n return \"plus(\" + this.plu.toStr() + \")\";\n }\n first() {\n return this.plu.first();\n }\n}\nclass PlusPriority {\n constructor(plu) {\n this.plu = plu;\n this.sub = new Sequence([this.plu, new StarPriority(this.plu)]);\n }\n listKeywords() {\n return this.plu.listKeywords();\n }\n getUsing() {\n return this.plu.getUsing();\n }\n run(r) {\n return this.sub.run(r);\n }\n railroad() {\n return \"Railroad.OneOrMore(\" + this.plu.railroad() + \")\";\n }\n toStr() {\n return \"plus(\" + this.plu.toStr() + \")\";\n }\n first() {\n return this.plu.first();\n }\n}\nclass Sequence {\n constructor(list) {\n if (list.length < 2) {\n throw new Error(\"Sequence, length error\");\n }\n this.list = list;\n }\n listKeywords() {\n const ret = [];\n for (const i of this.list) {\n ret.push(...i.listKeywords());\n }\n return ret;\n }\n getUsing() {\n return this.list.reduce((a, c) => { return a.concat(c.getUsing()); }, []);\n }\n run(r) {\n const result = [];\n for (const input of r) {\n let temp = [input];\n let match = true;\n for (const sequence of this.list) {\n temp = sequence.run(temp);\n if (temp.length === 0) {\n match = false;\n break;\n }\n }\n if (match === true) {\n result.push(...temp);\n }\n }\n return result;\n }\n railroad() {\n const children = this.list.map((e) => { return e.railroad(); });\n return \"Railroad.Sequence(\" + children.join() + \")\";\n }\n toStr() {\n let ret = \"\";\n for (const i of this.list) {\n ret = ret + i.toStr() + \",\";\n }\n return \"seq(\" + ret + \")\";\n }\n first() {\n return this.list[0].first();\n }\n}\nclass WordSequence {\n constructor(stri) {\n this.words = [];\n this.stri = stri;\n const foo = this.stri.replace(/-/g, \" - \");\n const split = foo.split(\" \");\n for (const st of split) {\n // todo, use Dash token\n this.words.push(new Word(st));\n }\n this.seq = new Sequence(this.words);\n }\n listKeywords() {\n return [this.stri.toString()];\n }\n getUsing() {\n return [];\n }\n run(r) {\n return this.seq.run(r);\n }\n railroad() {\n return \"Railroad.Terminal('\\\"\" + this.stri + \"\\\"')\";\n }\n toStr() {\n return \"str(\" + this.stri + \")\";\n }\n first() {\n return this.words[0].first();\n }\n}\nclass Expression {\n constructor() {\n this.runnable = undefined;\n }\n run(r) {\n const results = [];\n if (this.runnable === undefined) {\n this.runnable = this.getRunnable();\n }\n for (const input of r) {\n const temp = this.runnable.run([input]);\n for (const t of temp) {\n let consumed = input.remainingLength() - t.remainingLength();\n if (consumed > 0) {\n const originalLength = t.getNodes().length;\n const children = [];\n while (consumed > 0) {\n const sub = t.popNode();\n if (sub) {\n children.push(sub);\n consumed = consumed - sub.countTokens();\n }\n }\n const re = new nodes_1.ExpressionNode(this);\n re.setChildren(children.reverse());\n const n = t.getNodes().slice(0, originalLength - consumed);\n n.push(re);\n t.setNodes(n);\n }\n results.push(t);\n }\n }\n // console.dir(results);\n return results;\n }\n listKeywords() {\n // do not recurse, all Expressions are evaluated only on first level\n return [];\n }\n getUsing() {\n return [\"expression/\" + this.getName()];\n }\n getName() {\n return this.constructor.name;\n }\n railroad() {\n return \"Railroad.NonTerminal('\" + this.getName() + \"', {href: '#/expression/\" + this.getName() + \"'})\";\n }\n toStr() {\n return \"expression(\" + this.getName() + \")\";\n }\n first() {\n return this.getRunnable().first();\n }\n}\nexports.Expression = Expression;\nclass Permutation {\n constructor(list) {\n if (list.length < 2) {\n throw new Error(\"Permutation, length error, got \" + list.length);\n }\n this.list = list;\n }\n listKeywords() {\n const ret = [];\n for (const i of this.list) {\n ret.push(...i.listKeywords());\n }\n return ret;\n }\n getUsing() {\n return this.list.reduce((a, c) => { return a.concat(c.getUsing()); }, []);\n }\n run(r) {\n const result = [];\n const copy = this.list.slice();\n for (let index = 0; index < this.list.length; index++) {\n const temp = this.list[index].run(r);\n if (temp.length !== 0) {\n // match\n result.push(...temp);\n const left = copy;\n left.splice(index, 1);\n if (left.length === 1) {\n result.push(...left[0].run(temp));\n }\n else {\n result.push(...new Permutation(left).run(temp));\n }\n }\n }\n return result;\n }\n railroad() {\n const children = this.list.map((e) => { return e.railroad(); });\n return \"Railroad.MultipleChoice(0, 'any',\" + children.join() + \")\";\n }\n toStr() {\n const children = this.list.map((e) => { return e.toStr(); });\n return \"per(\" + children.join() + \")\";\n }\n first() {\n return [\"\"];\n }\n}\nclass FailCombinatorError extends Error {\n}\nclass FailStarError extends Error {\n}\nclass FailCombinator {\n listKeywords() {\n return [];\n }\n getUsing() {\n return [];\n }\n run(_r) {\n throw new FailCombinatorError();\n }\n railroad() {\n return \"Railroad.Terminal('!FailCombinator')\";\n }\n toStr() {\n return \"fail()\";\n }\n first() {\n return [];\n }\n}\n// Note that Plus is implemented with Star\nclass FailStar {\n listKeywords() {\n return [];\n }\n getUsing() {\n return [];\n }\n run(_r) {\n throw new FailStarError();\n }\n railroad() {\n return \"Railroad.Terminal('!FailStar')\";\n }\n toStr() {\n return \"fail()\";\n }\n first() {\n return [];\n }\n}\nclass Alternative {\n constructor(list) {\n if (list.length < 2) {\n throw new Error(\"Alternative, length error\");\n }\n this.list = list;\n }\n listKeywords() {\n const ret = [];\n for (const i of this.list) {\n ret.push(...i.listKeywords());\n }\n return ret;\n }\n getUsing() {\n return this.list.reduce((a, c) => { return a.concat(c.getUsing()); }, []);\n }\n run(r) {\n const result = [];\n for (const sequ of this.list) {\n const temp = sequ.run(r);\n result.push(...temp);\n }\n return result;\n }\n railroad() {\n const children = this.list.map((e) => { return e.railroad(); });\n return \"Railroad.Choice(0, \" + children.join() + \")\";\n }\n toStr() {\n let ret = \"\";\n for (const i of this.list) {\n ret = ret + i.toStr() + \",\";\n }\n return \"alt(\" + ret + \")\";\n }\n first() {\n if (this.list.length !== 2) {\n return [\"\"];\n }\n const f1 = this.list[0].first();\n const f2 = this.list[1].first();\n if (f1.length === 1 && f1[0] === \"\") {\n return f1;\n }\n if (f2.length === 1 && f2[0] === \"\") {\n return f2;\n }\n if (f1.length === 1 && f2.length === 1 && f1[0] === f2[0]) {\n return f1;\n }\n f1.push(...f2);\n return f1;\n }\n}\n// prioritized alternative, skip others if match found\nclass AlternativePriority {\n constructor(list) {\n if (list.length < 2) {\n throw new Error(\"Alternative, length error\");\n }\n this.list = list;\n }\n listKeywords() {\n const ret = [];\n for (const i of this.list) {\n ret.push(...i.listKeywords());\n }\n return ret;\n }\n getUsing() {\n return this.list.reduce((a, c) => { return a.concat(c.getUsing()); }, []);\n }\n run(r) {\n const result = [];\n for (const sequ of this.list) {\n // console.log(seq.toStr());\n const temp = sequ.run(r);\n if (temp.length > 0) {\n result.push(...temp);\n break;\n }\n }\n return result;\n }\n railroad() {\n const children = this.list.map((e) => { return e.railroad(); });\n return \"Railroad.Choice(0, \" + children.join() + \")\";\n }\n toStr() {\n let ret = \"\";\n for (const i of this.list) {\n ret = ret + i.toStr() + \",\";\n }\n return \"alt(\" + ret + \")\";\n }\n first() {\n if (this.list.length !== 2) {\n return [\"\"];\n }\n const f1 = this.list[0].first();\n const f2 = this.list[1].first();\n if (f1.length === 1 && f1[0] === \"\") {\n return f1;\n }\n if (f2.length === 1 && f2[0] === \"\") {\n return f2;\n }\n if (f1.length === 1 && f2.length === 1 && f1[0] === f2[0]) {\n return f1;\n }\n f1.push(...f2);\n return f1;\n }\n}\nclass Combi {\n static railroad(runnable, complex = false) {\n // todo, move method to graph.js?\n let type = \"Railroad.Diagram(\";\n if (complex === true) {\n type = \"Railroad.ComplexDiagram(\";\n }\n const result = \"Railroad.Diagram.INTERNAL_ALIGNMENT = 'left';\\n\" +\n type +\n runnable.railroad() +\n \").toString();\";\n return result;\n }\n static listKeywords(runnable) {\n // todo, move these walkers of the syntax tree to some abstraction?\n let res = runnable.listKeywords();\n // remove duplicates\n res = res.filter((x, i, a) => { return a.indexOf(x) === i; });\n return res;\n }\n // assumption: no pragmas supplied in tokens input\n static run(runnable, tokens, version) {\n this.ver = version;\n const input = new result_1.Result(tokens, 0);\n try {\n const result = runnable.run([input]);\n /*\n console.log(\"res: \" + result.length);\n for (const res of result) {\n console.dir(res.getNodes().map(n => n.get().constructor.name));\n console.dir(res.getNodes().map(n => n.concatTokens()));\n }\n */\n for (const res of result) {\n if (res.remainingLength() === 0) {\n return res.getNodes();\n }\n }\n }\n catch (err) {\n if (err instanceof FailCombinatorError) {\n return undefined;\n }\n throw err;\n }\n return undefined;\n }\n static getVersion() {\n return this.ver;\n }\n}\nexports.Combi = Combi;\n// -----------------------------------------------------------------------------\nfunction str(s) {\n if (s.indexOf(\" \") > 0 || s.indexOf(\"-\") > 0) {\n return new WordSequence(s);\n }\n else {\n return new Word(s);\n }\n}\nexports.str = str;\nfunction regex(r) {\n return new Regex(r);\n}\nexports.regex = regex;\nfunction tok(t) {\n return new Token(t.name);\n}\nexports.tok = tok;\nconst expressionSingletons = {};\nconst stringSingletons = {};\nfunction map(s) {\n const type = typeof s;\n if (type === \"string\") {\n if (stringSingletons[s] === undefined) {\n stringSingletons[s] = str(s);\n }\n return stringSingletons[s];\n }\n else if (type === \"function\") {\n // @ts-ignore\n const name = s.name;\n if (expressionSingletons[name] === undefined) {\n // @ts-ignore\n expressionSingletons[name] = new s();\n }\n return expressionSingletons[name];\n }\n else {\n return s;\n }\n}\nfunction seq(first, second, ...rest) {\n const list = [map(first), map(second)];\n list.push(...rest.map(map));\n return new Sequence(list);\n}\nexports.seq = seq;\nfunction alt(first, second, ...rest) {\n const list = [map(first), map(second)];\n list.push(...rest.map(map));\n return new Alternative(list);\n}\nexports.alt = alt;\nfunction altPrio(first, second, ...rest) {\n const list = [map(first), map(second)];\n list.push(...rest.map(map));\n return new AlternativePriority(list);\n}\nexports.altPrio = altPrio;\nfunction opt(first) {\n return new Optional(map(first));\n}\nexports.opt = opt;\nfunction optPrio(first) {\n return new OptionalPriority(map(first));\n}\nexports.optPrio = optPrio;\nfunction per(first, second, ...rest) {\n const list = [map(first), map(second)];\n list.push(...rest.map(map));\n return new Permutation(list);\n}\nexports.per = per;\nfunction star(first) {\n return new Star(map(first));\n}\nexports.star = star;\nfunction starPrio(first) {\n return new StarPriority(map(first));\n}\nexports.starPrio = starPrio;\nfunction plus(first) {\n return new Plus(map(first));\n}\nexports.plus = plus;\nfunction plusPrio(first) {\n return new PlusPriority(map(first));\n}\nexports.plusPrio = plusPrio;\nfunction ver(version, first, or) {\n return new Vers(version, map(first), or);\n}\nexports.ver = ver;\nfunction verNot(version, first) {\n return new VersNot(version, map(first));\n}\nexports.verNot = verNot;\nfunction failCombinator() {\n return new FailCombinator();\n}\nexports.failCombinator = failCombinator;\nfunction failStar() {\n return new FailStar();\n}\nexports.failStar = failStar;\n//# sourceMappingURL=combi.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expand_macros.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expand_macros.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExpandMacros = void 0;\nconst Statements = __webpack_require__(/*! ./statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ./expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Tokens = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _statement_1 = __webpack_require__(/*! ./statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst statement_node_1 = __webpack_require__(/*! ../nodes/statement_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js\");\nconst token_node_1 = __webpack_require__(/*! ../nodes/token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\");\nconst statement_parser_1 = __webpack_require__(/*! ./statement_parser */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statement_parser.js\");\nconst memory_file_1 = __webpack_require__(/*! ../../files/memory_file */ \"./node_modules/@abaplint/core/build/src/files/memory_file.js\");\nconst lexer_1 = __webpack_require__(/*! ../1_lexer/lexer */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/lexer.js\");\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass Macros {\n constructor(globalMacros) {\n this.macros = {};\n for (const m of globalMacros) {\n this.macros[m.toUpperCase()] = [];\n }\n }\n addMacro(name, contents) {\n if (this.isMacro(name)) {\n return;\n }\n this.macros[name.toUpperCase()] = contents;\n }\n getContents(name) {\n return this.macros[name.toUpperCase()];\n }\n listMacroNames() {\n return Object.keys(this.macros);\n }\n isMacro(name) {\n if (this.macros[name.toUpperCase()]) {\n return true;\n }\n return false;\n }\n}\nclass ExpandMacros {\n // \"reg\" must be supplied if there are cross object macros via INCLUDE\n constructor(globalMacros, version, reg) {\n this.macros = new Macros(globalMacros);\n this.version = version;\n this.globalMacros = globalMacros;\n this.reg = reg;\n }\n find(statements) {\n var _a, _b;\n let name = undefined;\n let contents = [];\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i];\n const type = statement.get();\n if (type instanceof Statements.Define) {\n // todo, will this break if first token is a pragma?\n name = statement.getTokens()[1].getStr();\n contents = [];\n }\n else if (type instanceof Statements.Include) {\n const includeName = (_a = statement.findDirectExpression(Expressions.IncludeName)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n // todo, this does not take function module includes into account\n const prog = (_b = this.reg) === null || _b === void 0 ? void 0 : _b.getObject(\"PROG\", includeName);\n if (prog) {\n prog.parse(this.version, this.globalMacros, this.reg);\n const main = prog.getMainABAPFile();\n if (main) {\n // slow, this copies everything,\n this.find([...main.getStatements()]);\n }\n }\n }\n else if (name) {\n if (type instanceof Statements.EndOfDefinition) {\n this.macros.addMacro(name, contents);\n name = undefined;\n }\n else if (!(type instanceof _statement_1.Comment)) {\n statements[i] = new statement_node_1.StatementNode(new _statement_1.MacroContent()).setChildren(this.tokensToNodes(statement.getTokens()));\n contents.push(statements[i]);\n }\n }\n }\n }\n handleMacros(statements) {\n const result = [];\n let containsUnknown = false;\n for (const statement of statements) {\n const type = statement.get();\n if (type instanceof _statement_1.Unknown || type instanceof _statement_1.MacroCall) {\n const macroName = this.findName(statement.getTokens());\n if (macroName && this.macros.isMacro(macroName)) {\n result.push(new statement_node_1.StatementNode(new _statement_1.MacroCall(), statement.getColon()).setChildren(this.tokensToNodes(statement.getTokens())));\n const expanded = this.expandContents(macroName, statement);\n const handled = this.handleMacros(expanded);\n for (const e of handled.statements) {\n result.push(e);\n }\n if (handled.containsUnknown === true) {\n containsUnknown = true;\n }\n continue;\n }\n else {\n containsUnknown = true;\n }\n }\n result.push(statement);\n }\n return { statements: result, containsUnknown };\n }\n //////////////\n expandContents(name, statement) {\n const contents = this.macros.getContents(name);\n if (contents === undefined || contents.length === 0) {\n return [];\n }\n let str = \"\";\n for (const c of contents) {\n let concat = c.concatTokens();\n if (c.getTerminator() === \",\") {\n // workaround for chained statements\n concat = concat.replace(/,$/, \".\");\n }\n str += concat + \"\\n\";\n }\n const inputs = this.buildInput(statement);\n let i = 1;\n for (const input of inputs) {\n const search = \"&\" + i;\n const reg = new RegExp(search, \"g\");\n str = str.replace(reg, input);\n i++;\n }\n const file = new memory_file_1.MemoryFile(\"expand_macros.abap.prog\", str);\n const lexerResult = new lexer_1.Lexer().run(file, statement.getFirstToken().getStart());\n const result = new statement_parser_1.StatementParser(this.version, this.reg).run([lexerResult], this.macros.listMacroNames());\n return result[0].statements;\n }\n buildInput(statement) {\n const result = [];\n const tokens = statement.getTokens();\n let build = \"\";\n for (let i = 1; i < tokens.length - 1; i++) {\n const now = tokens[i];\n let next = tokens[i + 1];\n if (i + 2 === tokens.length) {\n next = undefined; // dont take the punctuation\n }\n // argh, macros is a nightmare\n let end = now.getStart();\n if (end instanceof position_1.VirtualPosition) {\n end = new position_1.VirtualPosition(end, end.vrow, end.vcol + now.getStr().length);\n }\n else {\n end = now.getEnd();\n }\n if (next && next.getStart().equals(end)) {\n build += now.getStr();\n }\n else {\n build += now.getStr();\n result.push(build);\n build = \"\";\n }\n }\n return result;\n }\n findName(tokens) {\n let macroName = undefined;\n let previous = undefined;\n for (const i of tokens) {\n if (previous && (previous === null || previous === void 0 ? void 0 : previous.getEnd().getCol()) !== i.getStart().getCol()) {\n break;\n }\n else if (i instanceof Tokens.Identifier || i.getStr() === \"-\") {\n if (macroName === undefined) {\n macroName = i.getStr();\n }\n else {\n macroName += i.getStr();\n }\n }\n else if (i instanceof Tokens.Pragma) {\n continue;\n }\n else {\n break;\n }\n previous = i;\n }\n return macroName;\n }\n tokensToNodes(tokens) {\n const ret = [];\n for (const t of tokens) {\n ret.push(new token_node_1.TokenNode(t));\n }\n return ret;\n }\n}\nexports.ExpandMacros = ExpandMacros;\n//# sourceMappingURL=expand_macros.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expand_macros.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Abstract = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Abstract extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.str)(\"ABSTRACT\");\n }\n}\nexports.Abstract = Abstract;\n//# sourceMappingURL=abstract.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract_methods.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract_methods.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AbstractMethods = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst method_name_1 = __webpack_require__(/*! ./method_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_name.js\");\nclass AbstractMethods extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"ABSTRACT METHODS\", (0, combi_1.plusPrio)(method_name_1.MethodName));\n }\n}\nexports.AbstractMethods = AbstractMethods;\n//# sourceMappingURL=abstract_methods.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract_methods.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/and_return.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/and_return.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AndReturn = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass AndReturn extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.str)(\"AND RETURN\");\n }\n}\nexports.AndReturn = AndReturn;\n//# sourceMappingURL=and_return.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/and_return.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arith_operator.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arith_operator.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ArithOperator = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass ArithOperator extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WPlusW), (0, combi_1.tok)(tokens_1.WDashW), \"*\", \"**\", \"/\", \"BIT-XOR\", \"BIT-AND\", \"BIT-OR\", \"DIV\", \"MOD\");\n return ret;\n }\n}\nexports.ArithOperator = ArithOperator;\n//# sourceMappingURL=arith_operator.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arith_operator.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Arrow = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass Arrow extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));\n }\n}\nexports.Arrow = Arrow;\n//# sourceMappingURL=arrow.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow_or_dash.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow_or_dash.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ArrowOrDash = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass ArrowOrDash extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow), (0, combi_1.tok)(tokens_1.Dash));\n }\n}\nexports.ArrowOrDash = ArrowOrDash;\n//# sourceMappingURL=arrow_or_dash.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow_or_dash.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/assign_source.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/assign_source.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AssignSource = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nconst field_1 = __webpack_require__(/*! ./field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js\");\nclass AssignSource extends combi_1.Expression {\n getRunnable() {\n const component = (0, combi_1.seq)(\"COMPONENT\", source_1.Source, \"OF STRUCTURE\", source_1.Source);\n const tableField = (0, combi_1.seq)(\"TABLE FIELD\", (0, combi_1.alt)(source_1.Source, dynamic_1.Dynamic));\n const arrow = (0, combi_1.alt)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));\n const source = (0, combi_1.alt)((0, combi_1.seq)(source_1.Source, (0, combi_1.opt)((0, combi_1.seq)(arrow, dynamic_1.Dynamic))), component, tableField, (0, combi_1.seq)(dynamic_1.Dynamic, (0, combi_1.opt)((0, combi_1.seq)(arrow, (0, combi_1.alt)(field_1.Field, dynamic_1.Dynamic)))));\n return source;\n }\n}\nexports.AssignSource = AssignSource;\n//# sourceMappingURL=assign_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/assign_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/association_name.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/association_name.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AssociationName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass AssociationName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^\\\\_[\\w]+$/);\n }\n}\nexports.AssociationName = AssociationName;\n//# sourceMappingURL=association_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/association_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_chain.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_chain.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AttributeChain = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst table_body_1 = __webpack_require__(/*! ./table_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js\");\nclass AttributeChain extends combi_1.Expression {\n getRunnable() {\n const chain = (0, combi_1.seq)(_1.AttributeName, (0, combi_1.starPrio)((0, combi_1.altPrio)((0, combi_1.seq)(_1.ArrowOrDash, (0, combi_1.altPrio)(\"*\", _1.ComponentName)), _1.TableExpression)));\n const ret = (0, combi_1.seq)(chain, (0, combi_1.optPrio)(table_body_1.TableBody), (0, combi_1.optPrio)(_1.FieldOffset), (0, combi_1.optPrio)(_1.FieldLength));\n return ret;\n }\n}\nexports.AttributeChain = AttributeChain;\n//# sourceMappingURL=attribute_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AttributeName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass AttributeName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^(\\/\\w+\\/)?[\\w\\d_\\*\\~]+$/);\n }\n}\nexports.AttributeName = AttributeName;\n//# sourceMappingURL=attribute_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/block_name.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/block_name.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BlockName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass BlockName extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)((0, combi_1.regex)(/^[\\w%\\$\\*]+$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\\w%\\$\\*]+$/))));\n return ret;\n }\n}\nexports.BlockName = BlockName;\n//# sourceMappingURL=block_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/block_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_options.js": +/*!************************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_options.js ***! + \************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallTransformationOptions = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst field_1 = __webpack_require__(/*! ./field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js\");\nconst integer_1 = __webpack_require__(/*! ./integer */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nclass CallTransformationOptions extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.seq)((0, combi_1.alt)(field_1.Field, integer_1.Integer), \"=\", source_1.Source);\n return (0, combi_1.plus)(field);\n }\n}\nexports.CallTransformationOptions = CallTransformationOptions;\n//# sourceMappingURL=call_transformation_options.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_options.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_parameters.js": +/*!***************************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_parameters.js ***! + \***************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallTransformationParameters = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nconst field_1 = __webpack_require__(/*! ./field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js\");\nconst integer_1 = __webpack_require__(/*! ./integer */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js\");\nclass CallTransformationParameters extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.seq)((0, combi_1.alt)(field_1.Field, integer_1.Integer), \"=\", _1.SimpleSource3);\n return (0, combi_1.alt)((0, combi_1.plus)(field), dynamic_1.Dynamic);\n }\n}\nexports.CallTransformationParameters = CallTransformationParameters;\n//# sourceMappingURL=call_transformation_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cast.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cast.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Cast = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst let_1 = __webpack_require__(/*! ./let */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/let.js\");\nclass Cast extends combi_1.Expression {\n getRunnable() {\n const rparen = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.WParenRight));\n const cast = (0, combi_1.seq)(\"CAST\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), (0, combi_1.optPrio)(let_1.Let), _1.Source, rparen);\n return (0, combi_1.ver)(version_1.Version.v740sp02, cast);\n }\n}\nexports.Cast = Cast;\n//# sourceMappingURL=cast.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cast.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_final.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_final.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassFinal = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass ClassFinal extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.str)(\"FINAL\");\n }\n}\nexports.ClassFinal = ClassFinal;\n//# sourceMappingURL=class_final.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_final.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_friends.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_friends.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassFriends = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst class_name_1 = __webpack_require__(/*! ./class_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_name.js\");\nclass ClassFriends extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.optPrio)(\"GLOBAL\"), \"FRIENDS\", (0, combi_1.plus)(class_name_1.ClassName));\n }\n}\nexports.ClassFriends = ClassFriends;\n//# sourceMappingURL=class_friends.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_friends.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_global.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_global.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassGlobal = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass ClassGlobal extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.str)(\"PUBLIC\");\n }\n}\nexports.ClassGlobal = ClassGlobal;\n//# sourceMappingURL=class_global.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_global.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_name.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_name.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass ClassName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^\\w*(\\/\\w{3,}\\/)?\\w+$/);\n }\n}\nexports.ClassName = ClassName;\n//# sourceMappingURL=class_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/color.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/color.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Color = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nclass Color extends combi_1.Expression {\n getRunnable() {\n const eq = (0, combi_1.seq)(\"=\", source_1.Source);\n const integers = (0, combi_1.altPrio)(\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\");\n const texts = (0, combi_1.altPrio)(\"COL_BACKGROUND\", \"COL_HEADING\", \"COL_NORMAL\", \"COL_TOTAL\", \"COL_KEY\", \"COL_POSITIVE\", \"COL_NEGATIVE\", \"COL_GROUP\");\n const value = (0, combi_1.alt)(eq, (0, combi_1.altPrio)(\"ON\", \"OFF\", (0, combi_1.altPrio)(integers, texts)));\n const toggle = (0, combi_1.altPrio)(\"ON\", \"OFF\");\n return (0, combi_1.seq)(\"COLOR\", value, (0, combi_1.opt)(toggle));\n }\n}\nexports.Color = Color;\n//# sourceMappingURL=color.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/color.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Compare = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Compare extends combi_1.Expression {\n getRunnable() {\n const val = (0, combi_1.altPrio)(_1.FieldSub, _1.Constant);\n const list = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), val, (0, combi_1.plus)((0, combi_1.seq)(\",\", val)), (0, combi_1.tok)(tokens_1.ParenRightW));\n const inn = (0, combi_1.seq)((0, combi_1.optPrio)(\"NOT\"), \"IN\", (0, combi_1.altPrio)(_1.Source, list));\n const sopt = (0, combi_1.seq)(\"IS\", (0, combi_1.optPrio)(\"NOT\"), (0, combi_1.altPrio)(\"SUPPLIED\", \"BOUND\", (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"INSTANCE OF\", _1.ClassName), version_1.Version.OpenABAP), \"REQUESTED\", \"INITIAL\"));\n const between = (0, combi_1.seq)((0, combi_1.optPrio)(\"NOT\"), \"BETWEEN\", _1.Source, \"AND\", _1.Source);\n const predicate = (0, combi_1.ver)(version_1.Version.v740sp08, _1.MethodCallChain);\n const rett = (0, combi_1.seq)(_1.Source, (0, combi_1.altPrio)((0, combi_1.seq)(_1.CompareOperator, _1.Source), inn, between, sopt));\n const fsassign = (0, combi_1.seq)(_1.SourceFieldSymbol, \"IS\", (0, combi_1.optPrio)(\"NOT\"), \"ASSIGNED\");\n const ret = (0, combi_1.seq)((0, combi_1.opt)(\"NOT\"), (0, combi_1.altPrio)(rett, predicate, fsassign));\n return ret;\n }\n}\nexports.Compare = Compare;\n//# sourceMappingURL=compare.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare_operator.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare_operator.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CompareOperator = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CompareOperator extends combi_1.Expression {\n getRunnable() {\n const operator = (0, combi_1.altPrio)(\"=\", \"<>\", \"><\", \"<\", \">\", \"<=\", \">=\", \"=>\", \"=<\", \"CA\", \"CO\", \"CP\", \"EQ\", \"NE\", \"CN\", \"GE\", \"GT\", \"LT\", \"LE\", \"CS\", \"NS\", \"NA\", \"NP\", \"BYTE-CO\", \"BYTE-CA\", \"BYTE-CS\", \"BYTE-CN\", \"BYTE-NA\", \"BYTE-NS\", \"O\", // hex comparison operator\n \"Z\", // hex comparison operator\n \"M\");\n return operator;\n }\n}\nexports.CompareOperator = CompareOperator;\n//# sourceMappingURL=compare_operator.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare_operator.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentChain = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst table_body_1 = __webpack_require__(/*! ./table_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js\");\nclass ComponentChain extends combi_1.Expression {\n getRunnable() {\n const chain = (0, combi_1.seq)(_1.ComponentName, (0, combi_1.star)((0, combi_1.altPrio)((0, combi_1.seq)(_1.ArrowOrDash, (0, combi_1.altPrio)(\"*\", _1.ComponentName)), _1.TableExpression)));\n const ret = (0, combi_1.seq)(chain, (0, combi_1.optPrio)(table_body_1.TableBody), (0, combi_1.optPrio)(_1.FieldOffset), (0, combi_1.optPrio)(_1.FieldLength));\n return ret;\n }\n}\nexports.ComponentChain = ComponentChain;\n//# sourceMappingURL=component_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain_simple.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain_simple.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentChainSimple = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ComponentChainSimple extends combi_1.Expression {\n getRunnable() {\n const chain = (0, combi_1.seq)(_1.ComponentName, (0, combi_1.starPrio)((0, combi_1.seq)(_1.ArrowOrDash, _1.ComponentName)));\n const ret = (0, combi_1.seq)(chain, (0, combi_1.optPrio)(_1.FieldOffset), (0, combi_1.optPrio)(_1.FieldLength));\n return ret;\n }\n}\nexports.ComponentChainSimple = ComponentChainSimple;\n//# sourceMappingURL=component_chain_simple.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain_simple.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCompare = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ComponentCompare extends combi_1.Expression {\n getRunnable() {\n const val = (0, combi_1.alt)(_1.FieldSub, _1.Constant);\n const list = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), val, (0, combi_1.plus)((0, combi_1.seq)(\",\", val)), (0, combi_1.tok)(tokens_1.ParenRightW));\n const inn = (0, combi_1.seq)((0, combi_1.opt)(\"NOT\"), \"IN\", (0, combi_1.altPrio)(_1.Source, list));\n const sopt = (0, combi_1.seq)(\"IS\", (0, combi_1.opt)(\"NOT\"), (0, combi_1.altPrio)(\"SUPPLIED\", \"BOUND\", (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"INSTANCE OF\", _1.Source)), \"REQUESTED\", \"ASSIGNED\", \"INITIAL\"));\n const between = (0, combi_1.seq)((0, combi_1.opt)(\"NOT\"), \"BETWEEN\", _1.Source, \"AND\", _1.Source);\n const rett = (0, combi_1.seq)(_1.ComponentChainSimple, (0, combi_1.altPrio)((0, combi_1.seq)(_1.CompareOperator, _1.Source), inn, between, sopt));\n const ret = (0, combi_1.seq)((0, combi_1.opt)(\"NOT\"), rett);\n return ret;\n }\n}\nexports.ComponentCompare = ComponentCompare;\n//# sourceMappingURL=component_compare.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_simple.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_simple.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCompareSimple = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst component_chain_simple_1 = __webpack_require__(/*! ./component_chain_simple */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain_simple.js\");\nclass ComponentCompareSimple extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)(component_chain_simple_1.ComponentChainSimple, _1.Dynamic), \"=\", _1.Source);\n return (0, combi_1.plus)(ret);\n }\n}\nexports.ComponentCompareSimple = ComponentCompareSimple;\n//# sourceMappingURL=component_compare_simple.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_simple.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_single.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_single.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCompareSingle = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst component_chain_simple_1 = __webpack_require__(/*! ./component_chain_simple */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain_simple.js\");\nclass ComponentCompareSingle extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)(component_chain_simple_1.ComponentChainSimple, _1.Dynamic), \"=\", _1.Source);\n return ret;\n }\n}\nexports.ComponentCompareSingle = ComponentCompareSingle;\n//# sourceMappingURL=component_compare_single.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_single.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCond = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ComponentCond extends combi_1.Expression {\n getRunnable() {\n const operator = (0, combi_1.alt)(\"AND\", \"OR\");\n const cnd = (0, combi_1.alt)(_1.ComponentCompare, _1.ComponentCondSub);\n const ret = (0, combi_1.seq)(cnd, (0, combi_1.star)((0, combi_1.seq)(operator, cnd)));\n return ret;\n }\n}\nexports.ComponentCond = ComponentCond;\n//# sourceMappingURL=component_cond.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond_sub.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond_sub.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCondSub = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ComponentCondSub extends combi_1.Expression {\n getRunnable() {\n const another = (0, combi_1.seq)((0, combi_1.opt)(\"NOT\"), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.ComponentCond, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.ParenRightW)));\n return another;\n }\n}\nexports.ComponentCondSub = ComponentCondSub;\n//# sourceMappingURL=component_cond_sub.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond_sub.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_name.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_name.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass ComponentName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^(\\/\\w+\\/)?[\\w\\d_%$\\*\\~]+$/);\n }\n}\nexports.ComponentName = ComponentName;\n//# sourceMappingURL=component_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/concatenated_constant.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/concatenated_constant.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConcatenatedConstant = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass ConcatenatedConstant extends combi_1.Expression {\n getRunnable() {\n const str = (0, combi_1.seq)((0, combi_1.regex)(/^`.*`$/), (0, combi_1.plusPrio)((0, combi_1.seq)(\"&\", (0, combi_1.regex)(/^`.*`$/))));\n const char = (0, combi_1.seq)((0, combi_1.regex)(/^'.*'$/), (0, combi_1.plusPrio)((0, combi_1.seq)(\"&\", (0, combi_1.regex)(/^'.*'$/))));\n return (0, combi_1.altPrio)(str, char);\n }\n}\nexports.ConcatenatedConstant = ConcatenatedConstant;\n//# sourceMappingURL=concatenated_constant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/concatenated_constant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Cond = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst cond_sub_1 = __webpack_require__(/*! ./cond_sub */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_sub.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Cond extends combi_1.Expression {\n getRunnable() {\n const operator = (0, combi_1.altPrio)(\"AND\", \"OR\", (0, combi_1.ver)(version_1.Version.v702, \"EQUIV\"));\n const cnd = (0, combi_1.altPrio)(_1.Compare, cond_sub_1.CondSub);\n const ret = (0, combi_1.seq)(cnd, (0, combi_1.starPrio)((0, combi_1.seq)(operator, cnd)));\n return ret;\n }\n}\nexports.Cond = Cond;\n//# sourceMappingURL=cond.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_body.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_body.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CondBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass CondBody extends combi_1.Expression {\n getRunnable() {\n const when = (0, combi_1.seq)(\"WHEN\", (0, combi_1.alt)(_1.Cond, _1.Source), \"THEN\", (0, combi_1.alt)(_1.Source, _1.Throw));\n const elsee = (0, combi_1.seq)(\"ELSE\", (0, combi_1.alt)(_1.Source, _1.Throw));\n return (0, combi_1.seq)((0, combi_1.opt)(_1.Let), (0, combi_1.plus)(when), (0, combi_1.opt)(elsee));\n }\n}\nexports.CondBody = CondBody;\n//# sourceMappingURL=cond_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_sub.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_sub.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CondSub = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass CondSub extends combi_1.Expression {\n getRunnable() {\n // rule ParserMissingSpace makes sure the whitespace is correct\n const another = (0, combi_1.seq)((0, combi_1.optPrio)(\"NOT\"), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeft)), _1.Cond, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.ParenRightW)));\n return another;\n }\n}\nexports.CondSub = CondSub;\n//# sourceMappingURL=cond_sub.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_sub.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Constant = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Constant extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)(_1.TextElementString, _1.ConcatenatedConstant, _1.ConstantString, _1.Integer);\n }\n}\nexports.Constant = Constant;\n//# sourceMappingURL=constant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_field_length.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_field_length.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConstantFieldLength = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ConstantFieldLength extends combi_1.Expression {\n getRunnable() {\n const length = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.altPrio)(_1.Integer, _1.SimpleFieldChain), (0, combi_1.tok)(tokens_1.ParenRightW));\n return length;\n }\n}\nexports.ConstantFieldLength = ConstantFieldLength;\n//# sourceMappingURL=constant_field_length.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_field_length.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_string.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_string.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConstantString = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass ConstantString extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^('.*')|(`.*`)$/);\n }\n}\nexports.ConstantString = ConstantString;\n//# sourceMappingURL=constant_string.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_string.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/conv_body.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/conv_body.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConvBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ConvBody extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.optPrio)(_1.Let), _1.Source);\n }\n}\nexports.ConvBody = ConvBody;\n//# sourceMappingURL=conv_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/conv_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/corresponding_body.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/corresponding_body.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CorrespondingBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst component_chain_1 = __webpack_require__(/*! ./component_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain.js\");\nclass CorrespondingBody extends combi_1.Expression {\n getRunnable() {\n const mapping = (0, combi_1.seq)(\"MAPPING\", (0, combi_1.plus)((0, combi_1.seq)(_1.ComponentName, \"=\", component_chain_1.ComponentChain)));\n const baseParen = (0, combi_1.seq)(\"BASE\", (0, combi_1.tok)(tokens_1.WParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));\n const discarding = (0, combi_1.ver)(version_1.Version.v751, \"DISCARDING DUPLICATES\");\n return (0, combi_1.seq)((0, combi_1.optPrio)(\"DEEP\"), (0, combi_1.optPrio)(baseParen), _1.Source, (0, combi_1.optPrio)(discarding), (0, combi_1.optPrio)(mapping), (0, combi_1.optPrio)((0, combi_1.seq)(\"EXCEPT\", (0, combi_1.alt)((0, combi_1.plus)(_1.Field), \"*\"))));\n }\n}\nexports.CorrespondingBody = CorrespondingBody;\n//# sourceMappingURL=corresponding_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/corresponding_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/data_definition.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/data_definition.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataDefinition = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Expressions = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass DataDefinition extends combi_1.Expression {\n getRunnable() {\n const simple = (0, combi_1.opt)((0, combi_1.per)(\"READ-ONLY\", Expressions.Type, Expressions.Length, Expressions.Decimals, Expressions.Value));\n const table = (0, combi_1.seq)(Expressions.TypeTable, (0, combi_1.optPrio)(\"READ-ONLY\"));\n return (0, combi_1.seq)(Expressions.DefinitionName, (0, combi_1.optPrio)(Expressions.ConstantFieldLength), (0, combi_1.alt)(simple, table));\n }\n}\nexports.DataDefinition = DataDefinition;\n//# sourceMappingURL=data_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/data_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_connection.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_connection.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DatabaseConnection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass DatabaseConnection extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.regex)(/[\\w\\/]+/);\n return (0, combi_1.seq)(\"CONNECTION\", (0, combi_1.altPrio)(name, _1.Dynamic));\n }\n}\nexports.DatabaseConnection = DatabaseConnection;\n//# sourceMappingURL=database_connection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_connection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_table.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_table.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DatabaseTable = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nclass DatabaseTable extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)(dynamic_1.Dynamic, (0, combi_1.regex)(/^\\*?(\\/\\w+\\/)?\\w+$/));\n }\n}\nexports.DatabaseTable = DatabaseTable;\n//# sourceMappingURL=database_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/decimals.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/decimals.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Decimals = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Decimals extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)(\"DECIMALS\", _1.Integer);\n return ret;\n }\n}\nexports.Decimals = Decimals;\n//# sourceMappingURL=decimals.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/decimals.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/default.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/default.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Default = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Default extends combi_1.Expression {\n getRunnable() {\n // todo, DEFAULT is only valid for definitions in relation to method parameters\n const def = (0, combi_1.seq)(\"DEFAULT\", (0, combi_1.altPrio)(_1.Constant, _1.FieldChain));\n return def;\n }\n}\nexports.Default = Default;\n//# sourceMappingURL=default.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/default.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/definition_name.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/definition_name.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DefinitionName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass DefinitionName extends combi_1.Expression {\n getRunnable() {\n const r = (0, combi_1.regex)(/^((\\w*\\/\\w+\\/)|(\\w*\\/\\w+\\/)?[\\w\\*$%]+)$/);\n return (0, combi_1.seq)(r, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.optPrio)(r))), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.DashW)));\n }\n}\nexports.DefinitionName = DefinitionName;\n//# sourceMappingURL=definition_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/definition_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dereference.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dereference.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Dereference = void 0;\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Dereference extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), \"*\");\n }\n}\nexports.Dereference = Dereference;\n//# sourceMappingURL=dereference.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dereference.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/destination.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/destination.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Destination = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Destination extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"DESTINATION\", (0, combi_1.optPrio)(\"IN GROUP\"), (0, combi_1.altPrio)(\"DEFAULT\", _1.Source));\n }\n}\nexports.Destination = Destination;\n//# sourceMappingURL=destination.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/destination.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Dynamic = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Dynamic extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenLeft), (0, combi_1.tok)(tokens_1.ParenLeft)), (0, combi_1.altPrio)(_1.FieldChain, _1.Constant), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.ParenRight)));\n return ret;\n }\n}\nexports.Dynamic = Dynamic;\n//# sourceMappingURL=dynamic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/entity_association.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/entity_association.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EntityAssociation = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EntityAssociation extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^[\\w]+\\\\_[\\w]+$/);\n }\n}\nexports.EntityAssociation = EntityAssociation;\n//# sourceMappingURL=entity_association.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/entity_association.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_handler.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_handler.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EventHandler = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass EventHandler extends combi_1.Expression {\n getRunnable() {\n const event = (0, combi_1.seq)(\"FOR EVENT\", _1.EventName, \"OF\", _1.ClassName, (0, combi_1.optPrio)((0, combi_1.seq)(\"IMPORTING\", (0, combi_1.plusPrio)(_1.MethodParamName))));\n return event;\n }\n}\nexports.EventHandler = EventHandler;\n//# sourceMappingURL=event_handler.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_handler.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_name.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_name.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EventName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EventName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^[&_!]?\\*?\\w*(\\/\\w+\\/)?\\d*[a-zA-Z_%\\$][\\w\\*%\\$\\?#]*(~\\w+)?$/);\n }\n}\nexports.EventName = EventName;\n//# sourceMappingURL=event_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/exception_name.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/exception_name.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExceptionName = void 0;\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst field_1 = __webpack_require__(/*! ./field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js\");\n/** non class based exception name */\nclass ExceptionName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(field_1.Field, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), field_1.Field)));\n }\n}\nexports.ExceptionName = ExceptionName;\n//# sourceMappingURL=exception_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/exception_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Field = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Field extends combi_1.Expression {\n getRunnable() {\n // \"&1\" can be used for almost anything(field names, method names etc.) in macros\n // field names with only digits should not be possible\n return (0, combi_1.regex)(/^[&_!]?\\*?\\w*(\\/\\w+\\/)?\\d*[a-zA-Z_%\\$][\\w\\*%\\$\\?#]*(~\\w+)?$/);\n }\n}\nexports.Field = Field;\n//# sourceMappingURL=field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_all.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_all.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldAll = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass FieldAll extends combi_1.Expression {\n getRunnable() {\n // \"&1\" can be used for almost anything(field names, method names etc.) in macros\n // field names with only digits should not be possible\n return (0, combi_1.regex)(/^&?\\*?(\\/\\w+\\/)?[\\w\\*\\$]+(~\\w+)?$/);\n }\n}\nexports.FieldAll = FieldAll;\n//# sourceMappingURL=field_all.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_all.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_assignment.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_assignment.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldAssignment = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst field_sub_1 = __webpack_require__(/*! ./field_sub */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_sub.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nclass FieldAssignment extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)(field_sub_1.FieldSub, \"=\", source_1.Source);\n return ret;\n }\n}\nexports.FieldAssignment = FieldAssignment;\n//# sourceMappingURL=field_assignment.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_assignment.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_chain.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_chain.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldChain = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass FieldChain extends combi_1.Expression {\n getRunnable() {\n const attr = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), _1.AttributeName);\n const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.optPrio)(_1.ComponentName));\n const chain = (0, combi_1.star)((0, combi_1.altPrio)(_1.Dereference, attr, comp, _1.TableExpression));\n const clas = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow), _1.AttributeName);\n const start = (0, combi_1.altPrio)(clas, _1.SourceField, _1.SourceFieldSymbol);\n const after = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.DashW), (0, combi_1.seq)((0, combi_1.optPrio)(_1.TableBody), (0, combi_1.optPrio)(_1.FieldOffset), (0, combi_1.optPrio)(_1.FieldLength)));\n const ret = (0, combi_1.seq)(start, chain, after);\n return ret;\n }\n}\nexports.FieldChain = FieldChain;\n//# sourceMappingURL=field_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_length.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_length.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldLength = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FieldLength extends combi_1.Expression {\n getRunnable() {\n const normal = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.Plus)), (0, combi_1.altPrio)((0, combi_1.regex)(/^\\d+$/), _1.SimpleFieldChain2));\n const length = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.altPrio)(normal, \"*\"), (0, combi_1.tok)(tokens_1.ParenRightW));\n return length;\n }\n}\nexports.FieldLength = FieldLength;\n//# sourceMappingURL=field_length.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_length.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_offset.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_offset.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldOffset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FieldOffset extends combi_1.Expression {\n getRunnable() {\n const offset = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Plus), (0, combi_1.altPrio)((0, combi_1.regex)(/^\\d+$/), _1.SimpleFieldChain2));\n return offset;\n }\n}\nexports.FieldOffset = FieldOffset;\n//# sourceMappingURL=field_offset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_offset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_sub.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_sub.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldSub = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst table_body_1 = __webpack_require__(/*! ./table_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js\");\nclass FieldSub extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)((0, combi_1.regex)(/^\\*?!?(\\/\\w+\\/)?[a-zA-Z_%$][\\w%$\\$\\*]*$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\\w%$\\$\\*]+$/))), (0, combi_1.opt)(table_body_1.TableBody));\n return ret;\n }\n}\nexports.FieldSub = FieldSub;\n//# sourceMappingURL=field_sub.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_sub.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_symbol.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_symbol.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldSymbol = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass FieldSymbol extends combi_1.Expression {\n getRunnable() {\n // todo, this only allows one dash in the name\n const dashes = (0, combi_1.seq)((0, combi_1.regex)(/^<[\\w\\/%$\\*]+$/), (0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\\w\\/%$\\*]+>$/));\n return (0, combi_1.altPrio)((0, combi_1.regex)(/^<[\\w\\/%$\\*]+>$/), dashes);\n }\n}\nexports.FieldSymbol = FieldSymbol;\n//# sourceMappingURL=field_symbol.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_symbol.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/filter_body.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/filter_body.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FilterBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FilterBody extends combi_1.Expression {\n getRunnable() {\n const inn = (0, combi_1.seq)(\"IN\", _1.Source);\n const using = (0, combi_1.seq)(\"USING KEY\", _1.SimpleName);\n return (0, combi_1.seq)(_1.Source, (0, combi_1.optPrio)(\"EXCEPT\"), (0, combi_1.optPrio)((0, combi_1.per)(inn, using)), (0, combi_1.seq)(\"WHERE\", _1.ComponentCond));\n }\n}\nexports.FilterBody = FilterBody;\n//# sourceMappingURL=filter_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/filter_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/final_methods.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/final_methods.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FinalMethods = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst method_name_1 = __webpack_require__(/*! ./method_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_name.js\");\nclass FinalMethods extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"FINAL METHODS\", (0, combi_1.plus)(method_name_1.MethodName));\n }\n}\nexports.FinalMethods = FinalMethods;\n//# sourceMappingURL=final_methods.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/final_methods.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/find_type.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/find_type.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FindType = void 0;\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass FindType extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.opt)((0, combi_1.alt)(\"REGEX\", \"SUBSTRING\", (0, combi_1.ver)(version_1.Version.v755, \"PCRE\")));\n }\n}\nexports.FindType = FindType;\n//# sourceMappingURL=find_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/find_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/for.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/for.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.For = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_chain.js\");\nclass For extends combi_1.Expression {\n getRunnable() {\n const where = (0, combi_1.seq)(\"WHERE (\", _1.ComponentCond, \")\");\n const from = (0, combi_1.seq)(\"FROM\", _1.Source);\n const to = (0, combi_1.seq)(\"TO\", _1.Source);\n const inn = (0, combi_1.seq)(_1.InlineLoopDefinition, (0, combi_1.optPrio)(from), (0, combi_1.optPrio)(to), (0, combi_1.optPrio)(where));\n const then = (0, combi_1.seq)(\"THEN\", _1.Source);\n const whil = (0, combi_1.seq)((0, combi_1.altPrio)(\"UNTIL\", \"WHILE\"), _1.Cond);\n const itera = (0, combi_1.seq)(_1.InlineFieldDefinition, (0, combi_1.opt)(then), whil);\n const groupBy = (0, combi_1.seq)(\"GROUP BY\", (0, combi_1.alt)(field_chain_1.FieldChain, (0, combi_1.seq)(\"(\", (0, combi_1.plus)(_1.LoopGroupByComponent), \")\")), (0, combi_1.opt)((0, combi_1.seq)((0, combi_1.alt)(\"ASCENDING\", \"DESCENDING\"), (0, combi_1.opt)(\"AS TEXT\"))), (0, combi_1.opt)(\"WITHOUT MEMBERS\"));\n const t = (0, combi_1.alt)(_1.TargetField, _1.TargetFieldSymbol);\n const groups = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)(\"GROUPS\", t, \"OF\", t, \"IN\", _1.Source, (0, combi_1.optPrio)(groupBy)));\n const f = (0, combi_1.seq)(\"FOR\", (0, combi_1.alt)(itera, inn, groups), (0, combi_1.optPrio)(_1.Let));\n return (0, combi_1.ver)(version_1.Version.v740sp05, f);\n }\n}\nexports.For = For;\n//# sourceMappingURL=for.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/for.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_changing.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_changing.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormChanging = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FormChanging extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"CHANGING\", (0, combi_1.plus)(_1.FormParam));\n }\n}\nexports.FormChanging = FormChanging;\n//# sourceMappingURL=form_changing.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_changing.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_name.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_name.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass FormName extends combi_1.Expression {\n getRunnable() {\n // todo, does not handle namespaces properly\n return (0, combi_1.seq)((0, combi_1.regex)(/^[\\w%$\\*\\/\\?]+$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.optPrio)((0, combi_1.regex)(/^\\w+$/)))), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.DashW)));\n }\n}\nexports.FormName = FormName;\n//# sourceMappingURL=form_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormParam = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FormParam extends combi_1.Expression {\n getRunnable() {\n const stru = (0, combi_1.seq)(\"STRUCTURE\", _1.SimpleFieldChain);\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)(_1.PassByValue, _1.FormParamName), (0, combi_1.optPrio)((0, combi_1.altPrio)(_1.FormParamType, stru)));\n return ret;\n }\n}\nexports.FormParam = FormParam;\n//# sourceMappingURL=form_param.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_name.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_name.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormParamName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass FormParamName extends combi_1.Expression {\n getRunnable() {\n const r = (0, combi_1.regex)(/^[\\w$&\\*%\\/]+$/);\n // dashes in form parameter names allowed, intention is not to support this\n // but avoid the structural errors\n return (0, combi_1.seq)(r, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), r)));\n }\n}\nexports.FormParamName = FormParamName;\n//# sourceMappingURL=form_param_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_type.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_type.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormParamType = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FormParamType extends combi_1.Expression {\n getRunnable() {\n const def = (0, combi_1.seq)(\"DEFAULT\", (0, combi_1.alt)(_1.Constant, _1.FieldChain));\n const table = (0, combi_1.seq)((0, combi_1.alt)(\"STANDARD\", \"HASHED\", \"INDEX\", \"SORTED\", \"ANY\"), \"TABLE\");\n const tabseq = (0, combi_1.seq)(table, (0, combi_1.optPrio)((0, combi_1.seq)(\"OF\", _1.TypeName)));\n const ret = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.alt)(\"REF TO\", \"LINE OF\")), _1.TypeName, (0, combi_1.opt)(def));\n const like = (0, combi_1.seq)(\"LIKE\", (0, combi_1.optPrio)((0, combi_1.alt)(\"REF TO\", \"LINE OF\")), _1.FieldChain);\n return (0, combi_1.alt)((0, combi_1.seq)(\"TYPE\", (0, combi_1.altPrio)(tabseq, ret)), like);\n }\n}\nexports.FormParamType = FormParamType;\n//# sourceMappingURL=form_param_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_raising.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_raising.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormRaising = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass FormRaising extends combi_1.Expression {\n getRunnable() {\n const resume = (0, combi_1.seq)(\"RESUMABLE\", (0, combi_1.tok)(tokens_1.ParenLeft), _1.ClassName, (0, combi_1.tok)(tokens_1.ParenRightW));\n const raising = (0, combi_1.seq)(\"RAISING\", (0, combi_1.plus)((0, combi_1.alt)(_1.ClassName, resume)));\n return raising;\n }\n}\nexports.FormRaising = FormRaising;\n//# sourceMappingURL=form_raising.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_raising.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_tables.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_tables.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormTables = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FormTables extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"TABLES\", (0, combi_1.plus)(_1.FormParam));\n }\n}\nexports.FormTables = FormTables;\n//# sourceMappingURL=form_tables.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_tables.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_using.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_using.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormUsing = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FormUsing extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"USING\", (0, combi_1.plus)(_1.FormParam));\n }\n}\nexports.FormUsing = FormUsing;\n//# sourceMappingURL=form_using.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_using.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/fstarget.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/fstarget.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FSTarget = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FSTarget extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)(_1.InlineFS, _1.TargetFieldSymbol);\n }\n}\nexports.FSTarget = FSTarget;\n//# sourceMappingURL=fstarget.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/fstarget.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionExporting = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FunctionExporting extends combi_1.Expression {\n getRunnable() {\n const exp = (0, combi_1.plusPrio)(_1.FunctionExportingParameter);\n return exp;\n }\n}\nexports.FunctionExporting = FunctionExporting;\n//# sourceMappingURL=function_exporting.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting_parameter.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting_parameter.js ***! + \*************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionExportingParameter = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst parameter_name_1 = __webpack_require__(/*! ./parameter_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_name.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst simple_source3_1 = __webpack_require__(/*! ./simple_source3 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source3.js\");\nclass FunctionExportingParameter extends combi_1.Expression {\n getRunnable() {\n const s = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v740sp02, source_1.Source), simple_source3_1.SimpleSource3);\n const exp = (0, combi_1.seq)(parameter_name_1.ParameterName, \"=\", s);\n return exp;\n }\n}\nexports.FunctionExportingParameter = FunctionExportingParameter;\n//# sourceMappingURL=function_exporting_parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting_parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_name.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_name.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FunctionName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)(_1.Constant, _1.FieldChain);\n }\n}\nexports.FunctionName = FunctionName;\n//# sourceMappingURL=function_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_parameters.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_parameters.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionParameters = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FunctionParameters extends combi_1.Expression {\n getRunnable() {\n const exporting = (0, combi_1.seq)(\"EXPORTING\", _1.FunctionExporting);\n const importing = (0, combi_1.seq)(\"IMPORTING\", _1.ParameterListT);\n const changing = (0, combi_1.seq)(\"CHANGING\", _1.ParameterListT);\n const tables = (0, combi_1.seq)(\"TABLES\", _1.ParameterListT);\n const exceptions = (0, combi_1.seq)(\"EXCEPTIONS\", (0, combi_1.optPrio)((0, combi_1.altPrio)(_1.ParameterListExceptions, _1.Field)));\n const long = (0, combi_1.seq)((0, combi_1.optPrio)(exporting), (0, combi_1.optPrio)(importing), (0, combi_1.optPrio)(tables), (0, combi_1.optPrio)(changing), (0, combi_1.optPrio)(exceptions));\n return long;\n }\n}\nexports.FunctionParameters = FunctionParameters;\n//# sourceMappingURL=function_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/include_name.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/include_name.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IncludeName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass IncludeName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.regex)(/^?$/), (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^\\w+$/))));\n }\n}\nexports.IncludeName = IncludeName;\n//# sourceMappingURL=include_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/include_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js ***! + \**************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./abstract_methods */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract_methods.js\"), exports);\n__exportStar(__webpack_require__(/*! ./abstract */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/abstract.js\"), exports);\n__exportStar(__webpack_require__(/*! ./and_return */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/and_return.js\"), exports);\n__exportStar(__webpack_require__(/*! ./arith_operator */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arith_operator.js\"), exports);\n__exportStar(__webpack_require__(/*! ./arrow_or_dash */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow_or_dash.js\"), exports);\n__exportStar(__webpack_require__(/*! ./arrow */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/arrow.js\"), exports);\n__exportStar(__webpack_require__(/*! ./assign_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/assign_source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./association_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/association_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./attribute_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_chain.js\"), exports);\n__exportStar(__webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./block_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/block_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_transformation_options */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_options.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_transformation_parameters */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/call_transformation_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cast */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cast.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_final */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_final.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_friends */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_friends.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_global */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_global.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./color */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/color.js\"), exports);\n__exportStar(__webpack_require__(/*! ./compare_operator */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare_operator.js\"), exports);\n__exportStar(__webpack_require__(/*! ./compare */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/compare.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_chain_simple */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain_simple.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_chain.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_compare_simple */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_simple.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_compare_single */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_single.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_compare */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_cond_sub */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond_sub.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_cond */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_cond.js\"), exports);\n__exportStar(__webpack_require__(/*! ./component_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_fields */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_fields.js\"), exports);\n__exportStar(__webpack_require__(/*! ./concatenated_constant */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/concatenated_constant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cond_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cond_sub */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond_sub.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cond */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/cond.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constant_field_length */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_field_length.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constant_string */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_string.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constant */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./conv_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/conv_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./corresponding_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/corresponding_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data_definition */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/data_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./database_connection */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_connection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./database_table */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/database_table.js\"), exports);\n__exportStar(__webpack_require__(/*! ./decimals */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/decimals.js\"), exports);\n__exportStar(__webpack_require__(/*! ./default */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/default.js\"), exports);\n__exportStar(__webpack_require__(/*! ./definition_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/definition_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./dereference */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dereference.js\"), exports);\n__exportStar(__webpack_require__(/*! ./destination */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/destination.js\"), exports);\n__exportStar(__webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\"), exports);\n__exportStar(__webpack_require__(/*! ./entity_association */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/entity_association.js\"), exports);\n__exportStar(__webpack_require__(/*! ./entity_association */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/entity_association.js\"), exports);\n__exportStar(__webpack_require__(/*! ./event_handler */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_handler.js\"), exports);\n__exportStar(__webpack_require__(/*! ./event_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/event_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./exception_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/exception_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_all */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_all.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_assignment */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_assignment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_chain.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_length */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_length.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_offset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_offset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_sub */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_sub.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_symbol */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_symbol.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./filter_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/filter_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./final_methods */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/final_methods.js\"), exports);\n__exportStar(__webpack_require__(/*! ./find_type */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/find_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./for */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/for.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_changing */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_changing.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_param_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_param_type */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_param */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_param.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_raising */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_raising.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_tables */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_tables.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_using */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/form_using.js\"), exports);\n__exportStar(__webpack_require__(/*! ./fstarget */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/fstarget.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_exporting_parameter */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting_parameter.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_exporting */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_exporting.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_parameters */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/function_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./include_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/include_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./inline_field_definition */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./inline_field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./inline_loop_definition */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_loop_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./inlinedata */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinedata.js\"), exports);\n__exportStar(__webpack_require__(/*! ./inlinefs */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinefs.js\"), exports);\n__exportStar(__webpack_require__(/*! ./integer */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/interface_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./kernel_id */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/kernel_id.js\"), exports);\n__exportStar(__webpack_require__(/*! ./language */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/language.js\"), exports);\n__exportStar(__webpack_require__(/*! ./length */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/length.js\"), exports);\n__exportStar(__webpack_require__(/*! ./let */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/let.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop_group_by_component */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_component.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop_group_by_target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_target.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop_group_by */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop_target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_target.js\"), exports);\n__exportStar(__webpack_require__(/*! ./macro_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/macro_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./message_class */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_class.js\"), exports);\n__exportStar(__webpack_require__(/*! ./message_number */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_number.js\"), exports);\n__exportStar(__webpack_require__(/*! ./message_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./message_type_and_number */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_type_and_number.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_call_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_call_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_chain.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_call_param */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_param.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_call */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_def_changing */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_changing.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_def_exceptions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exceptions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_def_exporting */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exporting.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_def_importing */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_importing.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_def_raising */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_raising.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_def_returning */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_returning.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_param_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_param_optional */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_optional.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_param */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_parameters */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./modif */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/modif.js\"), exports);\n__exportStar(__webpack_require__(/*! ./namespace_simple_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/namespace_simple_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./new_object */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/new_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ole_exporting */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/ole_exporting.js\"), exports);\n__exportStar(__webpack_require__(/*! ./or */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/or.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter_exception */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_exception.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter_list_exceptions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_exceptions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter_list_s */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_s.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter_list_t */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_t.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter_s */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_s.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter_t */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_t.js\"), exports);\n__exportStar(__webpack_require__(/*! ./pass_by_value */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/pass_by_value.js\"), exports);\n__exportStar(__webpack_require__(/*! ./perform_changing */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_changing.js\"), exports);\n__exportStar(__webpack_require__(/*! ./perform_tables */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_tables.js\"), exports);\n__exportStar(__webpack_require__(/*! ./perform_using */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_using.js\"), exports);\n__exportStar(__webpack_require__(/*! ./radio_group_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/radio_group_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./raise_with */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/raise_with.js\"), exports);\n__exportStar(__webpack_require__(/*! ./read_table_target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/read_table_target.js\"), exports);\n__exportStar(__webpack_require__(/*! ./receive_parameters */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/receive_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./redefinition */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/redefinition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./reduce_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./reduce_next */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_next.js\"), exports);\n__exportStar(__webpack_require__(/*! ./report_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/report_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select_loop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select_loop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_field_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_field_chain2 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain2.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_source1 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source1.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_source2 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source2.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_source3 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source3.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_source4 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source4.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_target.js\"), exports);\n__exportStar(__webpack_require__(/*! ./source_field_symbol */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field_symbol.js\"), exports);\n__exportStar(__webpack_require__(/*! ./source_field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_aggregation */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_aggregation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_alias_field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_alias_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_arithmetics */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetics.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_arithmetic_operator */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetic_operator.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_as_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_as_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_case */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_case.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_cds_parameters */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cds_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_client */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_client.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_compare_operator */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare_operator.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_compare */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_cond */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cond.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_field_and_value */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_and_value.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_field_list_loop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list_loop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_field_list */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_field_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_for_all_entries */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_for_all_entries.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_from_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from_source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_from */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_function */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_group_by */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_group_by.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_having */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_having.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_hints */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_hints.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_in */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_in.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_into_structure */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_structure.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_into_table */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_table.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_join */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_join.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_order_by */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_order_by.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_path */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_path.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_source_simple */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source_simple.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_target.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_up_to */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_up_to.js\"), exports);\n__exportStar(__webpack_require__(/*! ./string_template_formatting */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_formatting.js\"), exports);\n__exportStar(__webpack_require__(/*! ./string_template_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./string_template */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template.js\"), exports);\n__exportStar(__webpack_require__(/*! ./super_class_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/super_class_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./switch_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/switch_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./table_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./table_expression */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_expression.js\"), exports);\n__exportStar(__webpack_require__(/*! ./target_field_symbol */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field_symbol.js\"), exports);\n__exportStar(__webpack_require__(/*! ./target_field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js\"), exports);\n__exportStar(__webpack_require__(/*! ./test_seam_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/test_seam_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./text_element_key */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_key.js\"), exports);\n__exportStar(__webpack_require__(/*! ./text_element_string */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_string.js\"), exports);\n__exportStar(__webpack_require__(/*! ./text_element */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element.js\"), exports);\n__exportStar(__webpack_require__(/*! ./throw */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/throw.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_name_or_infer */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name_or_infer.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_param */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_param.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_table_key */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table_key.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_table */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./value_body_line */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_line.js\"), exports);\n__exportStar(__webpack_require__(/*! ./value_body_lines */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_lines.js\"), exports);\n__exportStar(__webpack_require__(/*! ./value_body */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./value */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value.js\"), exports);\n__exportStar(__webpack_require__(/*! ./with_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/with_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./write_offset_length */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/write_offset_length.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineField = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InlineField extends combi_1.Expression {\n getRunnable() {\n return new _1.Field();\n }\n}\nexports.InlineField = InlineField;\n//# sourceMappingURL=inline_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field_definition.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field_definition.js ***! + \********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineFieldDefinition = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InlineFieldDefinition extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)((0, combi_1.seq)(_1.Field, \"=\", _1.Source), (0, combi_1.seq)(_1.Field, \"TYPE\", _1.TypeName));\n }\n}\nexports.InlineFieldDefinition = InlineFieldDefinition;\n//# sourceMappingURL=inline_field_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_field_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_loop_definition.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_loop_definition.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineLoopDefinition = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InlineLoopDefinition extends combi_1.Expression {\n getRunnable() {\n const index = (0, combi_1.seq)(\"INDEX INTO\", _1.TargetField);\n return (0, combi_1.seq)((0, combi_1.altPrio)(_1.TargetFieldSymbol, _1.TargetField), \"IN\", (0, combi_1.opt)(\"GROUP\"), _1.Source, (0, combi_1.optPrio)(index));\n }\n}\nexports.InlineLoopDefinition = InlineLoopDefinition;\n//# sourceMappingURL=inline_loop_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inline_loop_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinedata.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinedata.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineData = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass InlineData extends combi_1.Expression {\n getRunnable() {\n const right = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.ParenRight));\n const left = (0, combi_1.tok)(tokens_1.ParenLeft);\n const data = (0, combi_1.seq)(\"DATA\", left, _1.TargetField, right);\n const final = (0, combi_1.seq)(\"FINAL\", left, _1.TargetField, right);\n return (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v740sp02, data), (0, combi_1.ver)(version_1.Version.v757, final));\n }\n}\nexports.InlineData = InlineData;\n//# sourceMappingURL=inlinedata.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinedata.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinefs.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinefs.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineFS = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass InlineFS extends combi_1.Expression {\n getRunnable() {\n const right = (0, combi_1.tok)(tokens_1.ParenRightW);\n const left = (0, combi_1.tok)(tokens_1.ParenLeft);\n const fs = (0, combi_1.seq)(\"FIELD-SYMBOL\", left, _1.TargetFieldSymbol, right);\n return (0, combi_1.ver)(version_1.Version.v740sp02, fs);\n }\n}\nexports.InlineFS = InlineFS;\n//# sourceMappingURL=inlinefs.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/inlinefs.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Integer = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass Integer extends combi_1.Expression {\n getRunnable() {\n const modifier = (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WDash), (0, combi_1.tok)(tokens_1.WDashW), (0, combi_1.tok)(tokens_1.WPlus)));\n return (0, combi_1.seq)(modifier, (0, combi_1.regex)(/^\\d+$/));\n }\n}\nexports.Integer = Integer;\n//# sourceMappingURL=integer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/interface_name.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/interface_name.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InterfaceName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass InterfaceName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^\\w*(\\/\\w{3,}\\/)?\\w+$/);\n }\n}\nexports.InterfaceName = InterfaceName;\n//# sourceMappingURL=interface_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/interface_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/kernel_id.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/kernel_id.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.KernelId = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nclass KernelId extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.seq)(\"ID\", source_1.Source, \"FIELD\", source_1.Source);\n return field;\n }\n}\nexports.KernelId = KernelId;\n//# sourceMappingURL=kernel_id.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/kernel_id.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/language.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/language.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Language = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Language extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"LANGUAGE\", (0, combi_1.altPrio)(\"SQLSCRIPT\", \"SQL\", \"GRAPH\"));\n }\n}\nexports.Language = Language;\n//# sourceMappingURL=language.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/language.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/length.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/length.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Length = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Length extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)(\"LENGTH\", (0, combi_1.altPrio)(_1.Integer, _1.ConstantString, _1.SimpleFieldChain));\n return ret;\n }\n}\nexports.Length = Length;\n//# sourceMappingURL=length.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/length.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/let.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/let.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Let = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Let extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"LET\", (0, combi_1.plusPrio)(_1.InlineFieldDefinition), \"IN\");\n }\n}\nexports.Let = Let;\n//# sourceMappingURL=let.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/let.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopGroupBy = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nconst loop_group_by_target_1 = __webpack_require__(/*! ./loop_group_by_target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_target.js\");\nconst loop_group_by_component_1 = __webpack_require__(/*! ./loop_group_by_component */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_component.js\");\nclass LoopGroupBy extends combi_1.Expression {\n getRunnable() {\n const components = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.plus)(loop_group_by_component_1.LoopGroupByComponent), (0, combi_1.tok)(tokens_1.WParenRightW));\n const ret = (0, combi_1.seq)((0, combi_1.alt)(source_1.Source, components), (0, combi_1.optPrio)(\"ASCENDING\"), (0, combi_1.optPrio)(\"WITHOUT MEMBERS\"), loop_group_by_target_1.LoopGroupByTarget);\n return ret;\n }\n}\nexports.LoopGroupBy = LoopGroupBy;\n//# sourceMappingURL=loop_group_by.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_component.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_component.js ***! + \********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopGroupByComponent = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst component_name_1 = __webpack_require__(/*! ./component_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_name.js\");\nconst component_compare_single_1 = __webpack_require__(/*! ./component_compare_single */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/component_compare_single.js\");\nclass LoopGroupByComponent extends combi_1.Expression {\n getRunnable() {\n const groupSize = (0, combi_1.seq)(component_name_1.ComponentName, \"=\", \"GROUP SIZE\");\n const groupIndex = (0, combi_1.seq)(component_name_1.ComponentName, \"=\", \"GROUP INDEX\");\n const components = (0, combi_1.alt)(component_compare_single_1.ComponentCompareSingle, groupSize, groupIndex);\n return components;\n }\n}\nexports.LoopGroupByComponent = LoopGroupByComponent;\n//# sourceMappingURL=loop_group_by_component.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_component.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_target.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_target.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopGroupByTarget = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst target_1 = __webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js\");\nconst fstarget_1 = __webpack_require__(/*! ./fstarget */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/fstarget.js\");\nclass LoopGroupByTarget extends combi_1.Expression {\n getRunnable() {\n const into = (0, combi_1.seq)((0, combi_1.opt)(\"REFERENCE\"), \"INTO\", target_1.Target);\n const assigning = (0, combi_1.seq)(\"ASSIGNING\", fstarget_1.FSTarget);\n return (0, combi_1.optPrio)((0, combi_1.alt)(into, assigning));\n }\n}\nexports.LoopGroupByTarget = LoopGroupByTarget;\n//# sourceMappingURL=loop_group_by_target.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_target.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_target.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_target.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopTarget = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass LoopTarget extends combi_1.Expression {\n getRunnable() {\n const into = (0, combi_1.seq)((0, combi_1.opt)(\"REFERENCE\"), \"INTO\", _1.Target);\n const assigning = (0, combi_1.seq)(\"ASSIGNING\", _1.FSTarget);\n const target = (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.alt)(into, assigning), (0, combi_1.optPrio)(\"CASTING\")), \"TRANSPORTING NO FIELDS\");\n return target;\n }\n}\nexports.LoopTarget = LoopTarget;\n//# sourceMappingURL=loop_target.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_target.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/macro_name.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/macro_name.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MacroName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass MacroName extends combi_1.Expression {\n getRunnable() {\n const r = /^(\\/\\w+\\/)?[\\w\\*%\\?$&]+>?$/;\n return (0, combi_1.seq)((0, combi_1.regex)(r), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(r))));\n }\n}\nexports.MacroName = MacroName;\n//# sourceMappingURL=macro_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/macro_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_class.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_class.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessageClass = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass MessageClass extends combi_1.Expression {\n getRunnable() {\n // \"&1\" can be used for almost anything(field names, method names etc.) in macros\n return (0, combi_1.regex)(/^>?(\\/\\w+\\/)?\\w+#?@?\\/?!?&?>?\\$?$/);\n }\n}\nexports.MessageClass = MessageClass;\n//# sourceMappingURL=message_class.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_class.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_number.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_number.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessageNumber = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass MessageNumber extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^\\d\\d\\d$/i);\n }\n}\nexports.MessageNumber = MessageNumber;\n//# sourceMappingURL=message_number.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_number.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessageSource = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MessageSource extends combi_1.Expression {\n getRunnable() {\n const msgid = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), _1.MessageClass, (0, combi_1.tok)(tokens_1.ParenRightW));\n const simple = (0, combi_1.seq)(_1.MessageTypeAndNumber, (0, combi_1.opt)(msgid));\n const mess1 = (0, combi_1.seq)(\"ID\", _1.Source, \"TYPE\", _1.Source, \"NUMBER\", (0, combi_1.altPrio)(_1.MessageNumber, _1.Source));\n return (0, combi_1.altPrio)(simple, mess1);\n }\n}\nexports.MessageSource = MessageSource;\n//# sourceMappingURL=message_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_type_and_number.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_type_and_number.js ***! + \********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessageTypeAndNumber = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass MessageTypeAndNumber extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^[iweaxs]\\d\\d\\d$/i);\n }\n}\nexports.MessageTypeAndNumber = MessageTypeAndNumber;\n//# sourceMappingURL=message_type_and_number.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_type_and_number.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodCall = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_call_param_1 = __webpack_require__(/*! ./method_call_param */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_param.js\");\nclass MethodCall extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)(_1.MethodName, method_call_param_1.MethodCallParam);\n return ret;\n }\n}\nexports.MethodCall = MethodCall;\n//# sourceMappingURL=method_call.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_body.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_body.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodCallBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_call_param_1 = __webpack_require__(/*! ./method_call_param */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_param.js\");\nclass MethodCallBody extends combi_1.Expression {\n getRunnable() {\n const dynamicPar = (0, combi_1.seq)(\"PARAMETER-TABLE\", _1.Source);\n const dynamicExc = (0, combi_1.seq)(\"EXCEPTION-TABLE\", _1.Source);\n const dynamic = (0, combi_1.seq)(dynamicPar, (0, combi_1.optPrio)(dynamicExc));\n return (0, combi_1.alt)(method_call_param_1.MethodCallParam, _1.MethodParameters, dynamic);\n }\n}\nexports.MethodCallBody = MethodCallBody;\n//# sourceMappingURL=method_call_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_chain.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_chain.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodCallChain = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodCallChain extends combi_1.Expression {\n getRunnable() {\n const attr = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), _1.AttributeName);\n const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentName);\n const fields = (0, combi_1.star)((0, combi_1.altPrio)(attr, comp));\n const after = (0, combi_1.star)((0, combi_1.seq)(fields, (0, combi_1.tok)(tokens_1.InstanceArrow), _1.MethodCall));\n const localVariable = (0, combi_1.seq)(_1.FieldChain, (0, combi_1.tok)(tokens_1.InstanceArrow));\n const staticClass = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow));\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)(localVariable, staticClass)), _1.MethodCall), _1.NewObject, _1.Cast), after);\n return ret;\n }\n}\nexports.MethodCallChain = MethodCallChain;\n//# sourceMappingURL=method_call_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_param.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_param.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodCallParam = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst constant_string_1 = __webpack_require__(/*! ./constant_string */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant_string.js\");\nclass MethodCallParam extends combi_1.Expression {\n getRunnable() {\n const param = (0, combi_1.alt)(_1.Source, _1.ParameterListS, _1.MethodParameters);\n // rule ParserMissingSpace makes sure the whitespace is correct\n const right1 = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRight), (0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.ParenRight), (0, combi_1.tok)(tokens_1.ParenRightW));\n const right2 = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRight), (0, combi_1.tok)(tokens_1.WParenRightW));\n // note: make sure this does not overlap with FieldLength expression\n const ret = (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), param, right1), (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), param, right2), (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), constant_string_1.ConstantString, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRight), (0, combi_1.tok)(tokens_1.ParenRightW))));\n return ret;\n }\n}\nexports.MethodCallParam = MethodCallParam;\n//# sourceMappingURL=method_call_param.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_param.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_changing.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_changing.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefChanging = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodDefChanging extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"CHANGING\", (0, combi_1.plus)(_1.MethodParamOptional));\n }\n}\nexports.MethodDefChanging = MethodDefChanging;\n//# sourceMappingURL=method_def_changing.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_changing.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exceptions.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exceptions.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefExceptions = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodDefExceptions extends combi_1.Expression {\n getRunnable() {\n const exceptions = (0, combi_1.seq)(\"EXCEPTIONS\", (0, combi_1.plusPrio)(_1.NamespaceSimpleName));\n return exceptions;\n }\n}\nexports.MethodDefExceptions = MethodDefExceptions;\n//# sourceMappingURL=method_def_exceptions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exceptions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exporting.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exporting.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefExporting = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodDefExporting extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"EXPORTING\", (0, combi_1.plus)(_1.MethodParam));\n }\n}\nexports.MethodDefExporting = MethodDefExporting;\n//# sourceMappingURL=method_def_exporting.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_exporting.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_importing.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_importing.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefImporting = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodDefImporting extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.regex)(/^!?(\\/\\w+\\/)?\\w+$/);\n return (0, combi_1.seq)(\"IMPORTING\", (0, combi_1.plus)(_1.MethodParamOptional), (0, combi_1.optPrio)((0, combi_1.seq)(\"PREFERRED PARAMETER\", field)));\n }\n}\nexports.MethodDefImporting = MethodDefImporting;\n//# sourceMappingURL=method_def_importing.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_importing.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_raising.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_raising.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefRaising = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst class_name_1 = __webpack_require__(/*! ./class_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/class_name.js\");\nclass MethodDefRaising extends combi_1.Expression {\n getRunnable() {\n const resumable = (0, combi_1.seq)(\"RESUMABLE\", (0, combi_1.tok)(tokens_1.ParenLeft), class_name_1.ClassName, (0, combi_1.tok)(tokens_1.ParenRightW));\n const raising = (0, combi_1.seq)(\"RAISING\", (0, combi_1.plus)((0, combi_1.altPrio)(resumable, class_name_1.ClassName)));\n return raising;\n }\n}\nexports.MethodDefRaising = MethodDefRaising;\n//# sourceMappingURL=method_def_raising.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_raising.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_returning.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_returning.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefReturning = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Expressions = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass MethodDefReturning extends combi_1.Expression {\n getRunnable() {\n const value = (0, combi_1.seq)(\"VALUE\", (0, combi_1.tok)(tokens_1.ParenLeft), Expressions.MethodParamName, (0, combi_1.tok)(tokens_1.ParenRightW));\n return (0, combi_1.seq)(\"RETURNING\", value, Expressions.TypeParam);\n }\n}\nexports.MethodDefReturning = MethodDefReturning;\n//# sourceMappingURL=method_def_returning.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_def_returning.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_name.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_name.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass MethodName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^(\\/\\w+\\/)?\\w+(~\\w+)?$/);\n }\n}\nexports.MethodName = MethodName;\n//# sourceMappingURL=method_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParam = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Expressions = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass MethodParam extends combi_1.Expression {\n getRunnable() {\n const ref = (0, combi_1.seq)(\"REFERENCE\", (0, combi_1.tok)(tokens_1.ParenLeft), Expressions.MethodParamName, (0, combi_1.tok)(tokens_1.ParenRightW));\n const value = (0, combi_1.seq)(\"VALUE\", (0, combi_1.tok)(tokens_1.ParenLeft), Expressions.MethodParamName, (0, combi_1.tok)(tokens_1.ParenRightW));\n const fieldsOrValue = (0, combi_1.seq)((0, combi_1.altPrio)(value, ref, Expressions.MethodParamName), Expressions.TypeParam);\n return fieldsOrValue;\n }\n}\nexports.MethodParam = MethodParam;\n//# sourceMappingURL=method_param.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_name.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_name.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParamName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass MethodParamName extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.regex)(/^!?\\w*(\\/\\w+\\/)?\\w+$/);\n return field;\n }\n}\nexports.MethodParamName = MethodParamName;\n//# sourceMappingURL=method_param_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_optional.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_optional.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParamOptional = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodParamOptional extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(_1.MethodParam, (0, combi_1.optPrio)(\"OPTIONAL\"));\n }\n}\nexports.MethodParamOptional = MethodParamOptional;\n//# sourceMappingURL=method_param_optional.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_param_optional.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_parameters.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_parameters.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParameters = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodParameters extends combi_1.Expression {\n getRunnable() {\n const exporting = (0, combi_1.seq)(\"EXPORTING\", _1.ParameterListS);\n const importing = (0, combi_1.seq)(\"IMPORTING\", _1.ParameterListT);\n const changing = (0, combi_1.seq)(\"CHANGING\", _1.ParameterListT);\n const receiving = (0, combi_1.seq)(\"RECEIVING\", _1.ParameterT);\n const exceptions = (0, combi_1.seq)(\"EXCEPTIONS\", _1.ParameterListExceptions);\n const long = (0, combi_1.seq)((0, combi_1.optPrio)(exporting), (0, combi_1.optPrio)(importing), (0, combi_1.optPrio)(changing), (0, combi_1.optPrio)(receiving), (0, combi_1.optPrio)(exceptions));\n return long;\n }\n}\nexports.MethodParameters = MethodParameters;\n//# sourceMappingURL=method_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_source.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_source.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodSource = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodSource extends combi_1.Expression {\n getRunnable() {\n // note: AttributeName can be both an attribute and a method name, the syntax check will tell\n // note: its allowed to end with MethodCall, however if this is done it will give a syntax error via syntax check\n const afterArrow = (0, combi_1.alt)(_1.AttributeName, _1.MethodCall, _1.Dynamic);\n const arrow = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.InstanceArrow), (0, combi_1.tok)(tokens_1.StaticArrow));\n const attr = (0, combi_1.seq)(arrow, afterArrow);\n const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentName);\n const attrOrComp = (0, combi_1.altPrio)(attr, comp);\n const staticClass = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow));\n const clas = (0, combi_1.seq)(staticClass, afterArrow);\n const start = (0, combi_1.seq)((0, combi_1.altPrio)(clas, _1.SourceField, _1.SourceFieldSymbol, _1.Dynamic), (0, combi_1.star)(attrOrComp));\n return start;\n }\n}\nexports.MethodSource = MethodSource;\n//# sourceMappingURL=method_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/modif.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/modif.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Modif = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Modif extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^[\\w\\*]{1,3}$/);\n }\n}\nexports.Modif = Modif;\n//# sourceMappingURL=modif.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/modif.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/namespace_simple_name.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/namespace_simple_name.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NamespaceSimpleName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass NamespaceSimpleName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^((\\w*\\/\\w+\\/)|(\\w*\\/\\w+\\/)?[\\w\\*$%]+)$/);\n }\n}\nexports.NamespaceSimpleName = NamespaceSimpleName;\n//# sourceMappingURL=namespace_simple_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/namespace_simple_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/new_object.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/new_object.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NewObject = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst field_assignment_1 = __webpack_require__(/*! ./field_assignment */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_assignment.js\");\n// note: this can also be new data reference\nclass NewObject extends combi_1.Expression {\n getRunnable() {\n const lines = (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const linesFields = (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.plus)(field_assignment_1.FieldAssignment), (0, combi_1.tok)(tokens_1.WParenRightW)));\n const neww = (0, combi_1.seq)(\"NEW\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), (0, combi_1.optPrio)((0, combi_1.alt)(_1.Source, _1.ParameterListS, lines, linesFields)), \")\");\n return (0, combi_1.ver)(version_1.Version.v740sp02, neww);\n }\n}\nexports.NewObject = NewObject;\n//# sourceMappingURL=new_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/new_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/ole_exporting.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/ole_exporting.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OLEExporting = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass OLEExporting extends combi_1.Expression {\n getRunnable() {\n const fields = (0, combi_1.seq)((0, combi_1.regex)(/^[&_!#\\*]?[\\w\\d\\*%\\$\\?#]+$/), \"=\", _1.Source);\n return (0, combi_1.seq)(\"EXPORTING\", (0, combi_1.plus)(fields));\n }\n}\nexports.OLEExporting = OLEExporting;\n//# sourceMappingURL=ole_exporting.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/ole_exporting.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/or.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/or.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Or = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Or extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"OR\", _1.Source);\n }\n}\nexports.Or = Or;\n//# sourceMappingURL=or.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/or.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_exception.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_exception.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParameterException = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ParameterException extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.altPrio)(\"OTHERS\", _1.ParameterName);\n return (0, combi_1.seq)(name, \"=\", _1.SimpleName, (0, combi_1.optPrio)((0, combi_1.seq)(\"MESSAGE\", _1.Target)));\n }\n}\nexports.ParameterException = ParameterException;\n//# sourceMappingURL=parameter_exception.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_exception.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_exceptions.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_exceptions.js ***! + \**********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParameterListExceptions = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ParameterListExceptions extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.plus)(_1.ParameterException);\n }\n}\nexports.ParameterListExceptions = ParameterListExceptions;\n//# sourceMappingURL=parameter_list_exceptions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_exceptions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_s.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_s.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParameterListS = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ParameterListS extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.plus)(_1.ParameterS);\n }\n}\nexports.ParameterListS = ParameterListS;\n//# sourceMappingURL=parameter_list_s.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_s.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_t.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_t.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParameterListT = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ParameterListT extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.plus)(_1.ParameterT);\n }\n}\nexports.ParameterListT = ParameterListT;\n//# sourceMappingURL=parameter_list_t.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_list_t.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_name.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_name.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParameterName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass ParameterName extends combi_1.Expression {\n getRunnable() {\n // todo, think this can be reduced,\n return (0, combi_1.regex)(/^[&_!]?\\*?\\w*(\\/\\w+\\/)?\\d*[a-zA-Z_%\\$][\\w\\*%\\$\\?]*(~\\w+)?$/);\n }\n}\nexports.ParameterName = ParameterName;\n//# sourceMappingURL=parameter_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_s.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_s.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParameterS = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ParameterS extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(_1.ParameterName, \"=\", _1.Source);\n }\n}\nexports.ParameterS = ParameterS;\n//# sourceMappingURL=parameter_s.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_s.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_t.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_t.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParameterT = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ParameterT extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(_1.ParameterName, \"=\", _1.Target);\n }\n}\nexports.ParameterT = ParameterT;\n//# sourceMappingURL=parameter_t.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/parameter_t.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/pass_by_value.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/pass_by_value.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PassByValue = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass PassByValue extends combi_1.Expression {\n getRunnable() {\n const value = (0, combi_1.seq)(\"VALUE\", (0, combi_1.tok)(tokens_1.ParenLeft), _1.FormParamName, (0, combi_1.tok)(tokens_1.ParenRightW));\n return value;\n }\n}\nexports.PassByValue = PassByValue;\n//# sourceMappingURL=pass_by_value.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/pass_by_value.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_changing.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_changing.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PerformChanging = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst target_1 = __webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js\");\nclass PerformChanging extends combi_1.Expression {\n getRunnable() {\n const changing = (0, combi_1.seq)(\"CHANGING\", (0, combi_1.plus)(target_1.Target));\n return changing;\n }\n}\nexports.PerformChanging = PerformChanging;\n//# sourceMappingURL=perform_changing.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_changing.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_tables.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_tables.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PerformTables = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nclass PerformTables extends combi_1.Expression {\n getRunnable() {\n const tables = (0, combi_1.seq)(\"TABLES\", (0, combi_1.plus)(source_1.Source));\n return tables;\n }\n}\nexports.PerformTables = PerformTables;\n//# sourceMappingURL=perform_tables.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_tables.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_using.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_using.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PerformUsing = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nclass PerformUsing extends combi_1.Expression {\n getRunnable() {\n const using = (0, combi_1.seq)(\"USING\", (0, combi_1.plus)(source_1.Source));\n return using;\n }\n}\nexports.PerformUsing = PerformUsing;\n//# sourceMappingURL=perform_using.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_using.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/radio_group_name.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/radio_group_name.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RadioGroupName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass RadioGroupName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^[\\w\\d%]+$/);\n }\n}\nexports.RadioGroupName = RadioGroupName;\n//# sourceMappingURL=radio_group_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/radio_group_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/raise_with.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/raise_with.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RaiseWith = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass RaiseWith extends combi_1.Expression {\n getRunnable() {\n const wit = (0, combi_1.seq)(\"WITH\", _1.Source, (0, combi_1.opt)(_1.Source), (0, combi_1.opt)(_1.Source), (0, combi_1.opt)(_1.Source));\n return wit;\n }\n}\nexports.RaiseWith = RaiseWith;\n//# sourceMappingURL=raise_with.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/raise_with.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/read_table_target.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/read_table_target.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadTableTarget = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst fstarget_1 = __webpack_require__(/*! ./fstarget */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/fstarget.js\");\nconst target_1 = __webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js\");\nclass ReadTableTarget extends combi_1.Expression {\n getRunnable() {\n const target = (0, combi_1.altPrio)((0, combi_1.seq)(\"ASSIGNING\", fstarget_1.FSTarget), (0, combi_1.seq)((0, combi_1.optPrio)(\"REFERENCE\"), \"INTO\", target_1.Target), \"TRANSPORTING NO FIELDS\");\n return target;\n }\n}\nexports.ReadTableTarget = ReadTableTarget;\n//# sourceMappingURL=read_table_target.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/read_table_target.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/receive_parameters.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/receive_parameters.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReceiveParameters = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ReceiveParameters extends combi_1.Expression {\n getRunnable() {\n const importing = (0, combi_1.seq)(\"IMPORTING\", _1.ParameterListT);\n const tables = (0, combi_1.seq)(\"TABLES\", _1.ParameterListT);\n const changing = (0, combi_1.seq)(\"CHANGING\", _1.ParameterListT);\n const exceptions = (0, combi_1.seq)(\"EXCEPTIONS\", (0, combi_1.opt)(_1.ParameterListExceptions), (0, combi_1.opt)(_1.Field));\n const long = (0, combi_1.seq)((0, combi_1.opt)(importing), (0, combi_1.opt)(changing), (0, combi_1.opt)(tables), (0, combi_1.opt)(exceptions));\n return long;\n }\n}\nexports.ReceiveParameters = ReceiveParameters;\n//# sourceMappingURL=receive_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/receive_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/redefinition.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/redefinition.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Redefinition = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Redefinition extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.opt)(\"FINAL\"), \"REDEFINITION\");\n }\n}\nexports.Redefinition = Redefinition;\n//# sourceMappingURL=redefinition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/redefinition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_body.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_body.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReduceBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst reduce_next_1 = __webpack_require__(/*! ./reduce_next */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_next.js\");\nclass ReduceBody extends combi_1.Expression {\n getRunnable() {\n const init = (0, combi_1.seq)(\"INIT\", (0, combi_1.plus)(_1.InlineFieldDefinition));\n return (0, combi_1.seq)((0, combi_1.opt)(_1.Let), init, (0, combi_1.plus)(_1.For), reduce_next_1.ReduceNext);\n }\n}\nexports.ReduceBody = ReduceBody;\n//# sourceMappingURL=reduce_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_next.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_next.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReduceNext = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ReduceNext extends combi_1.Expression {\n getRunnable() {\n const calcAssign = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), \"=\"), (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WDash), \"=\"), \"/=\", \"*=\", \"&&=\"));\n const fields = (0, combi_1.seq)(_1.SimpleTarget, (0, combi_1.altPrio)(\"=\", calcAssign), _1.Source);\n return (0, combi_1.seq)(\"NEXT\", (0, combi_1.plus)(fields));\n }\n}\nexports.ReduceNext = ReduceNext;\n//# sourceMappingURL=reduce_next.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/reduce_next.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/report_name.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/report_name.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReportName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass ReportName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.regex)(/^[\\w/$%]+$/), (0, combi_1.star)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^\\w+$/))));\n }\n}\nexports.ReportName = ReportName;\n//# sourceMappingURL=report_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/report_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Select = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst sql_group_by_1 = __webpack_require__(/*! ./sql_group_by */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_group_by.js\");\nconst sql_into_structure_1 = __webpack_require__(/*! ./sql_into_structure */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_structure.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js\");\nconst sql_up_to_1 = __webpack_require__(/*! ./sql_up_to */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_up_to.js\");\nclass Select extends combi_1.Expression {\n getRunnable() {\n const into = (0, combi_1.altPrio)(_1.SQLIntoTable, sql_into_structure_1.SQLIntoStructure);\n const where = (0, combi_1.seq)(\"WHERE\", _1.SQLCond);\n const offset = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"OFFSET\", _1.SQLSource));\n const bypass = (0, combi_1.str)(\"BYPASSING BUFFER\");\n const fields = (0, combi_1.ver)(version_1.Version.v750, _1.SQLFields);\n const perm = (0, combi_1.per)(_1.SQLFrom, into, _1.SQLForAllEntries, where, _1.SQLOrderBy, sql_up_to_1.SQLUpTo, offset, _1.SQLClient, _1.SQLHaving, bypass, sql_group_by_1.SQLGroupBy, fields, _1.DatabaseConnection);\n const permSingle = (0, combi_1.per)(_1.SQLFrom, sql_into_structure_1.SQLIntoStructure, where, _1.SQLClient, bypass, fields, _1.DatabaseConnection);\n const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), sql_field_name_1.SQLFieldName, (0, combi_1.tok)(tokens_1.WParenRightW));\n const fieldList = (0, combi_1.optPrio)((0, combi_1.altPrio)(_1.SQLFieldList, paren));\n const single = (0, combi_1.seq)(\"SINGLE\", (0, combi_1.optPrio)(\"FOR UPDATE\"), fieldList, permSingle);\n const other = (0, combi_1.seq)((0, combi_1.optPrio)(\"DISTINCT\"), fieldList, perm);\n const ret = (0, combi_1.seq)(\"SELECT\", (0, combi_1.altPrio)(single, other), (0, combi_1.optPrio)(_1.SQLHints));\n return ret;\n }\n}\nexports.Select = Select;\n//# sourceMappingURL=select.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select_loop.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select_loop.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectLoop = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst sql_order_by_1 = __webpack_require__(/*! ./sql_order_by */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_order_by.js\");\nconst sql_having_1 = __webpack_require__(/*! ./sql_having */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_having.js\");\nconst sql_into_structure_1 = __webpack_require__(/*! ./sql_into_structure */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_structure.js\");\nconst sql_hints_1 = __webpack_require__(/*! ./sql_hints */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_hints.js\");\nconst sql_field_list_loop_1 = __webpack_require__(/*! ./sql_field_list_loop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list_loop.js\");\nconst sql_up_to_1 = __webpack_require__(/*! ./sql_up_to */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_up_to.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SelectLoop extends combi_1.Expression {\n getRunnable() {\n const where = (0, combi_1.seq)(\"WHERE\", _1.SQLCond);\n const bypass = \"BYPASSING BUFFER\";\n const pack = (0, combi_1.seq)(\"PACKAGE SIZE\", _1.SQLSource);\n const tab = (0, combi_1.seq)(_1.SQLIntoTable, (0, combi_1.alt)(pack, (0, combi_1.seq)(_1.SQLFrom, pack), (0, combi_1.seq)(pack, _1.SQLFrom)));\n const packTab = (0, combi_1.seq)(pack, _1.SQLIntoTable);\n const perm = (0, combi_1.per)(_1.SQLFrom, where, sql_up_to_1.SQLUpTo, sql_order_by_1.SQLOrderBy, sql_having_1.SQLHaving, _1.SQLClient, bypass, _1.SQLGroupBy, _1.SQLForAllEntries, (0, combi_1.alt)(tab, sql_into_structure_1.SQLIntoStructure, packTab));\n const strict = (0, combi_1.seq)(_1.SQLFrom, (0, combi_1.ver)(version_1.Version.v750, _1.SQLFields), where, sql_into_structure_1.SQLIntoStructure, sql_up_to_1.SQLUpTo);\n const ret = (0, combi_1.seq)(\"SELECT\", (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.optPrio)(\"DISTINCT\"), sql_field_list_loop_1.SQLFieldListLoop, perm), strict), (0, combi_1.optPrio)(sql_hints_1.SQLHints));\n return ret;\n }\n}\nexports.SelectLoop = SelectLoop;\n//# sourceMappingURL=select_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/select_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleFieldChain = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js\");\nclass SimpleFieldChain extends combi_1.Expression {\n getRunnable() {\n const chain = (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentName));\n const clas = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow), attribute_name_1.AttributeName);\n const start = (0, combi_1.altPrio)(clas, _1.Field);\n const ret = (0, combi_1.seq)(start, chain);\n return ret;\n }\n}\nexports.SimpleFieldChain = SimpleFieldChain;\n//# sourceMappingURL=simple_field_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain2.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain2.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleFieldChain2 = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js\");\nclass SimpleFieldChain2 extends combi_1.Expression {\n getRunnable() {\n const attr = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), attribute_name_1.AttributeName);\n const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentName);\n const chain = (0, combi_1.star)((0, combi_1.altPrio)(attr, comp));\n const clas = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow), attribute_name_1.AttributeName);\n const start = (0, combi_1.altPrio)(clas, _1.SourceField, _1.SourceFieldSymbol);\n const ret = (0, combi_1.seq)(start, chain);\n return ret;\n }\n}\nexports.SimpleFieldChain2 = SimpleFieldChain2;\n//# sourceMappingURL=simple_field_chain2.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain2.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_name.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_name.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass SimpleName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^[\\w$%]+$/);\n }\n}\nexports.SimpleName = SimpleName;\n//# sourceMappingURL=simple_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source1.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source1.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleSource1 = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SimpleSource1 extends combi_1.Expression {\n getRunnable() {\n const concat = (0, combi_1.seq)(\"&&\", _1.StringTemplate);\n const template = (0, combi_1.seq)(_1.StringTemplate, (0, combi_1.star)(concat));\n return (0, combi_1.alt)(_1.Constant, _1.TextElement, _1.MethodCallChain, template, _1.FieldChain);\n }\n}\nexports.SimpleSource1 = SimpleSource1;\n//# sourceMappingURL=simple_source1.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source1.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source2.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source2.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleSource2 = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\n/** Reduced version of SimpleSource, omits MethodCallChains. */\nclass SimpleSource2 extends combi_1.Expression {\n getRunnable() {\n const concat = (0, combi_1.seq)(\"&&\", _1.StringTemplate);\n const template = (0, combi_1.seq)(_1.StringTemplate, (0, combi_1.star)(concat));\n return (0, combi_1.altPrio)(_1.Constant, _1.TextElement, template, _1.FieldChain);\n }\n}\nexports.SimpleSource2 = SimpleSource2;\n//# sourceMappingURL=simple_source2.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source2.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source3.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source3.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleSource3 = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SimpleSource3 extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)(_1.Constant, _1.TextElement, _1.FieldChain);\n }\n}\nexports.SimpleSource3 = SimpleSource3;\n//# sourceMappingURL=simple_source3.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source3.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source4.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source4.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleSource4 = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_call_chain_1 = __webpack_require__(/*! ./method_call_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_chain.js\");\nclass SimpleSource4 extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.alt)(_1.Constant, _1.TextElement, _1.FieldChain, method_call_chain_1.MethodCallChain);\n }\n}\nexports.SimpleSource4 = SimpleSource4;\n//# sourceMappingURL=simple_source4.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source4.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_target.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_target.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleTarget = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js\");\nconst dereference_1 = __webpack_require__(/*! ./dereference */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dereference.js\");\nclass SimpleTarget extends combi_1.Expression {\n getRunnable() {\n const attr = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), attribute_name_1.AttributeName);\n const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentName);\n const something = (0, combi_1.starPrio)((0, combi_1.altPrio)(dereference_1.Dereference, attr, comp, _1.TableExpression));\n const cast = (0, combi_1.seq)((0, combi_1.altPrio)(_1.Cast, _1.NewObject), _1.Arrow, _1.FieldAll);\n const clas = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow), attribute_name_1.AttributeName);\n const start = (0, combi_1.altPrio)(cast, clas, _1.TargetField, _1.TargetFieldSymbol);\n const fields = (0, combi_1.seq)((0, combi_1.optPrio)(_1.FieldOffset), (0, combi_1.optPrio)(_1.FieldLength));\n return (0, combi_1.seq)(start, something, fields);\n }\n}\nexports.SimpleTarget = SimpleTarget;\n//# sourceMappingURL=simple_target.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_target.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Source = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst text_element_1 = __webpack_require__(/*! ./text_element */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element.js\");\nconst attribute_chain_1 = __webpack_require__(/*! ./attribute_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_chain.js\");\nconst dereference_1 = __webpack_require__(/*! ./dereference */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dereference.js\");\n// todo, COND and SWITCH are quite similar?\n// this class is used quite often, so its nice to have the differentiating tokens part of it\nclass Source extends combi_1.Expression {\n getRunnable() {\n const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentChain);\n const attr = (0, combi_1.seq)(_1.Arrow, attribute_chain_1.AttributeChain);\n const method = (0, combi_1.seq)(_1.MethodCallChain, (0, combi_1.optPrio)((0, combi_1.altPrio)(attr, comp)), (0, combi_1.optPrio)(dereference_1.Dereference));\n const rparen = (0, combi_1.tok)(tokens_1.WParenRightW);\n const rparenNoSpace = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.WParenRightW));\n // paren used for eg. \"( 2 + 1 ) * 4\"\n const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), Source, rparen);\n const after = (0, combi_1.seq)((0, combi_1.altPrio)(\"&\", \"&&\", _1.ArithOperator), Source);\n const bool = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v702, (0, combi_1.regex)(/^BOOLC$/i)), (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.regex)(/^XSDBOOL$/i))), (0, combi_1.tok)(tokens_1.ParenLeftW), _1.Cond, \")\");\n const prefix = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WPlus), \"BIT-NOT\");\n const old = (0, combi_1.seq)((0, combi_1.optPrio)(prefix), (0, combi_1.altPrio)(_1.Constant, _1.StringTemplate, text_element_1.TextElement, bool, method, (0, combi_1.seq)(_1.FieldChain, (0, combi_1.optPrio)(dereference_1.Dereference)), paren), (0, combi_1.optPrio)(after));\n const corr = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"CORRESPONDING\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.CorrespondingBody, rparen, (0, combi_1.optPrio)(after)));\n const conv = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"CONV\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ConvBody, rparenNoSpace, (0, combi_1.optPrio)(after)));\n const swit = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"SWITCH\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.SwitchBody, rparenNoSpace, (0, combi_1.optPrio)(after)));\n const value = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"VALUE\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ValueBody, rparenNoSpace, (0, combi_1.optPrio)(after)));\n const cond = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"COND\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.CondBody, rparenNoSpace, (0, combi_1.optPrio)(after)));\n const reff = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"REF\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, (0, combi_1.optPrio)(\"OPTIONAL\"), rparen));\n const exact = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"EXACT\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, rparen, (0, combi_1.optPrio)(after)));\n const filter = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)(\"FILTER\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.FilterBody, rparen));\n const reduce = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)(\"REDUCE\", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ReduceBody, rparen, (0, combi_1.optPrio)(after)));\n const prefix1 = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WDashW), (0, combi_1.tok)(tokens_1.WPlusW));\n const ret = (0, combi_1.seq)((0, combi_1.starPrio)(prefix1), (0, combi_1.altPrio)(filter, reff, corr, conv, value, cond, exact, swit, reduce, old));\n return ret;\n }\n}\nexports.Source = Source;\n//# sourceMappingURL=source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SourceField = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SourceField extends combi_1.Expression {\n getRunnable() {\n return new _1.Field();\n }\n}\nexports.SourceField = SourceField;\n//# sourceMappingURL=source_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field_symbol.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field_symbol.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SourceFieldSymbol = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SourceFieldSymbol extends combi_1.Expression {\n getRunnable() {\n return new _1.FieldSymbol();\n }\n}\nexports.SourceFieldSymbol = SourceFieldSymbol;\n//# sourceMappingURL=source_field_symbol.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source_field_symbol.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_aggregation.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_aggregation.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLAggregation = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nconst sql_arithmetics_1 = __webpack_require__(/*! ./sql_arithmetics */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetics.js\");\nclass SQLAggregation extends combi_1.Expression {\n getRunnable() {\n const f = (0, combi_1.seq)((0, combi_1.optPrio)(\"DISTINCT\"), (0, combi_1.altPrio)(sql_arithmetics_1.SQLArithmetics, dynamic_1.Dynamic, _1.SQLFunction));\n const fparen = (0, combi_1.seq)(\"(\", _1.Field, \")\");\n const count = (0, combi_1.seq)(\"COUNT\", (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.ParenLeftW)), (0, combi_1.optPrio)(\"DISTINCT\"), (0, combi_1.altPrio)(\"*\", _1.Field, fparen), \")\");\n const max = (0, combi_1.seq)(\"MAX\", (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.ParenLeftW)), f, \")\");\n const min = (0, combi_1.seq)(\"MIN\", (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.ParenLeftW)), f, \")\");\n const sum = (0, combi_1.seq)(\"SUM\", (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.ParenLeftW)), f, \")\");\n const avg = (0, combi_1.seq)(\"AVG\", (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.ParenLeftW)), f, \")\");\n return (0, combi_1.altPrio)(count, max, min, sum, avg);\n }\n}\nexports.SQLAggregation = SQLAggregation;\n//# sourceMappingURL=sql_aggregation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_aggregation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_alias_field.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_alias_field.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLAliasField = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass SQLAliasField extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^(\\/\\w+\\/)?\\w+~\\w+$/);\n }\n}\nexports.SQLAliasField = SQLAliasField;\n//# sourceMappingURL=sql_alias_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_alias_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetic_operator.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetic_operator.js ***! + \********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLArithmeticOperator = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass SQLArithmeticOperator extends combi_1.Expression {\n getRunnable() {\n const operator = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WPlusW), (0, combi_1.tok)(tokens_1.WDashW), \"*\", \"/\");\n return operator;\n }\n}\nexports.SQLArithmeticOperator = SQLArithmeticOperator;\n//# sourceMappingURL=sql_arithmetic_operator.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetic_operator.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetics.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetics.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLArithmetics = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst sql_arithmetic_operator_1 = __webpack_require__(/*! ./sql_arithmetic_operator */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetic_operator.js\");\nclass SQLArithmetics extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.alt)(_1.SQLFieldName, _1.SQLFunction);\n return (0, combi_1.seq)(field, (0, combi_1.starPrio)((0, combi_1.seq)(sql_arithmetic_operator_1.SQLArithmeticOperator, field)));\n }\n}\nexports.SQLArithmetics = SQLArithmetics;\n//# sourceMappingURL=sql_arithmetics.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetics.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_as_name.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_as_name.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLAsName = void 0;\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass SQLAsName extends combi_1.Expression {\n getRunnable() {\n // todo, below allows too much?\n const field = (0, combi_1.regex)(/^[&_!]?\\*?\\w*(\\/\\w+\\/)?\\d*[a-zA-Z_%\\$][\\w\\*%\\$\\?]*(~\\w+)?$/);\n return (0, combi_1.seq)(field, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), field)));\n }\n}\nexports.SQLAsName = SQLAsName;\n//# sourceMappingURL=sql_as_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_as_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_case.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_case.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLCase = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst constant_1 = __webpack_require__(/*! ./constant */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant.js\");\nconst sql_cond_1 = __webpack_require__(/*! ./sql_cond */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cond.js\");\nconst sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js\");\nconst sql_source_1 = __webpack_require__(/*! ./sql_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js\");\nclass SQLCase extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.altPrio)(_1.SQLAggregation, SQLCase, _1.SQLFunction, _1.SQLPath, sql_field_name_1.SQLFieldName, constant_1.Constant);\n const sub = (0, combi_1.seq)((0, combi_1.altPrio)(\"+\", \"-\", \"*\", \"/\", \"&&\"), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenLeftW)), field, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));\n const when = (0, combi_1.seq)(\"WHEN\", (0, combi_1.alt)(constant_1.Constant, sql_cond_1.SQLCond), \"THEN\", (0, combi_1.altPrio)(_1.SQLAggregation, _1.SQLFunction, sql_source_1.SQLSource), (0, combi_1.starPrio)(sub));\n const els = (0, combi_1.seq)(\"ELSE\", sql_source_1.SQLSource);\n return (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"CASE\", (0, combi_1.opt)(sql_field_name_1.SQLFieldName), (0, combi_1.plus)(when), (0, combi_1.optPrio)(els), \"END\"));\n }\n}\nexports.SQLCase = SQLCase;\n//# sourceMappingURL=sql_case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cds_parameters.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cds_parameters.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLCDSParameters = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_chain.js\");\nclass SQLCDSParameters extends combi_1.Expression {\n getRunnable() {\n const param = (0, combi_1.seq)(_1.Field, \"=\", (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), field_chain_1.FieldChain), _1.Constant));\n return (0, combi_1.seq)(\"(\", param, (0, combi_1.starPrio)((0, combi_1.seq)(\",\", param)), \")\");\n }\n}\nexports.SQLCDSParameters = SQLCDSParameters;\n//# sourceMappingURL=sql_cds_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cds_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_client.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_client.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLClient = void 0;\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst sql_source_simple_1 = __webpack_require__(/*! ./sql_source_simple */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source_simple.js\");\nclass SQLClient extends combi_1.Expression {\n getRunnable() {\n const client = (0, combi_1.alt)((0, combi_1.verNot)(version_1.Version.Cloud, \"CLIENT SPECIFIED\"), (0, combi_1.seq)(\"USING\", (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"CLIENT\", sql_source_simple_1.SQLSourceSimple)), (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)(\"CLIENTS IN\", (0, combi_1.alt)(sql_source_simple_1.SQLSourceSimple, \"T000\"))), (0, combi_1.ver)(version_1.Version.v754, \"ALL CLIENTS\"))));\n return client;\n }\n}\nexports.SQLClient = SQLClient;\n//# sourceMappingURL=sql_client.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_client.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLCompare = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SQLCompare extends combi_1.Expression {\n getRunnable() {\n const subSelect = (0, combi_1.seq)(\"(\", _1.Select, \")\");\n const between = (0, combi_1.seq)(\"BETWEEN\", _1.SQLSource, \"AND\", _1.SQLSource);\n const like = (0, combi_1.seq)(\"LIKE\", _1.SQLSource, (0, combi_1.optPrio)((0, combi_1.seq)(\"ESCAPE\", _1.SQLSource)));\n const nul = (0, combi_1.seq)(\"IS\", (0, combi_1.optPrio)(\"NOT\"), (0, combi_1.altPrio)(\"NULL\", (0, combi_1.ver)(version_1.Version.v753, \"INITIAL\")));\n const source = new _1.SQLSource();\n const sub = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)(\"ALL\", \"ANY\", \"SOME\")), subSelect);\n const arith = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)(\"+\", \"-\", \"*\", \"/\"), _1.SQLFieldName)));\n const rett = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLFunction, (0, combi_1.seq)(_1.SQLFieldName, (0, combi_1.optPrio)(arith))), (0, combi_1.altPrio)((0, combi_1.seq)(_1.SQLCompareOperator, (0, combi_1.altPrio)(sub, source)), (0, combi_1.seq)((0, combi_1.optPrio)(\"NOT\"), (0, combi_1.altPrio)(_1.SQLIn, like, between)), nul));\n const exists = (0, combi_1.seq)(\"EXISTS\", subSelect);\n return (0, combi_1.altPrio)(exists, _1.Dynamic, rett);\n }\n}\nexports.SQLCompare = SQLCompare;\n//# sourceMappingURL=sql_compare.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare_operator.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare_operator.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLCompareOperator = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass SQLCompareOperator extends combi_1.Expression {\n getRunnable() {\n const operator = (0, combi_1.altPrio)(\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"EQ\", \"NE\", \"GE\", \"GT\", \"LT\", \"LE\", \"><\", \"=>\");\n return operator;\n }\n}\nexports.SQLCompareOperator = SQLCompareOperator;\n//# sourceMappingURL=sql_compare_operator.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_compare_operator.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cond.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cond.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLCond = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLCond extends combi_1.Expression {\n getRunnable() {\n const operator = (0, combi_1.altPrio)(\"AND\", \"OR\");\n const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), SQLCond, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.ParenRightW)));\n const cnd = (0, combi_1.seq)((0, combi_1.optPrio)(\"NOT\"), (0, combi_1.altPrio)(_1.SQLCompare, paren));\n const ret = (0, combi_1.seq)(cnd, (0, combi_1.starPrio)((0, combi_1.seq)(operator, cnd)));\n return ret;\n }\n}\nexports.SQLCond = SQLCond;\n//# sourceMappingURL=sql_cond.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_cond.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLField = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst sql_function_1 = __webpack_require__(/*! ./sql_function */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function.js\");\nconst simple_field_chain_1 = __webpack_require__(/*! ./simple_field_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain.js\");\nconst sql_path_1 = __webpack_require__(/*! ./sql_path */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_path.js\");\nclass SQLField extends combi_1.Expression {\n getRunnable() {\n const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), simple_field_chain_1.SimpleFieldChain));\n const as = (0, combi_1.seq)(\"AS\", _1.SQLAsName);\n const field = (0, combi_1.altPrio)(_1.SQLAggregation, _1.SQLCase, sql_function_1.SQLFunction, sql_path_1.SQLPath, _1.SQLFieldName, abap, _1.Constant);\n const sub = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)(\"+\", \"-\", \"*\", \"/\", \"&&\"), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenLeftW)), field, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));\n const arith = (0, combi_1.ver)(version_1.Version.v740sp05, sub);\n return (0, combi_1.seq)(field, (0, combi_1.optPrio)(arith), (0, combi_1.optPrio)(as));\n }\n}\nexports.SQLField = SQLField;\n//# sourceMappingURL=sql_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_and_value.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_and_value.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFieldAndValue = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst integer_1 = __webpack_require__(/*! ./integer */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js\");\nconst sql_arithmetic_operator_1 = __webpack_require__(/*! ./sql_arithmetic_operator */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_arithmetic_operator.js\");\nconst sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js\");\nconst sql_source_1 = __webpack_require__(/*! ./sql_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js\");\nclass SQLFieldAndValue extends combi_1.Expression {\n getRunnable() {\n const opt1 = (0, combi_1.seq)((0, combi_1.altPrio)(integer_1.Integer, sql_field_name_1.SQLFieldName), sql_arithmetic_operator_1.SQLArithmeticOperator, sql_source_1.SQLSource);\n const param = (0, combi_1.seq)(sql_field_name_1.SQLFieldName, \"=\", (0, combi_1.altPrio)(opt1, sql_source_1.SQLSource));\n return param;\n }\n}\nexports.SQLFieldAndValue = SQLFieldAndValue;\n//# sourceMappingURL=sql_field_and_value.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_and_value.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFieldList = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SQLFieldList extends combi_1.Expression {\n getRunnable() {\n const nev = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.starPrio)((0, combi_1.seq)(\",\", _1.SQLField)));\n const old = (0, combi_1.starPrio)(_1.SQLField);\n return (0, combi_1.altPrio)(\"*\", _1.Dynamic, (0, combi_1.seq)(_1.SQLField, (0, combi_1.alt)(nev, old)));\n }\n}\nexports.SQLFieldList = SQLFieldList;\n//# sourceMappingURL=sql_field_list.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list_loop.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list_loop.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFieldListLoop = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst sql_path_1 = __webpack_require__(/*! ./sql_path */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_path.js\");\n// loop must include one field from the database table\nclass SQLFieldListLoop extends combi_1.Expression {\n getRunnable() {\n const comma = (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp05, \",\"));\n const as = (0, combi_1.seq)(\"AS\", _1.SQLAsName);\n const someField = (0, combi_1.seq)(_1.SQLField, comma);\n const fieldList = (0, combi_1.seq)((0, combi_1.star)(someField), (0, combi_1.alt)(_1.SQLFieldName, sql_path_1.SQLPath, _1.Constant), (0, combi_1.optPrio)(as), comma, (0, combi_1.star)(someField));\n const fields = (0, combi_1.alt)(\"*\", _1.Dynamic, fieldList);\n return fields;\n }\n}\nexports.SQLFieldListLoop = SQLFieldListLoop;\n//# sourceMappingURL=sql_field_list_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_list_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFieldName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass SQLFieldName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^(?!(?:SINGLE|INTO|DISTINCT|AS|WHERE|FOR|HAVING|APPENDING|UP|FROM)$)(\\/\\w+\\/)?(\\w+~(\\w+|\\*)|\\w+)$/i);\n }\n}\nexports.SQLFieldName = SQLFieldName;\n//# sourceMappingURL=sql_field_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_fields.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_fields.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFields = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLFields extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"FIELDS\", _1.SQLFieldList);\n }\n}\nexports.SQLFields = SQLFields;\n//# sourceMappingURL=sql_fields.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_fields.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_for_all_entries.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_for_all_entries.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLForAllEntries = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst sql_source_1 = __webpack_require__(/*! ./sql_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js\");\nclass SQLForAllEntries extends combi_1.Expression {\n getRunnable() {\n const forAll = (0, combi_1.seq)(\"FOR ALL ENTRIES IN\", sql_source_1.SQLSource);\n return forAll;\n }\n}\nexports.SQLForAllEntries = SQLForAllEntries;\n//# sourceMappingURL=sql_for_all_entries.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_for_all_entries.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFrom = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLFrom extends combi_1.Expression {\n getRunnable() {\n const from = (0, combi_1.seq)(\"FROM\", (0, combi_1.starPrio)((0, combi_1.tok)(tokens_1.WParenLeftW)), _1.SQLFromSource);\n const source = (0, combi_1.seq)(from, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), _1.SQLJoin, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)))));\n return source;\n }\n}\nexports.SQLFrom = SQLFrom;\n//# sourceMappingURL=sql_from.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from_source.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from_source.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFromSource = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst with_name_1 = __webpack_require__(/*! ./with_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/with_name.js\");\nclass SQLFromSource extends combi_1.Expression {\n getRunnable() {\n // https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-752-open_sql.htm#!ABAP_MODIFICATION_1@1@\n const tab = (0, combi_1.ver)(version_1.Version.v752, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.FieldChain));\n const aas = (0, combi_1.seq)(\"AS\", _1.SQLAsName);\n return (0, combi_1.seq)((0, combi_1.altPrio)(with_name_1.WithName, (0, combi_1.seq)(_1.DatabaseTable, (0, combi_1.optPrio)(_1.SQLCDSParameters)), tab), (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Version.v752, \"WITH PRIVILEGED ACCESS\")), (0, combi_1.optPrio)(aas));\n }\n}\nexports.SQLFromSource = SQLFromSource;\n//# sourceMappingURL=sql_from_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFunction = void 0;\nconst constant_1 = __webpack_require__(/*! ./constant */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/constant.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst integer_1 = __webpack_require__(/*! ./integer */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/integer.js\");\nconst sql_alias_field_1 = __webpack_require__(/*! ./sql_alias_field */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_alias_field.js\");\nconst sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js\");\nconst simple_source3_1 = __webpack_require__(/*! ./simple_source3 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source3.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nconst sql_aggregation_1 = __webpack_require__(/*! ./sql_aggregation */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_aggregation.js\");\nclass SQLFunction extends combi_1.Expression {\n getRunnable() {\n const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), source_1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));\n const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.alt)(simple_source3_1.SimpleSource3, paren)));\n const param = (0, combi_1.alt)(sql_field_name_1.SQLFieldName, sql_alias_field_1.SQLAliasField, SQLFunction, constant_1.Constant, sql_aggregation_1.SQLAggregation, at);\n const castTypes = (0, combi_1.altPrio)((0, combi_1.seq)(\"CHAR\", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.seq)(\"DEC\", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, \",\", integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), \"FLTP\", \"NUMC\", \"INT8\");\n const abs = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"abs\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const cast = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"cast\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, \"AS\", castTypes, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const ceil = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"ceil\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const coalesce = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"coalesce\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, \",\", param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const concat = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"concat\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, \",\", param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const div = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"div\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, \",\", param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const floor = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"floor\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const length = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"length\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const lower = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"lower\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const mod = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"mod\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, \",\", param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const replace = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"replace\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, \",\", param, \",\", param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const round = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"round\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, \",\", param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const upper = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"upper\", (0, combi_1.tok)(tokens_1.ParenLeftW), param, (0, combi_1.tok)(tokens_1.WParenRightW)));\n const uuid = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)(\"uuid\", (0, combi_1.tok)(tokens_1.ParenLeftW), (0, combi_1.tok)(tokens_1.WParenRightW)));\n return (0, combi_1.altPrio)(uuid, abs, ceil, floor, cast, div, mod, coalesce, concat, replace, length, lower, upper, round);\n }\n}\nexports.SQLFunction = SQLFunction;\n//# sourceMappingURL=sql_function.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_group_by.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_group_by.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLGroupBy = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nconst sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js\");\nclass SQLGroupBy extends combi_1.Expression {\n getRunnable() {\n const f = (0, combi_1.alt)(sql_field_name_1.SQLFieldName, dynamic_1.Dynamic);\n const strict = (0, combi_1.seq)((0, combi_1.plus)((0, combi_1.seq)(f, \",\")), f);\n const group = (0, combi_1.seq)(\"GROUP BY\", (0, combi_1.altPrio)(strict, (0, combi_1.plus)(f)));\n return group;\n }\n}\nexports.SQLGroupBy = SQLGroupBy;\n//# sourceMappingURL=sql_group_by.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_group_by.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_having.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_having.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLHaving = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nclass SQLHaving extends combi_1.Expression {\n getRunnable() {\n const having = (0, combi_1.seq)(\"HAVING\", dynamic_1.Dynamic);\n return having;\n }\n}\nexports.SQLHaving = SQLHaving;\n//# sourceMappingURL=sql_having.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_having.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_hints.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_hints.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLHints = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLHints extends combi_1.Expression {\n getRunnable() {\n const type = (0, combi_1.altPrio)(\"ORACLE\", \"ADABAS\", \"AS400\", \"DB2\", \"HDB\", \"MSSQLNT\", \"SYBASE\", \"DB6\");\n const ret = (0, combi_1.seq)(\"%_HINTS\", (0, combi_1.plus)((0, combi_1.seq)(type, _1.Constant)));\n return ret;\n }\n}\nexports.SQLHints = SQLHints;\n//# sourceMappingURL=sql_hints.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_hints.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_in.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_in.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLIn = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SQLIn extends combi_1.Expression {\n getRunnable() {\n const val = new _1.SQLSource();\n const short = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.At), _1.SimpleSource3);\n const listOld = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp05, short), val), (0, combi_1.starPrio)((0, combi_1.seq)(\",\", val)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRight), (0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.WParenRightW)));\n const listNew = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), val, (0, combi_1.starPrio)((0, combi_1.seq)(\",\", (0, combi_1.altPrio)(short, val))), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRight), (0, combi_1.tok)(tokens_1.WParenRightW)));\n const list = (0, combi_1.alt)(listOld, (0, combi_1.ver)(version_1.Version.v740sp02, listNew)); // version is a guess, https://github.com/abaplint/abaplint/issues/2530\n const subSelect = (0, combi_1.seq)(\"(\", _1.Select, \")\");\n const inn = (0, combi_1.seq)(\"IN\", (0, combi_1.altPrio)(_1.SQLSource, list, subSelect));\n return inn;\n }\n}\nexports.SQLIn = SQLIn;\n//# sourceMappingURL=sql_in.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_in.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_structure.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_structure.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLIntoStructure = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst paren_left_1 = __webpack_require__(/*! ../../1_lexer/tokens/paren_left */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/paren_left.js\");\nclass SQLIntoStructure extends combi_1.Expression {\n getRunnable() {\n const intoList = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.tok)(paren_left_1.WParenLeft), (0, combi_1.tok)(paren_left_1.WParenLeftW)), (0, combi_1.starPrio)((0, combi_1.seq)(_1.SQLTarget, \",\")), _1.SQLTarget, \")\");\n const intoSimple = (0, combi_1.seq)((0, combi_1.optPrio)(\"CORRESPONDING FIELDS OF\"), _1.SQLTarget);\n return (0, combi_1.seq)(\"INTO\", (0, combi_1.altPrio)(intoList, intoSimple));\n }\n}\nexports.SQLIntoStructure = SQLIntoStructure;\n//# sourceMappingURL=sql_into_structure.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_structure.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_table.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_table.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLIntoTable = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLIntoTable extends combi_1.Expression {\n getRunnable() {\n const into = (0, combi_1.seq)((0, combi_1.altPrio)(\"INTO\", \"APPENDING\"), (0, combi_1.optPrio)(\"CORRESPONDING FIELDS OF\"), \"TABLE\", _1.SQLTarget);\n return into;\n }\n}\nexports.SQLIntoTable = SQLIntoTable;\n//# sourceMappingURL=sql_into_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_join.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_join.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLJoin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLJoin extends combi_1.Expression {\n getRunnable() {\n const joinType = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)(\"INNER\", \"LEFT OUTER\", \"LEFT\")), \"JOIN\");\n const join = (0, combi_1.seq)(joinType, _1.SQLFromSource, \"ON\", _1.SQLCond);\n return join;\n }\n}\nexports.SQLJoin = SQLJoin;\n//# sourceMappingURL=sql_join.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_join.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_order_by.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_order_by.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLOrderBy = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nconst sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_field_name.js\");\nclass SQLOrderBy extends combi_1.Expression {\n getRunnable() {\n const ding = (0, combi_1.alt)(\"ASCENDING\", \"DESCENDING\");\n const ofields = (0, combi_1.plus)((0, combi_1.seq)(sql_field_name_1.SQLFieldName, (0, combi_1.opt)(ding), (0, combi_1.opt)(\",\")));\n const order = (0, combi_1.seq)(\"ORDER BY\", (0, combi_1.altPrio)(\"PRIMARY KEY\", dynamic_1.Dynamic, ofields));\n return order;\n }\n}\nexports.SQLOrderBy = SQLOrderBy;\n//# sourceMappingURL=sql_order_by.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_order_by.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_path.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_path.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLPath = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass SQLPath extends combi_1.Expression {\n getRunnable() {\n // todo, only from version?\n const ret = (0, combi_1.seq)((0, combi_1.regex)(/\\\\_\\w+/), (0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/\\w+/));\n return ret;\n }\n}\nexports.SQLPath = SQLPath;\n//# sourceMappingURL=sql_path.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_path.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLSource = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLSource extends combi_1.Expression {\n getRunnable() {\n const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));\n const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleSource3, paren)));\n return (0, combi_1.alt)(_1.SQLAliasField, _1.SimpleSource3, at);\n }\n}\nexports.SQLSource = SQLSource;\n//# sourceMappingURL=sql_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source_simple.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source_simple.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLSourceSimple = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\n// todo, delete this expression, its the same as SQLSource?\nclass SQLSourceSimple extends combi_1.Expression {\n getRunnable() {\n const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));\n const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.alt)(_1.SimpleSource3, paren)));\n return (0, combi_1.alt)(_1.SimpleSource3, at);\n }\n}\nexports.SQLSourceSimple = SQLSourceSimple;\n//# sourceMappingURL=sql_source_simple.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source_simple.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_target.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_target.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLTarget = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SQLTarget extends combi_1.Expression {\n getRunnable() {\n const n = (0, combi_1.ver)(version_1.Version.v754, \"NEW\");\n const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.opt)(n), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.tok)(tokens_1.At)), _1.Target));\n return (0, combi_1.altPrio)(at, _1.Target);\n }\n}\nexports.SQLTarget = SQLTarget;\n//# sourceMappingURL=sql_target.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_target.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_up_to.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_up_to.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLUpTo = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst sql_source_1 = __webpack_require__(/*! ./sql_source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js\");\nclass SQLUpTo extends combi_1.Expression {\n getRunnable() {\n const up = (0, combi_1.seq)(\"UP TO\", sql_source_1.SQLSource, \"ROWS\");\n return up;\n }\n}\nexports.SQLUpTo = SQLUpTo;\n//# sourceMappingURL=sql_up_to.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_up_to.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StringTemplate = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Tokens = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass StringTemplate extends combi_1.Expression {\n getRunnable() {\n const nest = (0, combi_1.seq)((0, combi_1.tok)(Tokens.StringTemplateBegin), _1.StringTemplateSource, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(Tokens.StringTemplateMiddle), _1.StringTemplateSource)), (0, combi_1.tok)(Tokens.StringTemplateEnd));\n return (0, combi_1.ver)(version_1.Version.v702, (0, combi_1.altPrio)(nest, (0, combi_1.tok)(Tokens.StringTemplate)));\n }\n}\nexports.StringTemplate = StringTemplate;\n//# sourceMappingURL=string_template.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_formatting.js": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_formatting.js ***! + \***********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StringTemplateFormatting = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dynamic.js\");\nclass StringTemplateFormatting extends combi_1.Expression {\n getRunnable() {\n // https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abapcompute_string_format_options.htm\n const alphaOptions = (0, combi_1.altPrio)(\"OUT\", \"RAW\", \"IN\", _1.Source);\n const alignOptions = (0, combi_1.altPrio)(\"LEFT\", \"RIGHT\", \"CENTER\", _1.Source);\n const dateTimeOptions = (0, combi_1.altPrio)(\"RAW\", \"ISO\", \"USER\", \"ENVIRONMENT\", _1.Source, dynamic_1.Dynamic);\n const timeStampOptions = (0, combi_1.altPrio)(\"SPACE\", \"ISO\", \"USER\", \"ENVIRONMENT\", _1.Source);\n const numberOptions = (0, combi_1.altPrio)(\"RAW\", \"USER\", \"ENVIRONMENT\", _1.Source);\n const signOptions = (0, combi_1.altPrio)(\"LEFT\", \"LEFTPLUS\", \"LEFTSPACE\", \"RIGHT\", \"RIGHTPLUS\", \"RIGHTSPACE\", _1.Source);\n const caseOptions = (0, combi_1.altPrio)(\"RAW\", \"UPPER\", \"LOWER\", _1.Source, dynamic_1.Dynamic);\n const zeroXSDOptions = (0, combi_1.altPrio)(\"YES\", \"NO\", _1.Source);\n const styleOptions = (0, combi_1.altPrio)(\"SIMPLE\", \"SIGN_AS_POSTFIX\", \"SCALE_PRESERVING\", \"SCIENTIFIC\", \"SCIENTIFIC_WITH_LEADING_ZERO\", \"SCALE_PRESERVING_SCIENTIFIC\", \"ENGINEERING\", _1.Source);\n const width = (0, combi_1.seq)(\"WIDTH =\", _1.Source);\n const align = (0, combi_1.seq)(\"ALIGN =\", alignOptions);\n const timezone = (0, combi_1.seq)(\"TIMEZONE =\", _1.Source);\n const timestamp = (0, combi_1.seq)(\"TIMESTAMP =\", timeStampOptions);\n const pad = (0, combi_1.seq)(\"PAD =\", _1.Source);\n const number = (0, combi_1.seq)(\"NUMBER =\", numberOptions);\n const sign = (0, combi_1.seq)(\"SIGN =\", signOptions);\n const decimals = (0, combi_1.seq)(\"DECIMALS =\", _1.Source);\n const alpha = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"ALPHA =\", alphaOptions));\n const xsd = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)(\"XSD =\", zeroXSDOptions));\n const formatting = (0, combi_1.altPrio)((0, combi_1.seq)(\"TIME =\", dateTimeOptions), (0, combi_1.seq)(\"DATE =\", dateTimeOptions), (0, combi_1.seq)(\"CASE =\", caseOptions), (0, combi_1.seq)(\"EXPONENT\", _1.Source), (0, combi_1.seq)(\"ZERO =\", zeroXSDOptions), xsd, (0, combi_1.seq)(\"STYLE =\", styleOptions), (0, combi_1.seq)(\"CURRENCY =\", _1.Source), (0, combi_1.seq)(\"COUNTRY =\", _1.Source), (0, combi_1.per)(sign, number, decimals, width, pad, alpha, align), (0, combi_1.per)(timezone, timestamp));\n return formatting;\n }\n}\nexports.StringTemplateFormatting = StringTemplateFormatting;\n//# sourceMappingURL=string_template_formatting.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_formatting.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_source.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_source.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StringTemplateSource = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass StringTemplateSource extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)(_1.Source, (0, combi_1.optPrio)(_1.StringTemplateFormatting));\n return ret;\n }\n}\nexports.StringTemplateSource = StringTemplateSource;\n//# sourceMappingURL=string_template_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/string_template_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/super_class_name.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/super_class_name.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SuperClassName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SuperClassName extends combi_1.Expression {\n getRunnable() {\n return new _1.ClassName();\n }\n}\nexports.SuperClassName = SuperClassName;\n//# sourceMappingURL=super_class_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/super_class_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/switch_body.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/switch_body.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SwitchBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SwitchBody extends combi_1.Expression {\n getRunnable() {\n const or = (0, combi_1.seq)(\"OR\", _1.Source);\n const swhen = (0, combi_1.seq)(\"WHEN\", _1.Source, (0, combi_1.star)(or), \"THEN\", (0, combi_1.alt)(_1.Source, _1.Throw));\n return (0, combi_1.seq)((0, combi_1.opt)(_1.Let), _1.Source, (0, combi_1.plus)(swhen), (0, combi_1.opt)((0, combi_1.seq)(\"ELSE\", (0, combi_1.alt)(_1.Source, _1.Throw))));\n }\n}\nexports.SwitchBody = SwitchBody;\n//# sourceMappingURL=switch_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/switch_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TableBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass TableBody extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.BracketLeft), (0, combi_1.tok)(tokens_1.BracketRightW));\n return ret;\n }\n}\nexports.TableBody = TableBody;\n//# sourceMappingURL=table_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_expression.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_expression.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TableExpression = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TableExpression extends combi_1.Expression {\n getRunnable() {\n const fields = (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.altPrio)(_1.ComponentChainSimple, _1.Dynamic), \"=\", _1.Source));\n const key = (0, combi_1.seq)(\"KEY\", _1.SimpleName);\n const index = (0, combi_1.seq)(\"INDEX\", _1.Source);\n const ret = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.BracketLeftW), (0, combi_1.alt)(_1.Source, (0, combi_1.seq)((0, combi_1.optPrio)(key), (0, combi_1.opt)(\"COMPONENTS\"), (0, combi_1.altPrio)(fields, index))), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WBracketRight), (0, combi_1.tok)(tokens_1.WBracketRightW)));\n return (0, combi_1.ver)(version_1.Version.v740sp02, ret);\n }\n}\nexports.TableExpression = TableExpression;\n//# sourceMappingURL=table_expression.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_expression.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Target = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/attribute_name.js\");\nconst dereference_1 = __webpack_require__(/*! ./dereference */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/dereference.js\");\nclass Target extends combi_1.Expression {\n getRunnable() {\n const attr = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.InstanceArrow), attribute_name_1.AttributeName);\n const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentName);\n const something = (0, combi_1.starPrio)((0, combi_1.altPrio)(dereference_1.Dereference, attr, comp, _1.TableExpression));\n const cast = (0, combi_1.seq)((0, combi_1.altPrio)(_1.Cast, _1.NewObject), _1.Arrow, _1.FieldAll);\n const clas = (0, combi_1.seq)(_1.ClassName, (0, combi_1.tok)(tokens_1.StaticArrow), attribute_name_1.AttributeName);\n const start = (0, combi_1.altPrio)(cast, clas, _1.TargetField, _1.TargetFieldSymbol);\n const fields = (0, combi_1.seq)((0, combi_1.optPrio)(_1.FieldOffset), (0, combi_1.optPrio)(_1.FieldLength));\n const optional = (0, combi_1.altPrio)(_1.TableBody, fields);\n return (0, combi_1.altPrio)(_1.InlineData, _1.InlineFS, (0, combi_1.seq)(start, something, optional));\n }\n}\nexports.Target = Target;\n//# sourceMappingURL=target.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TargetField = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TargetField extends combi_1.Expression {\n getRunnable() {\n return new _1.Field();\n }\n}\nexports.TargetField = TargetField;\n//# sourceMappingURL=target_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field_symbol.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field_symbol.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TargetFieldSymbol = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TargetFieldSymbol extends combi_1.Expression {\n getRunnable() {\n return new _1.FieldSymbol();\n }\n}\nexports.TargetFieldSymbol = TargetFieldSymbol;\n//# sourceMappingURL=target_field_symbol.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target_field_symbol.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/test_seam_name.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/test_seam_name.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TestSeamName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass TestSeamName extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)((0, combi_1.regex)(/^[\\w%\\$\\*]+$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\\w%\\$\\*]+$/))));\n return ret;\n }\n}\nexports.TestSeamName = TestSeamName;\n//# sourceMappingURL=test_seam_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/test_seam_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TextElement = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TextElement extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"TEXT\", (0, combi_1.tok)(tokens_1.Dash), _1.TextElementKey);\n }\n}\nexports.TextElement = TextElement;\n//# sourceMappingURL=text_element.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_key.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_key.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TextElementKey = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass TextElementKey extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^\\w{3}$/);\n }\n}\nexports.TextElementKey = TextElementKey;\n//# sourceMappingURL=text_element_key.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_key.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_string.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_string.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TextElementString = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TextElementString extends combi_1.Expression {\n getRunnable() {\n const text = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), _1.TextElementKey, (0, combi_1.tok)(tokens_1.ParenRightW));\n const stri = (0, combi_1.seq)((0, combi_1.regex)(/^('.*')|(`.*`)$/), text);\n return stri;\n }\n}\nexports.TextElementString = TextElementString;\n//# sourceMappingURL=text_element_string.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/text_element_string.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/throw.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/throw.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Throw = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass Throw extends combi_1.Expression {\n getRunnable() {\n // todo, MESSAGE\n return (0, combi_1.seq)(\"THROW\", (0, combi_1.opt)(\"RESUMABLE\"), _1.ClassName, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeftW), (0, combi_1.tok)(tokens_1.ParenLeft)), (0, combi_1.opt)((0, combi_1.alt)(_1.Source, _1.ParameterListS)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.ParenRightW)));\n }\n}\nexports.Throw = Throw;\n//# sourceMappingURL=throw.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/throw.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Type = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Type extends combi_1.Expression {\n getRunnable() {\n const typeType = (0, combi_1.seq)(_1.TypeName, (0, combi_1.optPrio)(_1.Default));\n const like = (0, combi_1.altPrio)((0, combi_1.seq)(\"LINE OF\", _1.FieldChain), (0, combi_1.seq)(\"REF TO\", _1.FieldChain), _1.FieldChain);\n const type = (0, combi_1.altPrio)((0, combi_1.seq)(\"LINE OF\", typeType), (0, combi_1.seq)(\"REF TO\", typeType), typeType);\n const ret = (0, combi_1.altPrio)((0, combi_1.seq)(\"LIKE\", like), (0, combi_1.seq)(\"TYPE\", type));\n return ret;\n }\n}\nexports.Type = Type;\n//# sourceMappingURL=type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeName = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\n// todo, can this be replaced with one of the FieldChain expressions?\nclass TypeName extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.regex)(/^[\\w~\\/%$]+$/);\n const cla = (0, combi_1.seq)(name, (0, combi_1.alt)((0, combi_1.tok)(tokens_1.StaticArrow), (0, combi_1.tok)(tokens_1.InstanceArrow)));\n const field = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), name);\n return (0, combi_1.seq)((0, combi_1.opt)(cla), name, (0, combi_1.starPrio)(field));\n }\n}\nexports.TypeName = TypeName;\n//# sourceMappingURL=type_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name_or_infer.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name_or_infer.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeNameOrInfer = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TypeNameOrInfer extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.altPrio)(\"#\", _1.TypeName);\n }\n}\nexports.TypeNameOrInfer = TypeNameOrInfer;\n//# sourceMappingURL=type_name_or_infer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_name_or_infer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_param.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_param.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeParam = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TypeParam extends combi_1.Expression {\n getRunnable() {\n const table = (0, combi_1.seq)((0, combi_1.altPrio)(\"STANDARD\", \"HASHED\", \"INDEX\", \"SORTED\", \"ANY\"), \"TABLE\");\n const foo = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.seq)(table, \"OF\")), (0, combi_1.optPrio)(\"REF TO\"));\n const typeLine = \"LINE OF\";\n const ret = (0, combi_1.seq)((0, combi_1.alt)(foo, typeLine), _1.TypeNameOrInfer, (0, combi_1.opt)(_1.Default));\n const like = (0, combi_1.seq)(\"LIKE\", (0, combi_1.opt)(\"LINE OF\"), _1.FieldChain, (0, combi_1.optPrio)(_1.Default));\n return (0, combi_1.alt)((0, combi_1.seq)(\"TYPE\", (0, combi_1.alt)(table, ret)), like);\n }\n}\nexports.TypeParam = TypeParam;\n//# sourceMappingURL=type_param.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_param.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeTable = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_chain.js\");\nconst type_table_key_1 = __webpack_require__(/*! ./type_table_key */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table_key.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeTable extends combi_1.Expression {\n getRunnable() {\n const header = \"WITH HEADER LINE\";\n const initial = (0, combi_1.seq)(\"INITIAL SIZE\", _1.Constant);\n const generic = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)(\"STANDARD\", \"HASHED\", \"INDEX\", \"SORTED\", \"ANY\")), \"TABLE\");\n const normal1 = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)(\"STANDARD\", \"HASHED\", \"INDEX\", \"SORTED\", \"ANY\")), \"TABLE OF\", (0, combi_1.opt)(\"REF TO\"), (0, combi_1.opt)(_1.TypeName));\n const likeType = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)(\"STANDARD\", \"HASHED\", \"INDEX\", \"SORTED\", \"ANY\")), \"TABLE OF\", (0, combi_1.optPrio)(\"REF TO\"), (0, combi_1.opt)(field_chain_1.FieldChain), (0, combi_1.opt)((0, combi_1.per)(header, initial, (0, combi_1.plusPrio)(type_table_key_1.TypeTableKey))));\n const rangeType = (0, combi_1.seq)(\"RANGE OF\", _1.TypeName, (0, combi_1.opt)(header), (0, combi_1.opt)(initial));\n const rangeLike = (0, combi_1.seq)(\"RANGE OF\", _1.SimpleFieldChain, (0, combi_1.opt)(header), (0, combi_1.opt)(initial));\n // a maximum of 15 secondary table keys can be defined\n // \"WITH\" is not allowed as a field name in keys\n const typetable = (0, combi_1.alt)(generic, (0, combi_1.seq)(normal1, (0, combi_1.alt)((0, combi_1.opt)((0, combi_1.per)(header, initial, (0, combi_1.plusPrio)(type_table_key_1.TypeTableKey))), (0, combi_1.seq)((0, combi_1.plus)(type_table_key_1.TypeTableKey), (0, combi_1.optPrio)(initial)))));\n const occurs = (0, combi_1.seq)(\"OCCURS\", _1.Integer);\n const derived = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)(\"TABLE FOR\", (0, combi_1.altPrio)(\"ACTION IMPORT\", \"ACTION RESULT\", \"CREATE\", \"FAILED\", \"LOCK\", \"READ RESULT\", \"UPDATE\"), _1.TypeName));\n const oldType = (0, combi_1.seq)((0, combi_1.opt)(\"REF TO\"), _1.TypeName, (0, combi_1.alt)((0, combi_1.seq)(occurs, (0, combi_1.opt)(header)), header));\n const oldLike = (0, combi_1.seq)((0, combi_1.opt)(\"REF TO\"), field_chain_1.FieldChain, (0, combi_1.alt)((0, combi_1.seq)(occurs, (0, combi_1.opt)(header)), header));\n const ret = (0, combi_1.altPrio)((0, combi_1.seq)(occurs, (0, combi_1.opt)(header)), (0, combi_1.seq)(\"LIKE\", (0, combi_1.alt)(oldLike, likeType, rangeLike)), (0, combi_1.seq)(\"TYPE\", (0, combi_1.alt)(oldType, typetable, rangeType, derived)));\n return ret;\n }\n}\nexports.TypeTable = TypeTable;\n//# sourceMappingURL=type_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table_key.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table_key.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeTableKey = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeTableKey extends combi_1.Expression {\n getRunnable() {\n const uniqueness = (0, combi_1.alt)(\"NON-UNIQUE\", \"UNIQUE\");\n const defaultKey = \"DEFAULT KEY\";\n const emptyKey = (0, combi_1.ver)(version_1.Version.v740sp02, \"EMPTY KEY\");\n const components = (0, combi_1.plus)((0, combi_1.alt)((0, combi_1.seq)(\"WITH\", (0, combi_1.failStar)()), _1.FieldSub));\n const key = (0, combi_1.seq)(\"WITH\", (0, combi_1.opt)(uniqueness), (0, combi_1.altPrio)(defaultKey, emptyKey, (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)(\"SORTED\", \"HASHED\")), \"KEY\", (0, combi_1.alt)((0, combi_1.seq)(_1.Field, \"COMPONENTS\", components), components))), (0, combi_1.optPrio)(\"READ-ONLY\"));\n return key;\n }\n}\nexports.TypeTableKey = TypeTableKey;\n//# sourceMappingURL=type_table_key.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/type_table_key.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Value = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Value extends combi_1.Expression {\n getRunnable() {\n const ret = (0, combi_1.seq)(\"VALUE\", (0, combi_1.alt)(_1.Constant, _1.SimpleFieldChain, \"IS INITIAL\"));\n return ret;\n }\n}\nexports.Value = Value;\n//# sourceMappingURL=value.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ValueBody = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ValueBody extends combi_1.Expression {\n getRunnable() {\n const base = (0, combi_1.seq)(\"BASE\", _1.Source);\n const strucOrTab = (0, combi_1.seq)((0, combi_1.optPrio)(_1.Let), (0, combi_1.optPrio)(base), (0, combi_1.star)(_1.For), (0, combi_1.plusPrio)((0, combi_1.altPrio)(_1.FieldAssignment, _1.ValueBodyLine)));\n const tabdef = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.altPrio)(\"OPTIONAL\", (0, combi_1.seq)(\"DEFAULT\", _1.Source)));\n return (0, combi_1.optPrio)((0, combi_1.altPrio)(strucOrTab, (0, combi_1.seq)(_1.Source, (0, combi_1.optPrio)(tabdef))));\n }\n}\nexports.ValueBody = ValueBody;\n//# sourceMappingURL=value_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_line.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_line.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ValueBodyLine = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst value_body_lines_1 = __webpack_require__(/*! ./value_body_lines */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_lines.js\");\nclass ValueBodyLine extends combi_1.Expression {\n getRunnable() {\n // missing spaces caught by rule \"parser_missing_space\"\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeft)), (0, combi_1.optPrio)((0, combi_1.altPrio)((0, combi_1.plusPrio)(_1.FieldAssignment), value_body_lines_1.ValueBodyLines, _1.Source)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.ParenRightW)));\n return ret;\n }\n}\nexports.ValueBodyLine = ValueBodyLine;\n//# sourceMappingURL=value_body_line.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_line.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_lines.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_lines.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ValueBodyLines = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ValueBodyLines extends combi_1.Expression {\n getRunnable() {\n const range = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.seq)(\"FROM\", _1.Source)), (0, combi_1.optPrio)((0, combi_1.seq)(\"TO\", _1.Source)));\n const lines = (0, combi_1.seq)(\"LINES OF\", _1.Source, range);\n return lines;\n }\n}\nexports.ValueBodyLines = ValueBodyLines;\n//# sourceMappingURL=value_body_lines.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/value_body_lines.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/with_name.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/with_name.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WithName = void 0;\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass WithName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), (0, combi_1.regex)(/^\\w+$/));\n }\n}\nexports.WithName = WithName;\n//# sourceMappingURL=with_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/with_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/write_offset_length.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/write_offset_length.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WriteOffsetLength = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst simple_field_chain2_1 = __webpack_require__(/*! ./simple_field_chain2 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_field_chain2.js\");\nclass WriteOffsetLength extends combi_1.Expression {\n getRunnable() {\n const post = (0, combi_1.seq)((0, combi_1.alt)(simple_field_chain2_1.SimpleFieldChain2, (0, combi_1.regex)(/^[\\d]+$/), (0, combi_1.regex)(/^\\*$/)), (0, combi_1.alt)((0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.ParenRight)));\n const wlength = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeft), post);\n const length = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), post);\n const complex = (0, combi_1.alt)(wlength, (0, combi_1.seq)((0, combi_1.alt)(simple_field_chain2_1.SimpleFieldChain2, (0, combi_1.regex)(/^\\/?[\\w\\d]+$/), \"/\"), (0, combi_1.opt)(length)));\n const at = (0, combi_1.seq)((0, combi_1.opt)(\"AT\"), complex);\n return at;\n }\n}\nexports.WriteOffsetLength = WriteOffsetLength;\n//# sourceMappingURL=write_offset_length.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/write_offset_length.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/result.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/result.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Result = void 0;\nclass Result {\n constructor(tokens, tokenIndex, nodes) {\n // tokens: all tokens, from the tokenIndex = not yet matched\n // nodes: matched tokens\n this.tokens = tokens;\n this.tokenIndex = tokenIndex;\n this.nodes = nodes;\n if (this.nodes === undefined) {\n this.nodes = [];\n }\n }\n peek() {\n return this.tokens[this.tokenIndex];\n }\n shift(node) {\n const cp = this.nodes.slice();\n cp.push(node);\n return new Result(this.tokens, this.tokenIndex + 1, cp);\n }\n popNode() {\n return this.nodes.pop();\n }\n getNodes() {\n return this.nodes;\n }\n setNodes(n) {\n this.nodes = n;\n }\n remainingLength() {\n return this.tokens.length - this.tokenIndex;\n }\n}\nexports.Result = Result;\n//# sourceMappingURL=result.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/result.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statement_parser.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statement_parser.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StatementParser = exports.STATEMENT_MAX_TOKENS = void 0;\nconst Statements = __webpack_require__(/*! ./statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ./expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Tokens = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst artifacts_1 = __webpack_require__(/*! ../artifacts */ \"./node_modules/@abaplint/core/build/src/abap/artifacts.js\");\nconst combi_1 = __webpack_require__(/*! ./combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst _statement_1 = __webpack_require__(/*! ./statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst expand_macros_1 = __webpack_require__(/*! ./expand_macros */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expand_macros.js\");\nconst tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nexports.STATEMENT_MAX_TOKENS = 1000;\nclass StatementMap {\n constructor() {\n this.map = {};\n for (const stat of artifacts_1.ArtifactsABAP.getStatements()) {\n const f = stat.getMatcher().first();\n if (f.length === 0) {\n throw new Error(\"StatementMap, first must have contents\");\n }\n for (const first of f) {\n if (this.map[first]) {\n this.map[first].push({ statement: stat });\n }\n else {\n this.map[first] = [{ statement: stat }];\n }\n }\n }\n }\n lookup(str) {\n const res = this.map[str.toUpperCase()];\n if (res === undefined) {\n return [];\n }\n if (res[0].matcher === undefined) {\n for (const r of res) {\n r.matcher = r.statement.getMatcher();\n }\n }\n return res;\n }\n}\nclass WorkArea {\n constructor(file, tokens) {\n this.file = file;\n this.tokens = tokens;\n this.statements = [];\n }\n addUnknown(pre, post, colon) {\n const st = new nodes_1.StatementNode(new _statement_1.Unknown(), colon);\n st.setChildren(this.tokensToNodes(pre, post));\n this.statements.push(st);\n }\n toResult() {\n return { file: this.file, tokens: this.tokens, statements: this.statements };\n }\n tokensToNodes(tokens1, tokens2) {\n const ret = [];\n for (const t of tokens1) {\n ret.push(new nodes_1.TokenNode(t));\n }\n for (const t of tokens2) {\n ret.push(new nodes_1.TokenNode(t));\n }\n return ret;\n }\n}\nclass StatementParser {\n constructor(version, reg) {\n if (!StatementParser.map) {\n StatementParser.map = new StatementMap();\n }\n this.version = version;\n this.reg = reg;\n }\n /** input is one full object */\n run(input, globalMacros) {\n const macros = new expand_macros_1.ExpandMacros(globalMacros, this.version, this.reg);\n const wa = input.map(i => new WorkArea(i.file, i.tokens));\n for (const w of wa) {\n this.process(w);\n this.categorize(w);\n macros.find(w.statements);\n }\n for (const w of wa) {\n const res = macros.handleMacros(w.statements);\n w.statements = res.statements;\n if (res.containsUnknown === true) {\n this.lazyUnknown(w);\n }\n this.nativeSQL(w);\n }\n return wa.map(w => w.toResult());\n }\n // todo, refactor, remove method here and only have in WorkArea class\n tokensToNodes(tokens) {\n const ret = [];\n for (const t of tokens) {\n ret.push(new nodes_1.TokenNode(t));\n }\n return ret;\n }\n // tries to split Unknown statements by newlines, when adding/writing a new statement\n // in an editor, adding the statement terminator is typically the last thing to do\n // note: this will not work if the second statement is a macro call, guess this is okay\n lazyUnknown(wa) {\n const result = [];\n for (let statement of wa.statements) {\n // dont use CALL METHOD, when executing lazy, it easily gives a Move for the last statment if lazy logic is evaluated\n if (statement.get() instanceof _statement_1.Unknown) {\n const concat = statement.concatTokens().toUpperCase();\n if (concat.startsWith(\"CALL METHOD \") === false\n && concat.startsWith(\"RAISE EXCEPTION TYPE \") === false\n && concat.startsWith(\"READ TABLE \") === false\n && concat.startsWith(\"LOOP AT \") === false\n && concat.startsWith(\"CALL FUNCTION \") === false) {\n for (const { first, second } of this.buildSplits(statement.getTokens())) {\n if (second.length === 1) {\n continue; // probably punctuation\n }\n const s = this.categorizeStatement(new nodes_1.StatementNode(new _statement_1.Unknown()).setChildren(this.tokensToNodes(second)));\n if (!(s.get() instanceof _statement_1.Unknown)) {\n result.push(new nodes_1.StatementNode(new _statement_1.Unknown()).setChildren(this.tokensToNodes(first)));\n statement = s;\n break;\n }\n }\n }\n }\n result.push(statement);\n }\n wa.statements = result;\n }\n buildSplits(tokens) {\n const res = [];\n const before = [];\n let prevRow = tokens[0].getRow();\n for (let i = 0; i < tokens.length; i++) {\n if (tokens[i].getRow() !== prevRow) {\n res.push({ first: [...before], second: [...tokens].splice(i) });\n }\n prevRow = tokens[i].getRow();\n before.push(tokens[i]);\n }\n return res;\n }\n nativeSQL(wa) {\n let sql = false;\n for (let i = 0; i < wa.statements.length; i++) {\n const statement = wa.statements[i];\n const type = statement.get();\n if (type instanceof Statements.ExecSQL\n || (type instanceof Statements.MethodImplementation && statement.findDirectExpression(Expressions.Language))) {\n sql = true;\n }\n else if (sql === true) {\n if (type instanceof Statements.EndExec\n || type instanceof Statements.EndMethod) {\n sql = false;\n }\n else if (!(type instanceof _statement_1.Comment)) {\n wa.statements[i] = new nodes_1.StatementNode(new _statement_1.NativeSQL()).setChildren(this.tokensToNodes(statement.getTokens()));\n }\n }\n }\n }\n // for each statement, run statement matchers to figure out which kind of statement it is\n categorize(wa) {\n const result = [];\n for (const statement of wa.statements) {\n result.push(this.categorizeStatement(statement));\n }\n wa.statements = result;\n }\n categorizeStatement(input) {\n let statement = input;\n const length = input.getChildren().length;\n const lastToken = input.getLastToken();\n const isPunctuation = lastToken instanceof Tokens.Punctuation;\n if (length === 1 && isPunctuation) {\n const tokens = statement.getTokens();\n statement = new nodes_1.StatementNode(new _statement_1.Empty()).setChildren(this.tokensToNodes(tokens));\n }\n else if (statement.get() instanceof _statement_1.Unknown) {\n if (isPunctuation) {\n statement = this.match(statement);\n }\n else if (length > exports.STATEMENT_MAX_TOKENS) {\n // if the statement contains more than STATEMENT_MAX_TOKENS tokens, just give up\n statement = input;\n }\n else if (length === 1 && lastToken instanceof tokens_1.Pragma) {\n statement = new nodes_1.StatementNode(new _statement_1.Empty(), undefined, [lastToken]);\n }\n }\n return statement;\n }\n removePragma(tokens) {\n const result = [];\n const pragmas = [];\n // skip the last token as it is the punctuation\n for (let i = 0; i < tokens.length - 1; i++) {\n const t = tokens[i];\n if (t instanceof Tokens.Pragma) {\n pragmas.push(t);\n }\n else {\n result.push(t);\n }\n }\n return { tokens: result, pragmas: pragmas };\n }\n match(statement) {\n const tokens = statement.getTokens();\n const { tokens: filtered, pragmas } = this.removePragma(tokens);\n if (filtered.length === 0) {\n return new nodes_1.StatementNode(new _statement_1.Empty()).setChildren(this.tokensToNodes(tokens));\n }\n for (const st of StatementParser.map.lookup(filtered[0].getStr())) {\n const match = combi_1.Combi.run(st.matcher, filtered, this.version);\n if (match) {\n const last = tokens[tokens.length - 1];\n match.push(new nodes_1.TokenNode(last));\n return new nodes_1.StatementNode(st.statement, statement.getColon(), pragmas).setChildren(match);\n }\n }\n // next try the statements without specific keywords\n for (const st of StatementParser.map.lookup(\"\")) {\n const match = combi_1.Combi.run(st.matcher, filtered, this.version);\n if (match) {\n const last = tokens[tokens.length - 1];\n match.push(new nodes_1.TokenNode(last));\n return new nodes_1.StatementNode(st.statement, statement.getColon(), pragmas).setChildren(match);\n }\n }\n return statement;\n }\n // takes care of splitting tokens into statements, also handles chained statements\n // statements are split by \",\" or \".\"\n // additional colons/chaining after the first colon are ignored\n process(wa) {\n let add = [];\n let pre = [];\n let colon = undefined;\n for (const token of wa.tokens) {\n if (token instanceof Tokens.Comment) {\n wa.statements.push(new nodes_1.StatementNode(new _statement_1.Comment()).setChildren(this.tokensToNodes([token])));\n continue;\n }\n add.push(token);\n const str = token.getStr();\n if (str.length === 1) {\n if (str === \".\") {\n wa.addUnknown(pre, add, colon);\n add = [];\n pre = [];\n colon = undefined;\n }\n else if (str === \",\" && pre.length > 0) {\n wa.addUnknown(pre, add, colon);\n add = [];\n }\n else if (str === \":\" && colon === undefined) {\n colon = token;\n add.pop(); // do not add colon token to statement\n pre.push(...add);\n add = [];\n }\n else if (str === \":\") {\n add.pop(); // do not add colon token to statement\n }\n }\n }\n if (add.length > 0) {\n wa.addUnknown(pre, add, colon);\n }\n }\n}\nexports.StatementParser = StatementParser;\n//# sourceMappingURL=statement_parser.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statement_parser.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.Empty = exports.Comment = exports.Unknown = void 0;\nclass Unknown {\n getMatcher() {\n throw new Error(\"Unknown Statement, get_matcher\");\n }\n}\nexports.Unknown = Unknown;\nclass Comment {\n getMatcher() {\n throw new Error(\"Comment Statement, get_matcher\");\n }\n}\nexports.Comment = Comment;\nclass Empty {\n getMatcher() {\n throw new Error(\"Empty Statement, get_matcher\");\n }\n}\nexports.Empty = Empty;\nclass MacroCall {\n getMatcher() {\n throw new Error(\"MacroCall Statement, get_matcher\");\n }\n}\nexports.MacroCall = MacroCall;\nclass MacroContent {\n getMatcher() {\n throw new Error(\"MacroContent Statement, get_matcher\");\n }\n}\nexports.MacroContent = MacroContent;\nclass NativeSQL {\n getMatcher() {\n throw new Error(\"NativeSQL Statement, get_matcher\");\n }\n}\nexports.NativeSQL = NativeSQL;\n//# sourceMappingURL=_statement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Add = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Add {\n getMatcher() {\n const to = (0, combi_1.seq)(\"TO\", expressions_1.Target);\n const then = (0, combi_1.seq)(\"THEN\", expressions_1.FieldSub, \"UNTIL\", expressions_1.FieldSub, \"GIVING\", expressions_1.FieldSub);\n const ret = (0, combi_1.seq)(\"ADD\", expressions_1.Source, (0, combi_1.altPrio)(to, then));\n return ret;\n }\n}\nexports.Add = Add;\n//# sourceMappingURL=add.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add_corresponding.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add_corresponding.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AddCorresponding = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass AddCorresponding {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"ADD-CORRESPONDING\", expressions_1.Source, \"TO\", expressions_1.Target);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.AddCorresponding = AddCorresponding;\n//# sourceMappingURL=add_corresponding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add_corresponding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/aliases.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/aliases.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Aliases = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Aliases {\n getMatcher() {\n return (0, combi_1.seq)(\"ALIASES\", expressions_1.SimpleName, \"FOR\", expressions_1.Field);\n }\n}\nexports.Aliases = Aliases;\n//# sourceMappingURL=aliases.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/aliases.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/append.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/append.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Append = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Append {\n getMatcher() {\n const assigning = (0, combi_1.seq)(\"ASSIGNING\", expressions_1.FSTarget);\n const reference = (0, combi_1.seq)(\"REFERENCE INTO\", expressions_1.Target);\n const sorted = (0, combi_1.seq)(\"SORTED BY\", expressions_1.Field);\n const fromIndex = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const toIndex = (0, combi_1.seq)(\"TO\", expressions_1.Source);\n const toTarget = (0, combi_1.seq)(\"TO\", expressions_1.Target);\n const src = (0, combi_1.alt)(expressions_1.SimpleSource4, (0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source));\n return (0, combi_1.seq)(\"APPEND\", (0, combi_1.altPrio)(\"INITIAL LINE\", (0, combi_1.seq)((0, combi_1.optPrio)(\"LINES OF\"), src)), (0, combi_1.optPrio)(fromIndex), (0, combi_1.opt)((0, combi_1.alt)((0, combi_1.seq)(toIndex, toTarget), toTarget)), (0, combi_1.opt)((0, combi_1.altPrio)(assigning, reference)), (0, combi_1.optPrio)(\"CASTING\"), (0, combi_1.optPrio)(sorted));\n }\n}\nexports.Append = Append;\n//# sourceMappingURL=append.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/append.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assert.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assert.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Assert = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Assert {\n getMatcher() {\n const fields = (0, combi_1.seq)(\"FIELDS\", (0, combi_1.plus)(expressions_1.Source));\n const subkey = (0, combi_1.seq)(\"SUBKEY\", expressions_1.Source);\n const id = (0, combi_1.seq)(\"ID\", expressions_1.NamespaceSimpleName);\n return (0, combi_1.seq)(\"ASSERT\", (0, combi_1.optPrio)(id), (0, combi_1.optPrio)(subkey), (0, combi_1.opt)(fields), (0, combi_1.optPrio)(\"CONDITION\"), expressions_1.Cond);\n }\n}\nexports.Assert = Assert;\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assert.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Assign = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Assign {\n getMatcher() {\n const type = (0, combi_1.seq)(\"TYPE\", (0, combi_1.altPrio)(expressions_1.Dynamic, expressions_1.TypeName));\n const like = (0, combi_1.seq)(\"LIKE\", (0, combi_1.altPrio)(expressions_1.Dynamic, expressions_1.Source));\n const handle = (0, combi_1.seq)(\"TYPE HANDLE\", expressions_1.Source);\n const range = (0, combi_1.seq)(\"RANGE\", expressions_1.Source);\n const decimals = (0, combi_1.seq)(\"DECIMALS\", expressions_1.Source);\n const casting = (0, combi_1.seq)(\"CASTING\", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));\n const obsoleteType = (0, combi_1.seq)(\"TYPE\", expressions_1.Source, (0, combi_1.optPrio)(decimals));\n const ret = (0, combi_1.seq)(\"ASSIGN\", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, \"INCREMENT\")), expressions_1.AssignSource, \"TO\", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType)), (0, combi_1.opt)(range), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v757, \"ELSE UNASSIGN\")));\n return ret;\n }\n}\nexports.Assign = Assign;\n//# sourceMappingURL=assign.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign_local_copy.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign_local_copy.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AssignLocalCopy = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass AssignLocalCopy {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"ASSIGN LOCAL COPY OF\", (0, combi_1.opt)((0, combi_1.seq)(\"INITIAL\", (0, combi_1.opt)(\"LINE OF\"))), (0, combi_1.alt)(expressions_1.Source, expressions_1.Dynamic), \"TO\", expressions_1.TargetFieldSymbol);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.AssignLocalCopy = AssignLocalCopy;\n//# sourceMappingURL=assign_local_copy.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign_local_copy.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.At = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass At {\n getMatcher() {\n const field = (0, combi_1.alt)((0, combi_1.seq)(expressions_1.FieldSub, (0, combi_1.opt)(expressions_1.FieldOffset), (0, combi_1.opt)(expressions_1.FieldLength)), expressions_1.Dynamic, expressions_1.SourceFieldSymbol);\n const atNew = (0, combi_1.seq)(\"NEW\", field);\n const atEnd = (0, combi_1.seq)(\"END OF\", field);\n const group = (0, combi_1.regex)(/^\\w+$/);\n const ret = (0, combi_1.seq)(\"AT\", (0, combi_1.altPrio)(atNew, atEnd, group));\n return ret;\n }\n}\nexports.At = At;\n//# sourceMappingURL=at.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_first.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_first.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AtFirst = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass AtFirst {\n getMatcher() {\n return (0, combi_1.str)(\"AT FIRST\");\n }\n}\nexports.AtFirst = AtFirst;\n//# sourceMappingURL=at_first.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_first.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_last.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_last.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AtLast = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass AtLast {\n getMatcher() {\n return (0, combi_1.str)(\"AT LAST\");\n }\n}\nexports.AtLast = AtLast;\n//# sourceMappingURL=at_last.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_last.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_line_selection.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_line_selection.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AtLineSelection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass AtLineSelection {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"AT LINE-SELECTION\");\n }\n}\nexports.AtLineSelection = AtLineSelection;\n//# sourceMappingURL=at_line_selection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_line_selection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_selection_screen.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_selection_screen.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AtSelectionScreen = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass AtSelectionScreen {\n getMatcher() {\n const output = \"OUTPUT\";\n const value = (0, combi_1.seq)(\"ON VALUE-REQUEST FOR\", expressions_1.FieldSub);\n const exit = \"ON EXIT-COMMAND\";\n const field = (0, combi_1.seq)(\"ON\", expressions_1.FieldSub);\n const end = (0, combi_1.seq)(\"ON END OF\", expressions_1.Field);\n const radio = (0, combi_1.seq)(\"ON RADIOBUTTON GROUP\", expressions_1.Field);\n const block = (0, combi_1.seq)(\"ON BLOCK\", (0, combi_1.regex)(/^\\w+$/));\n const help = (0, combi_1.seq)(\"ON HELP-REQUEST FOR\", expressions_1.FieldSub);\n const ret = (0, combi_1.seq)(\"AT SELECTION-SCREEN\", (0, combi_1.opt)((0, combi_1.alt)(output, value, radio, exit, field, end, help, block)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.AtSelectionScreen = AtSelectionScreen;\n//# sourceMappingURL=at_selection_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_selection_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_user_command.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_user_command.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AtUserCommand = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass AtUserCommand {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"AT USER-COMMAND\");\n }\n}\nexports.AtUserCommand = AtUserCommand;\n//# sourceMappingURL=at_user_command.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_user_command.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/authority_check.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/authority_check.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AuthorityCheck = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass AuthorityCheck {\n getMatcher() {\n const field = (0, combi_1.seq)(\"FIELD\", expressions_1.Source);\n const id = (0, combi_1.seq)(\"ID\", expressions_1.Source, (0, combi_1.alt)(field, \"DUMMY\"));\n const ret = (0, combi_1.seq)(\"AUTHORITY-CHECK OBJECT\", expressions_1.Source, (0, combi_1.opt)((0, combi_1.seq)(\"FOR USER\", expressions_1.Source)), (0, combi_1.plus)(id));\n return ret;\n }\n}\nexports.AuthorityCheck = AuthorityCheck;\n//# sourceMappingURL=authority_check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/authority_check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/back.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/back.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Back = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Back {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"BACK\");\n }\n}\nexports.Back = Back;\n//# sourceMappingURL=back.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/back.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Break = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Break {\n getMatcher() {\n const next = (0, combi_1.str)(\"AT NEXT APPLICATION STATEMENT\");\n const ret = (0, combi_1.altPrio)((0, combi_1.seq)(\"BREAK-POINT\", (0, combi_1.optPrio)((0, combi_1.altPrio)(next, expressions_1.Source))), (0, combi_1.seq)(\"BREAK\", expressions_1.FieldSub));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Break = Break;\n//# sourceMappingURL=break.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break_id.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break_id.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BreakId = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass BreakId {\n getMatcher() {\n const id = (0, combi_1.seq)(\"ID\", expressions_1.Field);\n const ret = (0, combi_1.seq)(\"BREAK-POINT\", id);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.BreakId = BreakId;\n//# sourceMappingURL=break_id.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break_id.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Call = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\n// method call\nclass Call {\n getMatcher() {\n const call = (0, combi_1.seq)(\"CALL METHOD\", expressions_1.MethodSource, expressions_1.MethodCallBody);\n return (0, combi_1.altPrio)(call, expressions_1.MethodCallChain);\n }\n}\nexports.Call = Call;\n//# sourceMappingURL=call.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_badi.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_badi.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallBadi = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallBadi {\n getMatcher() {\n const call = (0, combi_1.seq)(\"CALL\", \"BADI\", expressions_1.MethodSource, expressions_1.MethodCallBody);\n return (0, combi_1.verNot)(version_1.Version.Cloud, call);\n }\n}\nexports.CallBadi = CallBadi;\n//# sourceMappingURL=call_badi.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_badi.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_database.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_database.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallDatabase = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallDatabase {\n getMatcher() {\n const exporting = (0, combi_1.seq)(\"EXPORTING\", expressions_1.ParameterListS);\n const importing = (0, combi_1.seq)(\"IMPORTING\", expressions_1.ParameterListT);\n const expl = (0, combi_1.seq)((0, combi_1.opt)(exporting), (0, combi_1.opt)(importing));\n const tab = (0, combi_1.seq)(\"PARAMETER-TABLE\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"CALL DATABASE PROCEDURE\", expressions_1.Dynamic, (0, combi_1.opt)(expressions_1.DatabaseConnection), (0, combi_1.alt)(expl, tab));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CallDatabase = CallDatabase;\n//# sourceMappingURL=call_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_dialog.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_dialog.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallDialog = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallDialog {\n getMatcher() {\n const from = (0, combi_1.seq)(expressions_1.FieldSub, (0, combi_1.optPrio)((0, combi_1.seq)(\"FROM\", expressions_1.Source)));\n const exporting = (0, combi_1.seq)(\"EXPORTING\", (0, combi_1.plus)(from));\n const to = (0, combi_1.seq)(expressions_1.Field, (0, combi_1.optPrio)((0, combi_1.seq)(\"TO\", expressions_1.Field)));\n const importing = (0, combi_1.seq)(\"IMPORTING\", (0, combi_1.plus)(to));\n const ret = (0, combi_1.seq)(\"CALL DIALOG\", expressions_1.Constant, (0, combi_1.opt)(exporting), (0, combi_1.opt)(importing));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CallDialog = CallDialog;\n//# sourceMappingURL=call_dialog.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_dialog.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_function.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_function.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallFunction = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallFunction {\n getMatcher() {\n const starting = (0, combi_1.verNot)(version_1.Version.Cloud, (0, combi_1.seq)(\"STARTING NEW TASK\", expressions_1.SimpleSource2));\n const update = (0, combi_1.verNot)(version_1.Version.Cloud, (0, combi_1.str)(\"IN UPDATE TASK\"));\n const unit = (0, combi_1.seq)(\"UNIT\", expressions_1.Source);\n const background = (0, combi_1.verNot)(version_1.Version.Cloud, (0, combi_1.seq)(\"IN BACKGROUND\", (0, combi_1.altPrio)(\"TASK\", unit)));\n const calling = (0, combi_1.seq)(\"CALLING\", expressions_1.MethodName, \"ON END OF TASK\");\n const performing = (0, combi_1.seq)(\"PERFORMING\", expressions_1.FormName, \"ON END OF TASK\");\n const separate = (0, combi_1.str)(\"AS SEPARATE UNIT\");\n const keeping = (0, combi_1.str)(\"KEEPING LOGICAL UNIT OF WORK\");\n const options = (0, combi_1.per)(starting, update, background, expressions_1.Destination, calling, performing, separate, keeping);\n const dynamic = (0, combi_1.seq)(\"PARAMETER-TABLE\", expressions_1.Source, (0, combi_1.opt)((0, combi_1.seq)(\"EXCEPTION-TABLE\", expressions_1.Source)));\n const call = (0, combi_1.seq)(\"CALL\", (0, combi_1.altPrio)(\"FUNCTION\", (0, combi_1.verNot)(version_1.Version.Cloud, \"CUSTOMER-FUNCTION\")), expressions_1.FunctionName, (0, combi_1.opt)(options), (0, combi_1.alt)(expressions_1.FunctionParameters, dynamic));\n return call;\n }\n}\nexports.CallFunction = CallFunction;\n//# sourceMappingURL=call_function.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_function.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_kernel.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_kernel.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallKernel = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallKernel {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CALL\", (0, combi_1.altPrio)(expressions_1.Constant, expressions_1.Field), (0, combi_1.starPrio)(expressions_1.KernelId));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CallKernel = CallKernel;\n//# sourceMappingURL=call_kernel.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_kernel.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_ole.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_ole.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallOLE = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallOLE {\n getMatcher() {\n const rc = (0, combi_1.seq)(\"=\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"CALL METHOD OF\", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(rc), (0, combi_1.opt)(\"NO FLUSH\"), (0, combi_1.opt)(\"QUEUEONLY\"), (0, combi_1.opt)(expressions_1.OLEExporting));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CallOLE = CallOLE;\n//# sourceMappingURL=call_ole.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_ole.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_screen.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_screen.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallScreen = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallScreen {\n getMatcher() {\n const starting = (0, combi_1.seq)(\"STARTING AT\", expressions_1.Source, expressions_1.Source);\n const ending = (0, combi_1.seq)(\"ENDING AT\", expressions_1.Source, expressions_1.Source);\n const ret = (0, combi_1.seq)(\"CALL SCREEN\", expressions_1.Source, (0, combi_1.optPrio)((0, combi_1.seq)(starting, (0, combi_1.optPrio)(ending))));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CallScreen = CallScreen;\n//# sourceMappingURL=call_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_selection_screen.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_selection_screen.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallSelectionScreen = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallSelectionScreen {\n getMatcher() {\n const ending = (0, combi_1.seq)(\"ENDING AT\", expressions_1.Source, expressions_1.Source);\n const starting = (0, combi_1.seq)(\"STARTING AT\", expressions_1.Source, expressions_1.Source);\n const using = (0, combi_1.seq)(\"USING SELECTION-SET\", expressions_1.Source);\n const at = (0, combi_1.seq)(starting, (0, combi_1.opt)(ending));\n const ret = (0, combi_1.seq)(\"CALL SELECTION-SCREEN\", expressions_1.Source, (0, combi_1.opt)(at), (0, combi_1.opt)(using));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CallSelectionScreen = CallSelectionScreen;\n//# sourceMappingURL=call_selection_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_selection_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transaction.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transaction.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallTransaction = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallTransaction {\n getMatcher() {\n const options = (0, combi_1.seq)(\"OPTIONS FROM\", expressions_1.Source);\n const messages = (0, combi_1.seq)(\"MESSAGES INTO\", expressions_1.Target);\n const auth = (0, combi_1.seq)((0, combi_1.altPrio)(\"WITH\", \"WITHOUT\"), \"AUTHORITY-CHECK\");\n const perm = (0, combi_1.per)((0, combi_1.seq)(\"UPDATE\", expressions_1.Source), \"AND SKIP FIRST SCREEN\", options, messages, (0, combi_1.seq)(\"MODE\", expressions_1.Source));\n const ret = (0, combi_1.seq)(\"CALL TRANSACTION\", expressions_1.Source, (0, combi_1.optPrio)(auth), (0, combi_1.optPrio)((0, combi_1.seq)(\"USING\", expressions_1.Source)), (0, combi_1.opt)(perm));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CallTransaction = CallTransaction;\n//# sourceMappingURL=call_transaction.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transaction.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transformation.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transformation.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallTransformation = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass CallTransformation {\n getMatcher() {\n const options = (0, combi_1.seq)(\"OPTIONS\", expressions_1.CallTransformationOptions);\n const parameters = (0, combi_1.seq)(\"PARAMETERS\", expressions_1.CallTransformationParameters);\n const objects = (0, combi_1.seq)(\"OBJECTS\", expressions_1.CallTransformationParameters);\n const source2 = (0, combi_1.seq)(\"XML\", expressions_1.SimpleSource3);\n const source = (0, combi_1.seq)(\"SOURCE\", (0, combi_1.alt)(expressions_1.CallTransformationParameters, source2));\n const result2 = (0, combi_1.seq)(\"XML\", expressions_1.Target);\n const result = (0, combi_1.seq)(\"RESULT\", (0, combi_1.alt)(expressions_1.CallTransformationParameters, result2));\n const call = (0, combi_1.seq)(\"CALL TRANSFORMATION\", (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.Dynamic), (0, combi_1.per)(options, parameters, objects, source, result));\n return call;\n }\n}\nexports.CallTransformation = CallTransformation;\n//# sourceMappingURL=call_transformation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transformation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Case = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Case {\n getMatcher() {\n return (0, combi_1.seq)(\"CASE\", expressions_1.Source);\n }\n}\nexports.Case = Case;\n//# sourceMappingURL=case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case_type.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case_type.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CaseType = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass CaseType {\n getMatcher() {\n return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"CASE TYPE OF\", expressions_1.Source));\n }\n}\nexports.CaseType = CaseType;\n//# sourceMappingURL=case_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Catch = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Catch {\n getMatcher() {\n return (0, combi_1.seq)(\"CATCH\", (0, combi_1.optPrio)(\"BEFORE UNWIND\"), (0, combi_1.plus)(expressions_1.ClassName), (0, combi_1.opt)((0, combi_1.seq)(\"INTO\", expressions_1.Target)));\n }\n}\nexports.Catch = Catch;\n//# sourceMappingURL=catch.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch_system_exceptions.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch_system_exceptions.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CatchSystemExceptions = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CatchSystemExceptions {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CATCH SYSTEM-EXCEPTIONS\", (0, combi_1.plus)((0, combi_1.seq)(expressions_1.Field, \"=\", expressions_1.Source)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CatchSystemExceptions = CatchSystemExceptions;\n//# sourceMappingURL=catch_system_exceptions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch_system_exceptions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Check = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Check {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CHECK\", (0, combi_1.altPrio)(expressions_1.Cond, expressions_1.Field));\n return ret;\n }\n}\nexports.Check = Check;\n//# sourceMappingURL=check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check_select_options.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check_select_options.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckSelectOptions = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CheckSelectOptions {\n getMatcher() {\n const ret = \"CHECK SELECT-OPTIONS\";\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CheckSelectOptions = CheckSelectOptions;\n//# sourceMappingURL=check_select_options.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check_select_options.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassData = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassData {\n getMatcher() {\n return (0, combi_1.seq)(\"CLASS-DATA\", expressions_1.DataDefinition);\n }\n}\nexports.ClassData = ClassData;\n//# sourceMappingURL=class_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_begin.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_begin.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDataBegin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassDataBegin {\n getMatcher() {\n const occurs = (0, combi_1.seq)(\"OCCURS\", expressions_1.Integer);\n const structure = (0, combi_1.seq)(\"BEGIN OF\", (0, combi_1.optPrio)(\"COMMON PART\"), expressions_1.NamespaceSimpleName, (0, combi_1.optPrio)(\"READ-ONLY\"), (0, combi_1.optPrio)(occurs));\n return (0, combi_1.seq)(\"CLASS-DATA\", structure);\n }\n}\nexports.ClassDataBegin = ClassDataBegin;\n//# sourceMappingURL=class_data_begin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_begin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_end.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_end.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDataEnd = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassDataEnd {\n getMatcher() {\n const common = (0, combi_1.seq)(\"COMMON PART\", (0, combi_1.optPrio)(expressions_1.NamespaceSimpleName));\n const structure = (0, combi_1.seq)(\"END OF\", (0, combi_1.altPrio)(common, expressions_1.NamespaceSimpleName));\n return (0, combi_1.seq)(\"CLASS-DATA\", structure);\n }\n}\nexports.ClassDataEnd = ClassDataEnd;\n//# sourceMappingURL=class_data_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_deferred.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_deferred.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDeferred = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassDeferred {\n getMatcher() {\n return (0, combi_1.seq)(\"CLASS\", expressions_1.ClassName, \"DEFINITION DEFERRED\", (0, combi_1.optPrio)(\"PUBLIC\"));\n }\n}\nexports.ClassDeferred = ClassDeferred;\n//# sourceMappingURL=class_deferred.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_deferred.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDefinition = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ClassDefinition {\n getMatcher() {\n const create = (0, combi_1.seq)(\"CREATE\", (0, combi_1.altPrio)(\"PUBLIC\", \"PROTECTED\", \"PRIVATE\"));\n const level = (0, combi_1.altPrio)(\"CRITICAL\", \"HARMLESS\", \"DANGEROUS\");\n const risk = (0, combi_1.seq)(\"RISK LEVEL\", level);\n const time = (0, combi_1.altPrio)(\"LONG\", \"MEDIUM\", \"SHORT\");\n const duration = (0, combi_1.seq)(\"DURATION\", time);\n const blah = (0, combi_1.per)(expressions_1.ClassGlobal, expressions_1.ClassFinal, \"ABSTRACT\", (0, combi_1.seq)(\"INHERITING FROM\", expressions_1.SuperClassName), create, \"FOR TESTING\", risk, \"SHARED MEMORY ENABLED\", duration, (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)(\"FOR BEHAVIOR OF\", expressions_1.NamespaceSimpleName)), expressions_1.ClassFriends);\n const def = (0, combi_1.seq)(\"DEFINITION\", (0, combi_1.optPrio)(blah));\n return (0, combi_1.seq)(\"CLASS\", expressions_1.ClassName, def);\n }\n}\nexports.ClassDefinition = ClassDefinition;\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition_load.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition_load.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDefinitionLoad = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassDefinitionLoad {\n getMatcher() {\n return (0, combi_1.seq)(\"CLASS\", expressions_1.ClassName, \"DEFINITION LOAD\");\n }\n}\nexports.ClassDefinitionLoad = ClassDefinitionLoad;\n//# sourceMappingURL=class_definition_load.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition_load.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_implementation.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_implementation.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassImplementation = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassImplementation {\n getMatcher() {\n return (0, combi_1.seq)(\"CLASS\", expressions_1.ClassName, \"IMPLEMENTATION\");\n }\n}\nexports.ClassImplementation = ClassImplementation;\n//# sourceMappingURL=class_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_local_friends.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_local_friends.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassLocalFriends = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassLocalFriends {\n getMatcher() {\n return (0, combi_1.seq)(\"CLASS\", expressions_1.ClassName, \"DEFINITION LOCAL FRIENDS\", (0, combi_1.plusPrio)(expressions_1.ClassName));\n }\n}\nexports.ClassLocalFriends = ClassLocalFriends;\n//# sourceMappingURL=class_local_friends.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_local_friends.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/cleanup.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/cleanup.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Cleanup = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Cleanup {\n getMatcher() {\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n return (0, combi_1.seq)(\"CLEANUP\", (0, combi_1.opt)(into));\n }\n}\nexports.Cleanup = Cleanup;\n//# sourceMappingURL=cleanup.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/cleanup.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/clear.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/clear.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Clear = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Clear {\n getMatcher() {\n const wit = (0, combi_1.seq)(\"WITH\", expressions_1.Source);\n const mode = (0, combi_1.altPrio)(\"IN CHARACTER MODE\", \"IN BYTE MODE\");\n return (0, combi_1.seq)(\"CLEAR\", expressions_1.Target, (0, combi_1.optPrio)(wit), (0, combi_1.optPrio)(mode));\n }\n}\nexports.Clear = Clear;\n//# sourceMappingURL=clear.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/clear.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_cursor.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_cursor.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CloseCursor = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CloseCursor {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CLOSE CURSOR\", expressions_1.SQLSource);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CloseCursor = CloseCursor;\n//# sourceMappingURL=close_cursor.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_cursor.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_dataset.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_dataset.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CloseDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CloseDataset {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CLOSE DATASET\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CloseDataset = CloseDataset;\n//# sourceMappingURL=close_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/collect.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/collect.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Collect = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Collect {\n getMatcher() {\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n const assigning = (0, combi_1.seq)(\"ASSIGNING\", expressions_1.FSTarget);\n return (0, combi_1.seq)(\"COLLECT\", expressions_1.Source, (0, combi_1.opt)(into), (0, combi_1.opt)(assigning));\n }\n}\nexports.Collect = Collect;\n//# sourceMappingURL=collect.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/collect.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Commit = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Commit {\n getMatcher() {\n const work = (0, combi_1.seq)(\"WORK\", (0, combi_1.opt)(\"AND WAIT\"));\n return (0, combi_1.seq)(\"COMMIT\", (0, combi_1.alt)(work, expressions_1.DatabaseConnection));\n }\n}\nexports.Commit = Commit;\n//# sourceMappingURL=commit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit_entities.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit_entities.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CommitEntities = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CommitEntities {\n getMatcher() {\n const s = (0, combi_1.seq)(\"COMMIT ENTITIES\", (0, combi_1.optPrio)(\"IN SIMULATION MODE\"), (0, combi_1.star)((0, combi_1.seq)(\"RESPONSE OF\", expressions_1.NamespaceSimpleName, \"FAILED\", expressions_1.Target, \"REPORTED\", expressions_1.Target)));\n return (0, combi_1.ver)(version_1.Version.v754, s);\n }\n}\nexports.CommitEntities = CommitEntities;\n//# sourceMappingURL=commit_entities.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit_entities.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/communication.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/communication.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Communication = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Communication {\n getMatcher() {\n const length = (0, combi_1.seq)(\"LENGTH\", expressions_1.Target);\n const init = (0, combi_1.seq)(\"INIT ID\", expressions_1.Source, \"DESTINATION\", expressions_1.Target);\n const allocate = (0, combi_1.seq)(\"ALLOCATE ID\", expressions_1.Source);\n const send = (0, combi_1.seq)(\"SEND ID\", expressions_1.Source, \"BUFFER\", expressions_1.Target, (0, combi_1.opt)(length));\n const deallocate = (0, combi_1.seq)(\"DEALLOCATE ID\", expressions_1.Source);\n const accept = (0, combi_1.seq)(\"ACCEPT ID\", expressions_1.Source);\n const receive = (0, combi_1.seq)(\"RECEIVE ID\", expressions_1.Source, \"BUFFER\", expressions_1.Source, (0, combi_1.opt)(length), \"DATAINFO\", expressions_1.Target, \"STATUSINFO\", expressions_1.Target, \"RECEIVED\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"COMMUNICATION\", (0, combi_1.alt)(init, allocate, send, deallocate, receive, accept));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Communication = Communication;\n//# sourceMappingURL=communication.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/communication.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/compute.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/compute.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Compute = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Compute {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"COMPUTE\", (0, combi_1.opt)(\"EXACT\"), expressions_1.Target, \"=\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Compute = Compute;\n//# sourceMappingURL=compute.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/compute.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/concatenate.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/concatenate.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Concatenate = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Concatenate {\n getMatcher() {\n const mode = (0, combi_1.seq)(\"IN\", (0, combi_1.altPrio)(\"BYTE\", \"CHARACTER\"), \"MODE\");\n const blanks = (0, combi_1.str)(\"RESPECTING BLANKS\");\n const sep = (0, combi_1.seq)(\"SEPARATED BY\", expressions_1.Source);\n const options = (0, combi_1.per)(mode, blanks, sep);\n const sourc = (0, combi_1.seq)(expressions_1.Source, (0, combi_1.plus)(expressions_1.Source));\n const lines = (0, combi_1.seq)(\"LINES OF\", expressions_1.Source);\n return (0, combi_1.seq)(\"CONCATENATE\", (0, combi_1.altPrio)(lines, sourc), \"INTO\", expressions_1.Target, (0, combi_1.optPrio)(options));\n }\n}\nexports.Concatenate = Concatenate;\n//# sourceMappingURL=concatenate.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/concatenate.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/condense.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/condense.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Condense = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Condense {\n getMatcher() {\n return (0, combi_1.seq)(\"CONDENSE\", expressions_1.Target, (0, combi_1.opt)(\"NO-GAPS\"));\n }\n}\nexports.Condense = Condense;\n//# sourceMappingURL=condense.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/condense.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Constant = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Constant {\n getMatcher() {\n const def = (0, combi_1.seq)(expressions_1.DefinitionName, (0, combi_1.opt)(expressions_1.ConstantFieldLength), (0, combi_1.per)(expressions_1.Type, expressions_1.Value, expressions_1.Decimals, expressions_1.Length));\n const ret = (0, combi_1.seq)((0, combi_1.alt)(\"CONSTANT\", \"CONSTANTS\"), def, (0, combi_1.optPrio)(\"%_PREDEFINED\"));\n return ret;\n }\n}\nexports.Constant = Constant;\n//# sourceMappingURL=constant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_begin.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_begin.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConstantBegin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ConstantBegin {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CONSTANTS BEGIN OF\", expressions_1.DefinitionName, (0, combi_1.optPrio)(\"%_PREDEFINED\"));\n return ret;\n }\n}\nexports.ConstantBegin = ConstantBegin;\n//# sourceMappingURL=constant_begin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_begin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_end.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_end.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConstantEnd = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ConstantEnd {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CONSTANTS\", \"END\", \"OF\", expressions_1.DefinitionName);\n return ret;\n }\n}\nexports.ConstantEnd = ConstantEnd;\n//# sourceMappingURL=constant_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/contexts.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/contexts.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Contexts = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Contexts {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CONTEXTS\", expressions_1.Field);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Contexts = Contexts;\n//# sourceMappingURL=contexts.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/contexts.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/continue.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/continue.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Continue = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Continue {\n getMatcher() {\n return (0, combi_1.str)(\"CONTINUE\");\n }\n}\nexports.Continue = Continue;\n//# sourceMappingURL=continue.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/continue.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/controls.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/controls.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Controls = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Controls {\n getMatcher() {\n const tableview = (0, combi_1.seq)(\"TABLEVIEW USING SCREEN\", expressions_1.Source);\n const type = (0, combi_1.seq)(\"TYPE\", (0, combi_1.alt)(tableview, \"TABSTRIP\"));\n const ret = (0, combi_1.seq)(\"CONTROLS\", expressions_1.NamespaceSimpleName, type);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Controls = Controls;\n//# sourceMappingURL=controls.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/controls.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Convert = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Convert {\n getMatcher() {\n const intoTime = (0, combi_1.seq)(\"TIME\", expressions_1.Target);\n const intoDate = (0, combi_1.seq)(\"DATE\", expressions_1.Target);\n const into = (0, combi_1.seq)(\"INTO\", (0, combi_1.per)(intoTime, intoDate));\n const daylight = (0, combi_1.seq)(\"DAYLIGHT SAVING TIME\", expressions_1.Source);\n const zone = (0, combi_1.seq)(\"TIME ZONE\", expressions_1.Source);\n const time = (0, combi_1.seq)(\"TIME STAMP\", expressions_1.Source, (0, combi_1.per)(zone, into, daylight));\n const dat = (0, combi_1.seq)(\"DATE\", expressions_1.Source);\n const tim = (0, combi_1.seq)(\"TIME\", expressions_1.Source);\n const stamp = (0, combi_1.seq)(\"INTO TIME STAMP\", expressions_1.Target);\n const invert = (0, combi_1.seq)(\"INTO INVERTED-DATE\", expressions_1.Target);\n const date = (0, combi_1.seq)((0, combi_1.per)(dat, tim), (0, combi_1.per)(daylight, stamp, zone, invert));\n const inv = (0, combi_1.seq)(\"INVERTED-DATE\", expressions_1.Source, \"INTO DATE\", expressions_1.Target);\n return (0, combi_1.seq)(\"CONVERT\", (0, combi_1.alt)(time, date, inv));\n }\n}\nexports.Convert = Convert;\n//# sourceMappingURL=convert.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert_text.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert_text.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConvertText = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ConvertText {\n getMatcher() {\n return (0, combi_1.seq)(\"CONVERT TEXT\", expressions_1.Source, \"INTO SORTABLE CODE\", expressions_1.Target);\n }\n}\nexports.ConvertText = ConvertText;\n//# sourceMappingURL=convert_text.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert_text.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_data.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_data.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CreateData = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\n// todo, similar to DATA or TYPES?\nclass CreateData {\n getMatcher() {\n const areaHandle = (0, combi_1.seq)(\"AREA HANDLE\", expressions_1.Source);\n const typeHandle = (0, combi_1.seq)(\"TYPE HANDLE\", expressions_1.Source);\n const type = (0, combi_1.seq)((0, combi_1.alt)(\"TYPE\", \"TYPE REF TO\", \"TYPE TABLE OF\", \"TYPE TABLE OF REF TO\", \"TYPE SORTED TABLE OF\", \"TYPE HASHED TABLE OF\", \"TYPE STANDARD TABLE OF\", \"TYPE LINE OF\"), (0, combi_1.alt)(expressions_1.TypeName, expressions_1.Dynamic));\n const like = (0, combi_1.seq)((0, combi_1.alt)(\"LIKE\", \"LIKE HASHED TABLE OF\", \"LIKE LINE OF\", \"LIKE STANDARD TABLE OF\", \"LIKE SORTED TABLE OF\", \"LIKE TABLE OF\"), (0, combi_1.alt)(expressions_1.Source, expressions_1.Dynamic));\n const length = (0, combi_1.seq)(\"LENGTH\", expressions_1.Source);\n const initial = (0, combi_1.seq)(\"INITIAL SIZE\", expressions_1.Source);\n const decimals = (0, combi_1.seq)(\"DECIMALS\", expressions_1.Source);\n const uniq = (0, combi_1.alt)(\"UNIQUE\", \"NON-UNIQUE\");\n const emptyKey = (0, combi_1.ver)(version_1.Version.v740sp02, \"EMPTY KEY\");\n const def = (0, combi_1.seq)((0, combi_1.opt)(uniq), (0, combi_1.alt)(\"DEFAULT KEY\", emptyKey));\n const kdef = (0, combi_1.seq)((0, combi_1.opt)(uniq), \"KEY\", (0, combi_1.alt)((0, combi_1.plus)(expressions_1.Field), expressions_1.Dynamic));\n const key = (0, combi_1.seq)(\"WITH\", (0, combi_1.alt)(def, kdef));\n const specified = (0, combi_1.seq)((0, combi_1.alt)(type, like), (0, combi_1.opt)(key), (0, combi_1.opt)(initial), (0, combi_1.opt)(length), (0, combi_1.opt)(decimals));\n const ret = (0, combi_1.seq)(\"CREATE DATA\", expressions_1.Target, (0, combi_1.opt)((0, combi_1.alt)(typeHandle, (0, combi_1.seq)((0, combi_1.opt)(areaHandle), specified))));\n return ret;\n }\n}\nexports.CreateData = CreateData;\n//# sourceMappingURL=create_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_object.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_object.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CreateObject = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass CreateObject {\n getMatcher() {\n const exporting = (0, combi_1.seq)(\"EXPORTING\", expressions_1.ParameterListS);\n const exceptions = (0, combi_1.seq)(\"EXCEPTIONS\", expressions_1.ParameterListExceptions);\n const ptable = (0, combi_1.seq)(\"PARAMETER-TABLE\", expressions_1.Source);\n const etable = (0, combi_1.seq)(\"EXCEPTION-TABLE\", expressions_1.Source);\n const area = (0, combi_1.seq)(\"AREA HANDLE\", expressions_1.Source);\n const type = (0, combi_1.seq)(\"TYPE\", (0, combi_1.altPrio)(expressions_1.ClassName, expressions_1.Dynamic));\n const ret = (0, combi_1.seq)(\"CREATE OBJECT\", expressions_1.Target, (0, combi_1.optPrio)((0, combi_1.per)(type, area)), (0, combi_1.optPrio)((0, combi_1.altPrio)(exporting, ptable)), (0, combi_1.optPrio)((0, combi_1.altPrio)(exceptions, etable)));\n return ret;\n }\n}\nexports.CreateObject = CreateObject;\n//# sourceMappingURL=create_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_ole.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_ole.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CreateOLE = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CreateOLE {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"CREATE OBJECT\", expressions_1.Target, expressions_1.Source, (0, combi_1.opt)(\"NO FLUSH\"), (0, combi_1.opt)(\"QUEUE-ONLY\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.CreateOLE = CreateOLE;\n//# sourceMappingURL=create_ole.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_ole.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Data = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Data {\n getMatcher() {\n return (0, combi_1.seq)(\"DATA\", expressions_1.DataDefinition, (0, combi_1.optPrio)(\"%_PREDEFINED\"));\n }\n}\nexports.Data = Data;\n//# sourceMappingURL=data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_begin.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_begin.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataBegin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass DataBegin {\n getMatcher() {\n const occurs = (0, combi_1.seq)(\"OCCURS\", expressions_1.Integer);\n const structure = (0, combi_1.seq)(\"BEGIN OF\", (0, combi_1.opt)(\"COMMON PART\"), expressions_1.DefinitionName, (0, combi_1.opt)(\"READ-ONLY\"), (0, combi_1.opt)(occurs));\n return (0, combi_1.seq)(\"DATA\", structure);\n }\n}\nexports.DataBegin = DataBegin;\n//# sourceMappingURL=data_begin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_begin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_end.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_end.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataEnd = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass DataEnd {\n getMatcher() {\n const common = (0, combi_1.seq)(\"COMMON PART\", (0, combi_1.optPrio)(expressions_1.DefinitionName));\n const structure = (0, combi_1.seq)(\"END OF\", (0, combi_1.altPrio)(common, expressions_1.DefinitionName));\n const valid = (0, combi_1.seq)(\"VALID BETWEEN\", expressions_1.ComponentName, \"AND\", expressions_1.ComponentName);\n return (0, combi_1.seq)(\"DATA\", structure, (0, combi_1.optPrio)(valid));\n }\n}\nexports.DataEnd = DataEnd;\n//# sourceMappingURL=data_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/define.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/define.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Define = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Define {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"DEFINE\", expressions_1.MacroName);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Define = Define;\n//# sourceMappingURL=define.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/define.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_cluster.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_cluster.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteCluster = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass DeleteCluster {\n getMatcher() {\n const client = (0, combi_1.seq)(\"CLIENT\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"DELETE FROM DATABASE\", expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), expressions_1.SimpleName, (0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.opt)(client), \"ID\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.DeleteCluster = DeleteCluster;\n//# sourceMappingURL=delete_cluster.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_cluster.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_database.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_database.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteDatabase = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst sql_client_1 = __webpack_require__(/*! ../expressions/sql_client */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_client.js\");\nclass DeleteDatabase {\n getMatcher() {\n const where = (0, combi_1.seq)(\"WHERE\", (0, combi_1.altPrio)(expressions_1.SQLCond, expressions_1.Dynamic));\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.opt)(where));\n const table = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), \"FROM\", (0, combi_1.opt)(\"TABLE\"), expressions_1.SQLSourceSimple);\n const ret = (0, combi_1.seq)(\"DELETE\", (0, combi_1.altPrio)(from, table));\n return ret;\n }\n}\nexports.DeleteDatabase = DeleteDatabase;\n//# sourceMappingURL=delete_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dataset.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dataset.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass DeleteDataset {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"DELETE DATASET\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.DeleteDataset = DeleteDataset;\n//# sourceMappingURL=delete_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dynpro.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dynpro.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteDynpro = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass DeleteDynpro {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"DELETE DYNPRO\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.DeleteDynpro = DeleteDynpro;\n//# sourceMappingURL=delete_dynpro.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dynpro.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_internal.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_internal.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteInternal = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass DeleteInternal {\n getMatcher() {\n // todo, is READ and DELETE similar? something can be reused?\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const keyName = (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic);\n const using = (0, combi_1.seq)(\"USING KEY\", keyName);\n const from = (0, combi_1.optPrio)((0, combi_1.seq)(\"FROM\", expressions_1.Source));\n const fromTo = (0, combi_1.seq)(from, (0, combi_1.optPrio)((0, combi_1.seq)(\"TO\", expressions_1.Source)));\n const where = (0, combi_1.seq)(\"WHERE\", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));\n const key = (0, combi_1.seq)(\"WITH TABLE KEY\", (0, combi_1.opt)((0, combi_1.seq)(keyName, \"COMPONENTS\")), (0, combi_1.plus)(expressions_1.ComponentCompare));\n const table = (0, combi_1.seq)(\"TABLE\", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), from, key));\n const other = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), fromTo, key), (0, combi_1.opt)(where));\n const f = (0, combi_1.seq)(expressions_1.FieldSub, (0, combi_1.optPrio)(expressions_1.FieldOffset), (0, combi_1.optPrio)(expressions_1.FieldLength));\n const adjacent = (0, combi_1.seq)(\"ADJACENT DUPLICATES FROM\", expressions_1.Target, (0, combi_1.optPrio)(using), (0, combi_1.opt)((0, combi_1.seq)(\"COMPARING\", (0, combi_1.altPrio)(\"ALL FIELDS\", (0, combi_1.plus)((0, combi_1.altPrio)(f, expressions_1.Dynamic))))), (0, combi_1.optPrio)(using));\n return (0, combi_1.seq)(\"DELETE\", (0, combi_1.alt)(table, adjacent, other));\n }\n}\nexports.DeleteInternal = DeleteInternal;\n//# sourceMappingURL=delete_internal.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_internal.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_memory.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_memory.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteMemory = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass DeleteMemory {\n getMatcher() {\n const memory = (0, combi_1.seq)(\"MEMORY ID\", expressions_1.Source);\n const id = (0, combi_1.seq)(\"ID\", expressions_1.Source);\n const shared = (0, combi_1.seq)(\"SHARED MEMORY\", expressions_1.Field, \"(\", expressions_1.Field, \")\", id);\n const ret = (0, combi_1.seq)(\"DELETE FROM\", (0, combi_1.alt)(memory, shared));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.DeleteMemory = DeleteMemory;\n//# sourceMappingURL=delete_memory.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_memory.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_report.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_report.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteReport = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass DeleteReport {\n getMatcher() {\n const state = (0, combi_1.seq)(\"STATE\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"DELETE REPORT\", expressions_1.Source, (0, combi_1.optPrio)(state));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.DeleteReport = DeleteReport;\n//# sourceMappingURL=delete_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_textpool.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_textpool.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteTextpool = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass DeleteTextpool {\n getMatcher() {\n const language = (0, combi_1.seq)(\"LANGUAGE\", expressions_1.Source);\n const state = (0, combi_1.seq)(\"STATE\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"DELETE TEXTPOOL\", expressions_1.Source, (0, combi_1.opt)(language), (0, combi_1.opt)(state));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.DeleteTextpool = DeleteTextpool;\n//# sourceMappingURL=delete_textpool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_textpool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/demand.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/demand.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Demand = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Demand {\n getMatcher() {\n const field = (0, combi_1.seq)(expressions_1.Field, \"=\", expressions_1.Target);\n const messages = (0, combi_1.seq)(\"MESSAGES INTO\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"DEMAND\", (0, combi_1.plus)(field), \"FROM CONTEXT\", expressions_1.Field, (0, combi_1.opt)(messages));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Demand = Demand;\n//# sourceMappingURL=demand.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/demand.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/describe.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/describe.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Describe = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Describe {\n getMatcher() {\n const tlines = (0, combi_1.seq)(\"LINES\", expressions_1.Target);\n const kind = (0, combi_1.seq)(\"KIND\", expressions_1.Target);\n const occurs = (0, combi_1.seq)(\"OCCURS\", expressions_1.Target);\n const table = (0, combi_1.seq)(\"TABLE\", expressions_1.FieldChain, (0, combi_1.opt)((0, combi_1.per)(tlines, kind, occurs)));\n const mode = (0, combi_1.seq)(\"IN\", (0, combi_1.alt)(\"BYTE\", \"CHARACTER\"), \"MODE\");\n const field = (0, combi_1.seq)(\"FIELD\", expressions_1.Source, (0, combi_1.per)((0, combi_1.seq)(\"TYPE\", expressions_1.Target), (0, combi_1.seq)(\"COMPONENTS\", expressions_1.Target), (0, combi_1.seq)(\"LENGTH\", expressions_1.Target, (0, combi_1.opt)(mode)), (0, combi_1.seq)(\"DECIMALS\", expressions_1.Target), (0, combi_1.seq)(\"HELP-ID\", expressions_1.Target), (0, combi_1.seq)(\"OUTPUT-LENGTH\", expressions_1.Target), (0, combi_1.seq)(\"EDIT MASK\", expressions_1.Target), (0, combi_1.seq)(\"INTO\", expressions_1.Target)));\n const distance = (0, combi_1.seq)(\"DISTANCE BETWEEN\", expressions_1.Source, \"AND\", expressions_1.Source, \"INTO\", expressions_1.Target, mode);\n const lines = (0, combi_1.seq)(\"NUMBER OF LINES\", expressions_1.Target);\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Source);\n const page = (0, combi_1.seq)(\"PAGE\", expressions_1.Source);\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const top = (0, combi_1.seq)(\"TOP-LINES\", expressions_1.Target);\n const lineSize = (0, combi_1.seq)(\"LINE-SIZE\", expressions_1.Target);\n const first = (0, combi_1.seq)(\"FIRST-LINE\", expressions_1.Target);\n const list = (0, combi_1.seq)(\"LIST\", (0, combi_1.per)(lines, index, line, page, top, first, lineSize));\n const ret = (0, combi_1.seq)(\"DESCRIBE\", (0, combi_1.altPrio)(table, field, distance, list));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Describe = Describe;\n//# sourceMappingURL=describe.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/describe.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/detail.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/detail.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Detail = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Detail {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"DETAIL\");\n }\n}\nexports.Detail = Detail;\n//# sourceMappingURL=detail.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/detail.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/divide.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/divide.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Divide = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Divide {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"DIVIDE\", expressions_1.Target, \"BY\", expressions_1.Source);\n return ret;\n }\n}\nexports.Divide = Divide;\n//# sourceMappingURL=divide.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/divide.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/do.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/do.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Do = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Do {\n getMatcher() {\n const range = (0, combi_1.seq)(\"RANGE\", expressions_1.Source);\n const vary = (0, combi_1.seq)(\"VARYING\", expressions_1.Target, \"FROM\", expressions_1.Source, \"NEXT\", expressions_1.Source, (0, combi_1.optPrio)(range));\n const times = (0, combi_1.seq)(expressions_1.Source, \"TIMES\");\n return (0, combi_1.seq)(\"DO\", (0, combi_1.optPrio)((0, combi_1.per)((0, combi_1.plus)(vary), times)));\n }\n}\nexports.Do = Do;\n//# sourceMappingURL=do.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/do.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/editor_call.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/editor_call.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EditorCall = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EditorCall {\n getMatcher() {\n const title = (0, combi_1.seq)(\"TITLE\", expressions_1.Source);\n const options = (0, combi_1.per)(\"DISPLAY-MODE\", title);\n const ret = (0, combi_1.seq)(\"EDITOR-CALL FOR\", (0, combi_1.opt)(\"REPORT\"), expressions_1.Source, (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.EditorCall = EditorCall;\n//# sourceMappingURL=editor_call.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/editor_call.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/else.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/else.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Else = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Else {\n getMatcher() {\n return (0, combi_1.str)(\"ELSE\");\n }\n}\nexports.Else = Else;\n//# sourceMappingURL=else.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/else.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/elseif.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/elseif.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ElseIf = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ElseIf {\n getMatcher() {\n return (0, combi_1.seq)(\"ELSEIF\", expressions_1.Cond);\n }\n}\nexports.ElseIf = ElseIf;\n//# sourceMappingURL=elseif.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/elseif.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndEnhancement = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndEnhancement {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"ENDENHANCEMENT\");\n }\n}\nexports.EndEnhancement = EndEnhancement;\n//# sourceMappingURL=end_enhancement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement_section.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement_section.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndEnhancementSection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndEnhancementSection {\n getMatcher() {\n const ret = (0, combi_1.str)(\"END-ENHANCEMENT-SECTION\");\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.EndEnhancementSection = EndEnhancementSection;\n//# sourceMappingURL=end_enhancement_section.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement_section.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_page.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_page.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndOfPage = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndOfPage {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"END-OF-PAGE\");\n }\n}\nexports.EndOfPage = EndOfPage;\n//# sourceMappingURL=end_of_page.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_page.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_selection.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_selection.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndOfSelection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndOfSelection {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"END-OF-SELECTION\");\n }\n}\nexports.EndOfSelection = EndOfSelection;\n//# sourceMappingURL=end_of_selection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_selection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_injection.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_injection.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndTestInjection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndTestInjection {\n getMatcher() {\n return (0, combi_1.str)(\"END-TEST-INJECTION\");\n }\n}\nexports.EndTestInjection = EndTestInjection;\n//# sourceMappingURL=end_test_injection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_injection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_seam.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_seam.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndTestSeam = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndTestSeam {\n getMatcher() {\n return (0, combi_1.str)(\"END-TEST-SEAM\");\n }\n}\nexports.EndTestSeam = EndTestSeam;\n//# sourceMappingURL=end_test_seam.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_seam.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endat.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endat.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndAt = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndAt {\n getMatcher() {\n const ret = (0, combi_1.str)(\"ENDAT\");\n return ret;\n }\n}\nexports.EndAt = EndAt;\n//# sourceMappingURL=endat.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endat.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcase.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcase.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndCase = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndCase {\n getMatcher() {\n return (0, combi_1.str)(\"ENDCASE\");\n }\n}\nexports.EndCase = EndCase;\n//# sourceMappingURL=endcase.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcase.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcatch.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcatch.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndCatch = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndCatch {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"ENDCATCH\");\n }\n}\nexports.EndCatch = EndCatch;\n//# sourceMappingURL=endcatch.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcatch.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endclass.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endclass.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndClass = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndClass {\n getMatcher() {\n return (0, combi_1.str)(\"ENDCLASS\");\n }\n}\nexports.EndClass = EndClass;\n//# sourceMappingURL=endclass.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endclass.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddefine.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddefine.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndOfDefinition = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndOfDefinition {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"END-OF-DEFINITION\");\n }\n}\nexports.EndOfDefinition = EndOfDefinition;\n//# sourceMappingURL=enddefine.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddefine.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddo.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddo.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndDo = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndDo {\n getMatcher() {\n return (0, combi_1.str)(\"ENDDO\");\n }\n}\nexports.EndDo = EndDo;\n//# sourceMappingURL=enddo.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddo.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endexec.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endexec.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndExec = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndExec {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"ENDEXEC\");\n }\n}\nexports.EndExec = EndExec;\n//# sourceMappingURL=endexec.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endexec.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endform.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endform.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndForm = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndForm {\n getMatcher() {\n const ret = (0, combi_1.str)(\"ENDFORM\");\n return ret;\n }\n}\nexports.EndForm = EndForm;\n//# sourceMappingURL=endform.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endform.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endfunction.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endfunction.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndFunction = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndFunction {\n getMatcher() {\n return (0, combi_1.str)(\"ENDFUNCTION\");\n }\n}\nexports.EndFunction = EndFunction;\n//# sourceMappingURL=endfunction.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endfunction.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endif.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endif.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndIf = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndIf {\n getMatcher() {\n return (0, combi_1.str)(\"ENDIF\");\n }\n}\nexports.EndIf = EndIf;\n//# sourceMappingURL=endif.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endif.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endinterface.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endinterface.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndInterface = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndInterface {\n getMatcher() {\n return (0, combi_1.str)(\"ENDINTERFACE\");\n }\n}\nexports.EndInterface = EndInterface;\n//# sourceMappingURL=endinterface.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endinterface.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endloop.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endloop.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndLoop = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndLoop {\n getMatcher() {\n return (0, combi_1.str)(\"ENDLOOP\");\n }\n}\nexports.EndLoop = EndLoop;\n//# sourceMappingURL=endloop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endloop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmethod.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmethod.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndMethod = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndMethod {\n getMatcher() {\n return (0, combi_1.str)(\"ENDMETHOD\");\n }\n}\nexports.EndMethod = EndMethod;\n//# sourceMappingURL=endmethod.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmethod.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmodule.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmodule.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndModule = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndModule {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"ENDMODULE\");\n }\n}\nexports.EndModule = EndModule;\n//# sourceMappingURL=endmodule.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmodule.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endon.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endon.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndOn = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndOn {\n getMatcher() {\n const ret = (0, combi_1.str)(\"ENDON\");\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.EndOn = EndOn;\n//# sourceMappingURL=endon.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endon.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endprovide.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endprovide.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndProvide = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndProvide {\n getMatcher() {\n const ret = (0, combi_1.str)(\"ENDPROVIDE\");\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.EndProvide = EndProvide;\n//# sourceMappingURL=endprovide.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endprovide.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endselect.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endselect.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndSelect = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndSelect {\n getMatcher() {\n return (0, combi_1.str)(\"ENDSELECT\");\n }\n}\nexports.EndSelect = EndSelect;\n//# sourceMappingURL=endselect.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endselect.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endtry.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endtry.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndTry = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndTry {\n getMatcher() {\n return (0, combi_1.str)(\"ENDTRY\");\n }\n}\nexports.EndTry = EndTry;\n//# sourceMappingURL=endtry.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endtry.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwhile.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwhile.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndWhile = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass EndWhile {\n getMatcher() {\n return (0, combi_1.str)(\"ENDWHILE\");\n }\n}\nexports.EndWhile = EndWhile;\n//# sourceMappingURL=endwhile.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwhile.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwith.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwith.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EndWith = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EndWith {\n getMatcher() {\n return (0, combi_1.ver)(version_1.Version.v751, \"ENDWITH\");\n }\n}\nexports.EndWith = EndWith;\n//# sourceMappingURL=endwith.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwith.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Enhancement = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst namespace_simple_name_1 = __webpack_require__(/*! ../expressions/namespace_simple_name */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/namespace_simple_name.js\");\nclass Enhancement {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"ENHANCEMENT\", (0, combi_1.plus)(namespace_simple_name_1.NamespaceSimpleName));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Enhancement = Enhancement;\n//# sourceMappingURL=enhancement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_point.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_point.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EnhancementPoint = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass EnhancementPoint {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"ENHANCEMENT-POINT\", expressions_1.FieldSub, \"SPOTS\", expressions_1.Field, (0, combi_1.opt)(\"STATIC\"), (0, combi_1.opt)(\"INCLUDE BOUND\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.EnhancementPoint = EnhancementPoint;\n//# sourceMappingURL=enhancement_point.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_point.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_section.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_section.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EnhancementSection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst dash_1 = __webpack_require__(/*! ../../1_lexer/tokens/dash */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/dash.js\");\nclass EnhancementSection {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"ENHANCEMENT-SECTION\", (0, combi_1.seq)(expressions_1.Field, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(dash_1.Dash), expressions_1.Field))), \"SPOTS\", expressions_1.Field, (0, combi_1.opt)(\"STATIC\"), (0, combi_1.opt)(\"INCLUDE BOUND\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.EnhancementSection = EnhancementSection;\n//# sourceMappingURL=enhancement_section.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_section.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/events.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/events.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Events = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Events {\n getMatcher() {\n const exporting = (0, combi_1.seq)(\"EXPORTING\", (0, combi_1.plus)(expressions_1.MethodParamOptional));\n return (0, combi_1.seq)((0, combi_1.altPrio)(\"CLASS-EVENTS\", \"EVENTS\"), expressions_1.EventName, (0, combi_1.optPrio)(exporting));\n }\n}\nexports.Events = Events;\n//# sourceMappingURL=events.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/events.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exec_sql.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exec_sql.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExecSQL = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ExecSQL {\n getMatcher() {\n const performing = (0, combi_1.seq)(\"PERFORMING\", expressions_1.SimpleName);\n const ret = (0, combi_1.seq)(\"EXEC SQL\", (0, combi_1.opt)(performing));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ExecSQL = ExecSQL;\n//# sourceMappingURL=exec_sql.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exec_sql.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exit.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exit.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Exit = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Exit {\n getMatcher() {\n return (0, combi_1.seq)(\"EXIT\", (0, combi_1.opt)((0, combi_1.alt)(\"FROM SQL\", \"FROM STEP-LOOP\")));\n }\n}\nexports.Exit = Exit;\n//# sourceMappingURL=exit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Export = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\n// todo, cloud, split?\nclass Export {\n getMatcher() {\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const client = (0, combi_1.seq)(\"CLIENT\", expressions_1.Source);\n const id = (0, combi_1.seq)(\"ID\", expressions_1.Source);\n const using = (0, combi_1.seq)(\"USING\", expressions_1.Source);\n const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\\w$%\\^]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));\n const buffer = (0, combi_1.seq)(\"DATA BUFFER\", expressions_1.Target);\n const memory = (0, combi_1.seq)(\"MEMORY\", (0, combi_1.opt)((0, combi_1.seq)(\"ID\", expressions_1.Source)));\n const table = (0, combi_1.seq)(\"INTERNAL TABLE\", expressions_1.Target);\n const shared = (0, combi_1.seq)((0, combi_1.alt)(\"SHARED MEMORY\", \"SHARED BUFFER\"), cluster, (0, combi_1.per)(from, client, id));\n const database = (0, combi_1.seq)(\"DATABASE\", cluster, (0, combi_1.per)(from, client, id, using));\n const target = (0, combi_1.alt)(buffer, memory, database, table, shared);\n const left = (0, combi_1.alt)(expressions_1.FieldSub, expressions_1.FieldSymbol);\n const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)(expressions_1.ParameterS, (0, combi_1.seq)(left, from), left)), expressions_1.Dynamic);\n const compression = (0, combi_1.seq)(\"COMPRESSION\", (0, combi_1.alt)(\"ON\", \"OFF\"));\n const hint = (0, combi_1.seq)(\"CODE PAGE HINT\", expressions_1.Source);\n return (0, combi_1.seq)(\"EXPORT\", source, \"TO\", target, (0, combi_1.opt)(compression), (0, combi_1.opt)(hint));\n }\n}\nexports.Export = Export;\n//# sourceMappingURL=export.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export_dynpro.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export_dynpro.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExportDynpro = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ExportDynpro {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"EXPORT DYNPRO\", expressions_1.Source, expressions_1.Source, expressions_1.Source, expressions_1.Source, \"ID\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ExportDynpro = ExportDynpro;\n//# sourceMappingURL=export_dynpro.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export_dynpro.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/extract.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/extract.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Extract = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Extract {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"EXTRACT\", (0, combi_1.opt)(expressions_1.Field));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Extract = Extract;\n//# sourceMappingURL=extract.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/extract.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fetch_next_cursor.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fetch_next_cursor.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FetchNextCursor = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst sql_into_structure_1 = __webpack_require__(/*! ../expressions/sql_into_structure */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_into_structure.js\");\nclass FetchNextCursor {\n getMatcher() {\n const size = (0, combi_1.seq)(\"PACKAGE SIZE\", expressions_1.SQLSource);\n const ret = (0, combi_1.seq)(\"FETCH NEXT CURSOR\", expressions_1.SQLSource, (0, combi_1.alt)(sql_into_structure_1.SQLIntoStructure, expressions_1.SQLIntoTable), (0, combi_1.opt)(size));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.FetchNextCursor = FetchNextCursor;\n//# sourceMappingURL=fetch_next_cursor.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fetch_next_cursor.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/field_group.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/field_group.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldGroup = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass FieldGroup {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"FIELD-GROUPS\", (0, combi_1.plus)(expressions_1.Field));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.FieldGroup = FieldGroup;\n//# sourceMappingURL=field_group.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/field_group.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fields.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fields.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Fields = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Fields {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"FIELDS\", expressions_1.FieldSub);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Fields = Fields;\n//# sourceMappingURL=fields.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fields.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fieldsymbol.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fieldsymbol.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldSymbol = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FieldSymbol {\n getMatcher() {\n const stru = (0, combi_1.seq)(\"STRUCTURE\", expressions_1.TypeName, \"DEFAULT\", expressions_1.Field);\n return (0, combi_1.seq)(\"FIELD-SYMBOLS\", expressions_1.FieldSymbol, (0, combi_1.opt)((0, combi_1.alt)(expressions_1.Type, expressions_1.TypeTable, stru)));\n }\n}\nexports.FieldSymbol = FieldSymbol;\n//# sourceMappingURL=fieldsymbol.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fieldsymbol.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/find.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/find.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Find = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Find {\n getMatcher() {\n // SUBMATCHES handling is a workaround\n const options = (0, combi_1.per)(\"IGNORING CASE\", \"RESPECTING CASE\", \"IN BYTE MODE\", \"IN CHARACTER MODE\", (0, combi_1.seq)(\"OF\", expressions_1.Source), (0, combi_1.seq)(\"FROM\", expressions_1.Source), (0, combi_1.seq)(\"TO\", expressions_1.Source), (0, combi_1.seq)(\"MATCH OFFSET\", expressions_1.Target), (0, combi_1.seq)(\"MATCH LINE\", expressions_1.Target), (0, combi_1.seq)(\"MATCH COUNT\", expressions_1.Target), (0, combi_1.seq)(\"MATCH LENGTH\", expressions_1.Target), (0, combi_1.seq)(\"LENGTH\", expressions_1.Source), (0, combi_1.seq)(\"RESULTS\", expressions_1.Target), (0, combi_1.seq)(\"SUBMATCHES\", expressions_1.Target), (0, combi_1.seq)(\"SUBMATCHES\", expressions_1.Target, expressions_1.Target), (0, combi_1.seq)(\"SUBMATCHES\", (0, combi_1.plus)(expressions_1.Target)));\n const sectionLength = (0, combi_1.seq)(\"SECTION LENGTH\", expressions_1.Source, \"OF\");\n const before = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)(\"TABLE\", \"SECTION OFFSET\", sectionLength)), expressions_1.Source);\n const ret = (0, combi_1.seq)(\"FIND\", (0, combi_1.opt)((0, combi_1.altPrio)(\"FIRST OCCURRENCE OF\", \"ALL OCCURRENCES OF\")), expressions_1.FindType, expressions_1.Source, \"IN\", before, (0, combi_1.opt)(options));\n return ret;\n }\n}\nexports.Find = Find;\n//# sourceMappingURL=find.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/find.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Form = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Form {\n getMatcher() {\n const parameters = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.FormTables), (0, combi_1.opt)(expressions_1.FormUsing), (0, combi_1.opt)(expressions_1.FormChanging), (0, combi_1.opt)(expressions_1.FormRaising));\n const ret = (0, combi_1.seq)(\"FORM\", expressions_1.FormName, (0, combi_1.alt)(\"IMPLEMENTATION\", parameters));\n return ret;\n }\n}\nexports.Form = Form;\n//# sourceMappingURL=form.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form_definition.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form_definition.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormDefinition = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FormDefinition {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"FORM\", expressions_1.FormName, \"DEFINITION\", (0, combi_1.opt)(expressions_1.FormTables), (0, combi_1.opt)(expressions_1.FormUsing), (0, combi_1.opt)(expressions_1.FormChanging), (0, combi_1.opt)(expressions_1.FormRaising));\n return ret;\n }\n}\nexports.FormDefinition = FormDefinition;\n//# sourceMappingURL=form_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/format.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/format.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Format = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Format {\n getMatcher() {\n const eq = (0, combi_1.seq)(\"=\", expressions_1.Source);\n const value = (0, combi_1.altPrio)(eq, \"ON\", \"OFF\");\n const options = (0, combi_1.per)(\"RESET\", (0, combi_1.seq)(\"INTENSIFIED\", (0, combi_1.opt)(value)), (0, combi_1.seq)(\"INVERSE\", (0, combi_1.opt)(value)), (0, combi_1.seq)(\"HOTSPOT\", (0, combi_1.opt)(value)), (0, combi_1.seq)(\"FRAMES\", value), (0, combi_1.seq)(\"INPUT\", value), expressions_1.Color);\n const ret = (0, combi_1.seq)(\"FORMAT\", options);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Format = Format;\n//# sourceMappingURL=format.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/format.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Free = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Free {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"FREE\", expressions_1.Target);\n return ret;\n }\n}\nexports.Free = Free;\n//# sourceMappingURL=free.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_memory.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_memory.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FreeMemory = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass FreeMemory {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"FREE MEMORY\", (0, combi_1.optPrio)((0, combi_1.seq)(\"ID\", expressions_1.Source)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.FreeMemory = FreeMemory;\n//# sourceMappingURL=free_memory.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_memory.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_object.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_object.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FreeObject = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass FreeObject {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"FREE OBJECT\", expressions_1.Target, (0, combi_1.opt)(\"NO FLUSH\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.FreeObject = FreeObject;\n//# sourceMappingURL=free_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_module.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_module.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionModule = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FunctionModule {\n getMatcher() {\n return (0, combi_1.seq)(\"FUNCTION\", expressions_1.Field);\n }\n}\nexports.FunctionModule = FunctionModule;\n//# sourceMappingURL=function_module.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_module.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_pool.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_pool.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionPool = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass FunctionPool {\n getMatcher() {\n const message = (0, combi_1.seq)(\"MESSAGE-ID\", expressions_1.MessageClass);\n const line = (0, combi_1.seq)(\"LINE-SIZE\", expressions_1.Integer);\n const no = (0, combi_1.str)(\"NO STANDARD PAGE HEADING\");\n return (0, combi_1.seq)(\"FUNCTION-POOL\", expressions_1.Field, (0, combi_1.opt)((0, combi_1.per)(message, line, no)));\n }\n}\nexports.FunctionPool = FunctionPool;\n//# sourceMappingURL=function_pool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_pool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_dynpro.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_dynpro.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GenerateDynpro = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GenerateDynpro {\n getMatcher() {\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Target);\n const word = (0, combi_1.seq)(\"WORD\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"GENERATE DYNPRO\", expressions_1.Source, expressions_1.Source, expressions_1.Source, expressions_1.Source, \"ID\", expressions_1.Source, \"MESSAGE\", expressions_1.Target, (0, combi_1.per)(line, word));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GenerateDynpro = GenerateDynpro;\n//# sourceMappingURL=generate_dynpro.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_dynpro.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_report.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_report.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GenerateReport = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GenerateReport {\n getMatcher() {\n const without = (0, combi_1.str)(\"WITHOUT SELECTION-SCREEN\");\n const message = (0, combi_1.seq)(\"MESSAGE\", expressions_1.Target);\n const include = (0, combi_1.seq)(\"INCLUDE\", expressions_1.Target);\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Target);\n const word = (0, combi_1.seq)(\"WORD\", expressions_1.Target);\n const offset = (0, combi_1.seq)(\"OFFSET\", expressions_1.Target);\n const headers = (0, combi_1.str)(\"WITH PRECOMPILED HEADERS\");\n const test = (0, combi_1.str)(\"WITH TEST CODE\");\n const messageid = (0, combi_1.seq)(\"MESSAGE-ID\", expressions_1.Target);\n const trace = (0, combi_1.seq)(\"TRACE-FILE\", expressions_1.Target);\n const shortdumpid = (0, combi_1.seq)(\"SHORTDUMP-ID\", expressions_1.Target);\n const directory = (0, combi_1.seq)(\"DIRECTORY ENTRY\", expressions_1.Target);\n const options = (0, combi_1.per)(without, message, include, trace, line, word, offset, headers, test, messageid, shortdumpid, directory);\n const ret = (0, combi_1.seq)(\"GENERATE REPORT\", expressions_1.Source, (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GenerateReport = GenerateReport;\n//# sourceMappingURL=generate_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_subroutine.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_subroutine.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GenerateSubroutine = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GenerateSubroutine {\n getMatcher() {\n const name = (0, combi_1.seq)(\"NAME\", expressions_1.Source);\n const message = (0, combi_1.seq)(\"MESSAGE\", expressions_1.Target);\n const messageid = (0, combi_1.seq)(\"MESSAGE-ID\", expressions_1.Target);\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Target);\n const word = (0, combi_1.seq)(\"WORD\", expressions_1.Target);\n const offset = (0, combi_1.seq)(\"OFFSET\", expressions_1.Target);\n const short = (0, combi_1.seq)(\"SHORTDUMP-ID\", expressions_1.Target);\n const include = (0, combi_1.seq)(\"INCLUDE\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"GENERATE SUBROUTINE POOL\", expressions_1.Source, (0, combi_1.per)(name, message, line, word, include, offset, messageid, short));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GenerateSubroutine = GenerateSubroutine;\n//# sourceMappingURL=generate_subroutine.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_subroutine.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Get = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Get {\n getMatcher() {\n const fields = (0, combi_1.seq)(\"FIELDS\", (0, combi_1.plus)(expressions_1.Field));\n const options = (0, combi_1.per)(\"LATE\", fields);\n const ret = (0, combi_1.seq)(\"GET\", expressions_1.Target, (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Get = Get;\n//# sourceMappingURL=get.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_badi.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_badi.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetBadi = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetBadi {\n getMatcher() {\n const filters = (0, combi_1.seq)(\"FILTERS\", expressions_1.ParameterListS);\n const context = (0, combi_1.seq)(\"CONTEXT\", expressions_1.Source);\n const type = (0, combi_1.seq)(\"TYPE\", expressions_1.Dynamic);\n const ret = (0, combi_1.seq)(\"GET BADI\", expressions_1.Target, (0, combi_1.opt)(type), (0, combi_1.opt)(filters), (0, combi_1.opt)(context));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetBadi = GetBadi;\n//# sourceMappingURL=get_badi.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_badi.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_bit.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_bit.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetBit = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass GetBit {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"GET BIT\", expressions_1.Source, \"OF\", expressions_1.Source, \"INTO\", expressions_1.Target);\n return ret;\n }\n}\nexports.GetBit = GetBit;\n//# sourceMappingURL=get_bit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_bit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_cursor.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_cursor.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetCursor = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetCursor {\n getMatcher() {\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Target);\n const field = (0, combi_1.seq)(\"FIELD\", expressions_1.Target);\n const offset = (0, combi_1.seq)(\"OFFSET\", expressions_1.Target);\n const value = (0, combi_1.seq)(\"VALUE\", expressions_1.Target);\n const length = (0, combi_1.seq)(\"LENGTH\", expressions_1.Target);\n const area = (0, combi_1.seq)(\"AREA\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"GET CURSOR\", (0, combi_1.per)(line, (0, combi_1.opt)(\"DISPLAY\"), field, offset, value, length, area));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetCursor = GetCursor;\n//# sourceMappingURL=get_cursor.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_cursor.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_dataset.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_dataset.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetDataset {\n getMatcher() {\n const position = (0, combi_1.seq)(\"POSITION\", expressions_1.Target);\n const attr = (0, combi_1.seq)(\"ATTRIBUTES\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"GET DATASET\", expressions_1.Target, (0, combi_1.opt)((0, combi_1.per)(position, attr)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetDataset = GetDataset;\n//# sourceMappingURL=get_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_locale.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_locale.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetLocale = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetLocale {\n getMatcher() {\n const country = (0, combi_1.seq)(\"COUNTRY\", expressions_1.Target);\n const modifier = (0, combi_1.seq)(\"MODIFIER\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"GET LOCALE LANGUAGE\", expressions_1.Target, country, modifier);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetLocale = GetLocale;\n//# sourceMappingURL=get_locale.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_locale.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_parameter.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_parameter.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetParameter = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetParameter {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"GET PARAMETER ID\", expressions_1.Source, \"FIELD\", expressions_1.Target);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetParameter = GetParameter;\n//# sourceMappingURL=get_parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_permissions.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_permissions.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetPermissions = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetPermissions {\n getMatcher() {\n const s = (0, combi_1.seq)(\"GET PERMISSIONS ONLY GLOBAL AUTHORIZATION ENTITY\", expressions_1.SimpleName, \"REQUEST\", expressions_1.Source, \"RESULT\", expressions_1.Target, \"FAILED\", expressions_1.Target, \"REPORTED\", expressions_1.Target);\n return (0, combi_1.ver)(version_1.Version.v754, s);\n }\n}\nexports.GetPermissions = GetPermissions;\n//# sourceMappingURL=get_permissions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_permissions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_pf_status.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_pf_status.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetPFStatus = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetPFStatus {\n getMatcher() {\n const program = (0, combi_1.seq)(\"PROGRAM\", expressions_1.Source);\n const excl = (0, combi_1.seq)(\"EXCLUDING\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"GET PF-STATUS\", expressions_1.Target, (0, combi_1.opt)(program), (0, combi_1.opt)(excl));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetPFStatus = GetPFStatus;\n//# sourceMappingURL=get_pf_status.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_pf_status.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_property.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_property.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetProperty = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetProperty {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"GET PROPERTY OF\", expressions_1.FieldSub, expressions_1.Source, \"=\", expressions_1.Source, (0, combi_1.opt)(\"NO FLUSH\"), (0, combi_1.opt)(expressions_1.OLEExporting));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetProperty = GetProperty;\n//# sourceMappingURL=get_property.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_property.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_reference.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_reference.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetReference = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass GetReference {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"GET REFERENCE OF\", expressions_1.Source, \"INTO\", expressions_1.Target);\n return ret;\n }\n}\nexports.GetReference = GetReference;\n//# sourceMappingURL=get_reference.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_reference.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_run_time.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_run_time.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetRunTime = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass GetRunTime {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"GET RUN TIME FIELD\", expressions_1.Target);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.GetRunTime = GetRunTime;\n//# sourceMappingURL=get_run_time.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_run_time.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_time.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_time.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetTime = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass GetTime {\n getMatcher() {\n const options = (0, combi_1.seq)((0, combi_1.alt)(\"STAMP FIELD\", \"FIELD\"), expressions_1.Target);\n return (0, combi_1.seq)(\"GET TIME\", (0, combi_1.opt)(options));\n }\n}\nexports.GetTime = GetTime;\n//# sourceMappingURL=get_time.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_time.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/hide.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/hide.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Hide = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Hide {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"HIDE\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Hide = Hide;\n//# sourceMappingURL=hide.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/hide.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/if.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/if.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.If = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass If {\n getMatcher() {\n return (0, combi_1.seq)(\"IF\", expressions_1.Cond);\n }\n}\nexports.If = If;\n//# sourceMappingURL=if.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/if.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Import = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Import {\n getMatcher() {\n const dto = (0, combi_1.seq)(\"TO\", expressions_1.Target);\n const client = (0, combi_1.seq)(\"CLIENT\", expressions_1.Source);\n const id = (0, combi_1.seq)(\"ID\", expressions_1.Source);\n const using = (0, combi_1.seq)(\"USING\", expressions_1.Source);\n const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\\w$%\\^]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));\n const buffer = (0, combi_1.seq)(\"DATA BUFFER\", expressions_1.Source);\n const memory = (0, combi_1.seq)(\"MEMORY ID\", expressions_1.Source);\n const table = (0, combi_1.seq)(\"INTERNAL TABLE\", expressions_1.Source);\n const shared = (0, combi_1.seq)((0, combi_1.alt)(\"SHARED MEMORY\", \"SHARED BUFFER\"), cluster, (0, combi_1.per)(dto, client, id));\n const database = (0, combi_1.seq)(\"DATABASE\", cluster, (0, combi_1.per)(dto, client, id, using));\n const source = (0, combi_1.alt)(buffer, memory, database, table, shared);\n const to = (0, combi_1.plus)((0, combi_1.seq)(expressions_1.ComponentChainSimple, (0, combi_1.alt)(\"TO\", \"INTO\"), expressions_1.Target));\n const toeq = (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.alt)(expressions_1.ComponentChainSimple, expressions_1.FieldSymbol), \"=\", expressions_1.Target));\n const target = (0, combi_1.alt)(toeq, to, expressions_1.Dynamic, (0, combi_1.plus)(expressions_1.Target));\n const options = (0, combi_1.per)(\"ACCEPTING PADDING\", \"IGNORING CONVERSION ERRORS\", \"IN CHAR-TO-HEX MODE\", \"IGNORING STRUCTURE BOUNDARIES\", \"ACCEPTING TRUNCATION\", (0, combi_1.seq)(\"REPLACEMENT CHARACTER\", expressions_1.Source), (0, combi_1.seq)(\"CODE PAGE INTO\", expressions_1.Source), (0, combi_1.seq)(\"ENDIAN INTO\", expressions_1.Source));\n const ret = (0, combi_1.seq)(\"IMPORT\", target, \"FROM\", source, (0, combi_1.opt)(options));\n return ret;\n }\n}\nexports.Import = Import;\n//# sourceMappingURL=import.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_dynpro.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_dynpro.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImportDynpro = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ImportDynpro {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"IMPORT DYNPRO\", expressions_1.Target, expressions_1.Target, expressions_1.Target, expressions_1.Target, \"ID\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ImportDynpro = ImportDynpro;\n//# sourceMappingURL=import_dynpro.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_dynpro.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_nametab.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_nametab.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImportNametab = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ImportNametab {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"IMPORT NAMETAB\", expressions_1.Target, expressions_1.Target, \"ID\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ImportNametab = ImportNametab;\n//# sourceMappingURL=import_nametab.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_nametab.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Include = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Include {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"INCLUDE\", expressions_1.IncludeName, (0, combi_1.opt)(\"IF FOUND\"));\n return ret;\n }\n}\nexports.Include = Include;\n//# sourceMappingURL=include.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include_type.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include_type.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IncludeType = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Expressions = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass IncludeType {\n getMatcher() {\n const tas = (0, combi_1.seq)(\"AS\", Expressions.Field);\n const renaming = (0, combi_1.seq)(\"RENAMING WITH SUFFIX\", Expressions.ComponentName);\n const ret = (0, combi_1.seq)(\"INCLUDE\", (0, combi_1.alt)(\"TYPE\", \"STRUCTURE\"), Expressions.TypeName, (0, combi_1.opt)(tas), (0, combi_1.opt)(renaming));\n return ret;\n }\n}\nexports.IncludeType = IncludeType;\n//# sourceMappingURL=include_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js ***! + \*************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n// do not include statement.ts in this file.\n// this file only contains \"real\" statements\n// sequence of exports is optimized for parsing and precedence\n// see statement.ts for Unknown, Empty, Macro and Comment statements\n__exportStar(__webpack_require__(/*! ./data */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data.js\"), exports);\n__exportStar(__webpack_require__(/*! ./report */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/report.js\"), exports);\n__exportStar(__webpack_require__(/*! ./write */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/write.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endmethod */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmethod.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_implementation */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endform */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endform.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form.js\"), exports);\n__exportStar(__webpack_require__(/*! ./import_nametab */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_nametab.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_select_options */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check_select_options.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_badi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_badi.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_data */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_data_begin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_begin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_data_end */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_data_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select_loop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select_loop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./do */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/do.js\"), exports);\n__exportStar(__webpack_require__(/*! ./break_id */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break_id.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface_deferred */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_deferred.js\"), exports);\n__exportStar(__webpack_require__(/*! ./while */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/while.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop_at_screen */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop_at_screen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/check.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endprovide */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endprovide.js\"), exports);\n__exportStar(__webpack_require__(/*! ./if */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/if.js\"), exports);\n__exportStar(__webpack_require__(/*! ./convert_text */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert_text.js\"), exports);\n__exportStar(__webpack_require__(/*! ./log_point */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/log_point.js\"), exports);\n__exportStar(__webpack_require__(/*! ./window */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/window.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endif */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endif.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_enum */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_enum_begin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_begin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_enum_end */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_run_time */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_run_time.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_group */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/field_group.js\"), exports);\n__exportStar(__webpack_require__(/*! ./print_control */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/print_control.js\"), exports);\n__exportStar(__webpack_require__(/*! ./extract */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/extract.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sum */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sum.js\"), exports);\n__exportStar(__webpack_require__(/*! ./end_of_page */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_page.js\"), exports);\n__exportStar(__webpack_require__(/*! ./generate_report */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_report.js\"), exports);\n__exportStar(__webpack_require__(/*! ./elseif */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/elseif.js\"), exports);\n__exportStar(__webpack_require__(/*! ./else */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/else.js\"), exports);\n__exportStar(__webpack_require__(/*! ./perform */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/perform.js\"), exports);\n__exportStar(__webpack_require__(/*! ./append */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/append.js\"), exports);\n__exportStar(__webpack_require__(/*! ./clear */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/clear.js\"), exports);\n__exportStar(__webpack_require__(/*! ./concatenate */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/concatenate.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enddo */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddo.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endclass */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endclass.js\"), exports);\n__exportStar(__webpack_require__(/*! ./try */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/try.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endtry */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endtry.js\"), exports);\n__exportStar(__webpack_require__(/*! ./assert */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assert.js\"), exports);\n__exportStar(__webpack_require__(/*! ./return */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/return.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endwhile */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwhile.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constant */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./catch */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch.js\"), exports);\n__exportStar(__webpack_require__(/*! ./infotypes */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/infotypes.js\"), exports);\n__exportStar(__webpack_require__(/*! ./message */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/message.js\"), exports);\n__exportStar(__webpack_require__(/*! ./read_table */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_table.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endloop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endloop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./case */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case.js\"), exports);\n__exportStar(__webpack_require__(/*! ./create_object */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_local_friends */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_local_friends.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_deferred */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_deferred.js\"), exports);\n__exportStar(__webpack_require__(/*! ./fieldsymbol */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fieldsymbol.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_definition */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_implementation */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./translate */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/translate.js\"), exports);\n__exportStar(__webpack_require__(/*! ./exit */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exit.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endcase */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcase.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constant_begin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_begin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constant_end */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/constant_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./when_others */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_others.js\"), exports);\n__exportStar(__webpack_require__(/*! ./when */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when.js\"), exports);\n__exportStar(__webpack_require__(/*! ./continue */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/continue.js\"), exports);\n__exportStar(__webpack_require__(/*! ./assign */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_badi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_badi.js\"), exports);\n__exportStar(__webpack_require__(/*! ./suppress_dialog */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/suppress_dialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./hide */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/hide.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_locale */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_locale.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_locale */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locale.js\"), exports);\n__exportStar(__webpack_require__(/*! ./commit */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit.js\"), exports);\n__exportStar(__webpack_require__(/*! ./modify_screen */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_screen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./commit_entities */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit_entities.js\"), exports);\n__exportStar(__webpack_require__(/*! ./modify_entities */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_entities.js\"), exports);\n__exportStar(__webpack_require__(/*! ./read_entities */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_entities.js\"), exports);\n__exportStar(__webpack_require__(/*! ./rollback_entities */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback_entities.js\"), exports);\n__exportStar(__webpack_require__(/*! ./summary */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/summary.js\"), exports);\n__exportStar(__webpack_require__(/*! ./on_change */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/on_change.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at_user_command */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_user_command.js\"), exports);\n__exportStar(__webpack_require__(/*! ./position */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/position.js\"), exports);\n__exportStar(__webpack_require__(/*! ./resume */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/resume.js\"), exports);\n__exportStar(__webpack_require__(/*! ./stop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/stop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_pf_status */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_pf_status.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_report */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_report.js\"), exports);\n__exportStar(__webpack_require__(/*! ./controls */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/controls.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at_line_selection */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_line_selection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./new_page */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_page.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_property */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_property.js\"), exports);\n__exportStar(__webpack_require__(/*! ./scroll_list */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scroll_list.js\"), exports);\n__exportStar(__webpack_require__(/*! ./load_of_program */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_of_program.js\"), exports);\n__exportStar(__webpack_require__(/*! ./top_of_page */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/top_of_page.js\"), exports);\n__exportStar(__webpack_require__(/*! ./truncate_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/truncate_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_update_task */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_update_task.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_user_command */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_user_command.js\"), exports);\n__exportStar(__webpack_require__(/*! ./rollback */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_internal */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_internal.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_database */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_database.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./free_memory */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_memory.js\"), exports);\n__exportStar(__webpack_require__(/*! ./catch_system_exceptions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/catch_system_exceptions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endcatch */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endcatch.js\"), exports);\n__exportStar(__webpack_require__(/*! ./assign_local_copy */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/assign_local_copy.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_extended_check */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_extended_check.js\"), exports);\n__exportStar(__webpack_require__(/*! ./split */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/split.js\"), exports);\n__exportStar(__webpack_require__(/*! ./new_line */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_line.js\"), exports);\n__exportStar(__webpack_require__(/*! ./free_object */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sort */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort.js\"), exports);\n__exportStar(__webpack_require__(/*! ./replace */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/replace.js\"), exports);\n__exportStar(__webpack_require__(/*! ./with_loop */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with_loop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./with */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endwith */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endwith.js\"), exports);\n__exportStar(__webpack_require__(/*! ./condense */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/condense.js\"), exports);\n__exportStar(__webpack_require__(/*! ./insert_internal */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_internal.js\"), exports);\n__exportStar(__webpack_require__(/*! ./insert_database */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_database.js\"), exports);\n__exportStar(__webpack_require__(/*! ./insert_field_group */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_field_group.js\"), exports);\n__exportStar(__webpack_require__(/*! ./update_database */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/update_database.js\"), exports);\n__exportStar(__webpack_require__(/*! ./modify_database */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_database.js\"), exports);\n__exportStar(__webpack_require__(/*! ./modify_internal */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_internal.js\"), exports);\n__exportStar(__webpack_require__(/*! ./raise */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise.js\"), exports);\n__exportStar(__webpack_require__(/*! ./define */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/define.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enddefine */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enddefine.js\"), exports);\n__exportStar(__webpack_require__(/*! ./find */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/find.js\"), exports);\n__exportStar(__webpack_require__(/*! ./move */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move.js\"), exports);\n__exportStar(__webpack_require__(/*! ./move_corresponding */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move_corresponding.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_time */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_time.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enhancement_point */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_point.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enhancement_section */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement_section.js\"), exports);\n__exportStar(__webpack_require__(/*! ./end_enhancement_section */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement_section.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_handler */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_handler.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_left */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_left.js\"), exports);\n__exportStar(__webpack_require__(/*! ./pack */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/pack.js\"), exports);\n__exportStar(__webpack_require__(/*! ./case_type */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/case_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./when_type */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./exec_sql */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/exec_sql.js\"), exports);\n__exportStar(__webpack_require__(/*! ./open_cursor */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_cursor.js\"), exports);\n__exportStar(__webpack_require__(/*! ./communication */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/communication.js\"), exports);\n__exportStar(__webpack_require__(/*! ./generate_subroutine */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_subroutine.js\"), exports);\n__exportStar(__webpack_require__(/*! ./reject */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reject.js\"), exports);\n__exportStar(__webpack_require__(/*! ./load_report */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_report.js\"), exports);\n__exportStar(__webpack_require__(/*! ./private */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/private.js\"), exports);\n__exportStar(__webpack_require__(/*! ./system_call */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/system_call.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_language */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_language.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_dialog */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_dialog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./protected */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/protected.js\"), exports);\n__exportStar(__webpack_require__(/*! ./public */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/public.js\"), exports);\n__exportStar(__webpack_require__(/*! ./nodes */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/nodes.js\"), exports);\n__exportStar(__webpack_require__(/*! ./demand */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/demand.js\"), exports);\n__exportStar(__webpack_require__(/*! ./supply */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/supply.js\"), exports);\n__exportStar(__webpack_require__(/*! ./fields */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fields.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_cluster */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_cluster.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_margin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_margin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_database */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_database.js\"), exports);\n__exportStar(__webpack_require__(/*! ./contexts */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/contexts.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endinterface */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endinterface.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/parameter.js\"), exports);\n__exportStar(__webpack_require__(/*! ./include */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include.js\"), exports);\n__exportStar(__webpack_require__(/*! ./collect */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/collect.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ranges */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/ranges.js\"), exports);\n__exportStar(__webpack_require__(/*! ./events */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/events.js\"), exports);\n__exportStar(__webpack_require__(/*! ./receive */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/receive.js\"), exports);\n__exportStar(__webpack_require__(/*! ./back */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/back.js\"), exports);\n__exportStar(__webpack_require__(/*! ./add_corresponding */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add_corresponding.js\"), exports);\n__exportStar(__webpack_require__(/*! ./subtract_corresponding */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract_corresponding.js\"), exports);\n__exportStar(__webpack_require__(/*! ./static_begin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_begin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./static_end */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./tables */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/tables.js\"), exports);\n__exportStar(__webpack_require__(/*! ./local */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/local.js\"), exports);\n__exportStar(__webpack_require__(/*! ./add */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/add.js\"), exports);\n__exportStar(__webpack_require__(/*! ./describe */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/describe.js\"), exports);\n__exportStar(__webpack_require__(/*! ./submit */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/submit.js\"), exports);\n__exportStar(__webpack_require__(/*! ./scan */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scan.js\"), exports);\n__exportStar(__webpack_require__(/*! ./export */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export.js\"), exports);\n__exportStar(__webpack_require__(/*! ./import */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at_first */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_first.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at_last */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_last.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at.js\"), exports);\n__exportStar(__webpack_require__(/*! ./put */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/put.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endat */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endat.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endselect */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endselect.js\"), exports);\n__exportStar(__webpack_require__(/*! ./refresh */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shift */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/shift.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_mesh */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh.js\"), exports);\n__exportStar(__webpack_require__(/*! ./transfer */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/transfer.js\"), exports);\n__exportStar(__webpack_require__(/*! ./subtract */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unassign */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unassign.js\"), exports);\n__exportStar(__webpack_require__(/*! ./open_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./close_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface_load */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_load.js\"), exports);\n__exportStar(__webpack_require__(/*! ./close_cursor */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/close_cursor.js\"), exports);\n__exportStar(__webpack_require__(/*! ./leave */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/leave.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_definition_load */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition_load.js\"), exports);\n__exportStar(__webpack_require__(/*! ./initialization */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/initialization.js\"), exports);\n__exportStar(__webpack_require__(/*! ./start_of_selection */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/start_of_selection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_blank */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_blank.js\"), exports);\n__exportStar(__webpack_require__(/*! ./export_dynpro */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/export_dynpro.js\"), exports);\n__exportStar(__webpack_require__(/*! ./end_of_selection */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_of_selection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./search */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/search.js\"), exports);\n__exportStar(__webpack_require__(/*! ./modify_line */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_line.js\"), exports);\n__exportStar(__webpack_require__(/*! ./selectionscreen */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectionscreen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./free */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endon */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endon.js\"), exports);\n__exportStar(__webpack_require__(/*! ./fetch_next_cursor */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/fetch_next_cursor.js\"), exports);\n__exportStar(__webpack_require__(/*! ./reserve */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reserve.js\"), exports);\n__exportStar(__webpack_require__(/*! ./refresh_control */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh_control.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_dynpro */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_dynpro.js\"), exports);\n__exportStar(__webpack_require__(/*! ./generate_dynpro */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/generate_dynpro.js\"), exports);\n__exportStar(__webpack_require__(/*! ./detail */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/detail.js\"), exports);\n__exportStar(__webpack_require__(/*! ./editor_call */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/editor_call.js\"), exports);\n__exportStar(__webpack_require__(/*! ./break */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_textpool */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_textpool.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get.js\"), exports);\n__exportStar(__webpack_require__(/*! ./selectoption */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectoption.js\"), exports);\n__exportStar(__webpack_require__(/*! ./convert */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert.js\"), exports);\n__exportStar(__webpack_require__(/*! ./static */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static.js\"), exports);\n__exportStar(__webpack_require__(/*! ./compute */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/compute.js\"), exports);\n__exportStar(__webpack_require__(/*! ./multiply */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/multiply.js\"), exports);\n__exportStar(__webpack_require__(/*! ./divide */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/divide.js\"), exports);\n__exportStar(__webpack_require__(/*! ./format */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/format.js\"), exports);\n__exportStar(__webpack_require__(/*! ./syntax_check */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/syntax_check.js\"), exports);\n__exportStar(__webpack_require__(/*! ./aliases */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/aliases.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_def */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_def.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_mesh_begin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_begin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_mesh_end */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface_def */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_def.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at_selection_screen */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/at_selection_screen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./include_type */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/include_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./import_dynpro */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/import_dynpro.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_function */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_function.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_selection_screen */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_selection_screen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_transformation */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transformation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./read_line */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_line.js\"), exports);\n__exportStar(__webpack_require__(/*! ./read_textpool */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_textpool.js\"), exports);\n__exportStar(__webpack_require__(/*! ./read_report */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_report.js\"), exports);\n__exportStar(__webpack_require__(/*! ./read_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_bit */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_bit.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_reference */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_reference.js\"), exports);\n__exportStar(__webpack_require__(/*! ./insert_report */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_report.js\"), exports);\n__exportStar(__webpack_require__(/*! ./insert_textpool */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_textpool.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_bit */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_bit.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_run_time */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_run_time.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_parameter */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_parameter.js\"), exports);\n__exportStar(__webpack_require__(/*! ./create_data */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_data.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_country */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_country.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_module */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_module.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_pools */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pools.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_pool */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pool.js\"), exports);\n__exportStar(__webpack_require__(/*! ./wait */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js\"), exports);\n__exportStar(__webpack_require__(/*! ./overlay */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/overlay.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_screen */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_screen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_cursor */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_cursor.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_screen */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_screen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_pf_status */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_pf_status.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_titlebar */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_titlebar.js\"), exports);\n__exportStar(__webpack_require__(/*! ./program */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/program.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_pool */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/function_pool.js\"), exports);\n__exportStar(__webpack_require__(/*! ./module */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/module.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endmodule */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endmodule.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endfunction */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endfunction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./retry */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/retry.js\"), exports);\n__exportStar(__webpack_require__(/*! ./authority_check */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/authority_check.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_parameter */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_parameter.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_cursor */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_cursor.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_kernel */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_kernel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_transaction */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_transaction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unpack */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unpack.js\"), exports);\n__exportStar(__webpack_require__(/*! ./skip */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/skip.js\"), exports);\n__exportStar(__webpack_require__(/*! ./uline */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/uline.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data_begin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_begin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data_end */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/data_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_begin */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_begin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_end */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./raise_event */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise_event.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cleanup */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/cleanup.js\"), exports);\n__exportStar(__webpack_require__(/*! ./create_ole */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/create_ole.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_ole */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/call_ole.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_property */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_property.js\"), exports);\n__exportStar(__webpack_require__(/*! ./test_injection */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_injection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./end_test_injection */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_injection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./test_seam */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_seam.js\"), exports);\n__exportStar(__webpack_require__(/*! ./end_test_seam */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_test_seam.js\"), exports);\n__exportStar(__webpack_require__(/*! ./delete_memory */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_memory.js\"), exports);\n__exportStar(__webpack_require__(/*! ./provide */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/provide.js\"), exports);\n__exportStar(__webpack_require__(/*! ./endexec */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/endexec.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sort_dataset */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort_dataset.js\"), exports);\n__exportStar(__webpack_require__(/*! ./get_permissions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get_permissions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./set_locks */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locks.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enhancement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./end_enhancement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_definition */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form_definition.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/infotypes.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/infotypes.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Infotypes = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Infotypes {\n getMatcher() {\n const occurs = (0, combi_1.seq)(\"OCCURS\", expressions_1.Constant);\n const name = (0, combi_1.seq)(\"NAME\", expressions_1.Field);\n const ret = (0, combi_1.seq)(\"INFOTYPES\", expressions_1.Constant, (0, combi_1.optPrio)(occurs), (0, combi_1.optPrio)(name));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Infotypes = Infotypes;\n//# sourceMappingURL=infotypes.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/infotypes.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/initialization.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/initialization.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Initialization = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Initialization {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"INITIALIZATION\");\n }\n}\nexports.Initialization = Initialization;\n//# sourceMappingURL=initialization.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/initialization.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_database.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_database.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertDatabase = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass InsertDatabase {\n getMatcher() {\n const sub = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.Select, (0, combi_1.tok)(tokens_1.WParenRightW));\n const f = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), \"FROM\", (0, combi_1.opt)(\"TABLE\"), (0, combi_1.alt)(expressions_1.SQLSource, sub), (0, combi_1.opt)(\"ACCEPTING DUPLICATE KEYS\"));\n const from = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.opt)((0, combi_1.alt)(f, expressions_1.SQLClient, expressions_1.DatabaseConnection)));\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), \"VALUES\", expressions_1.SQLSource);\n return (0, combi_1.seq)(\"INSERT\", (0, combi_1.alt)(from, into));\n }\n}\nexports.InsertDatabase = InsertDatabase;\n//# sourceMappingURL=insert_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_field_group.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_field_group.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertFieldGroup = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InsertFieldGroup {\n getMatcher() {\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n const src = (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.plus)(expressions_1.Source)), (0, combi_1.plus)(expressions_1.SimpleSource1));\n const ret = (0, combi_1.seq)(\"INSERT\", src, into);\n return ret;\n }\n}\nexports.InsertFieldGroup = InsertFieldGroup;\n//# sourceMappingURL=insert_field_group.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_field_group.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_internal.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_internal.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertInternal = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InsertInternal {\n getMatcher() {\n const target = (0, combi_1.altPrio)(expressions_1.Source, expressions_1.Dynamic);\n const assigning = (0, combi_1.seq)(\"ASSIGNING\", expressions_1.FSTarget);\n const ref = (0, combi_1.seq)(\"REFERENCE INTO\", expressions_1.Target);\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const initial = (0, combi_1.str)(\"INITIAL LINE\");\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n const intoTable = (0, combi_1.seq)(\"INTO TABLE\", expressions_1.Target, (0, combi_1.opt)((0, combi_1.alt)(ref, assigning)));\n const to = (0, combi_1.seq)(\"TO\", expressions_1.Source);\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const fromTo = (0, combi_1.opt)((0, combi_1.per)(from, to));\n const foo = (0, combi_1.alt)(intoTable, (0, combi_1.seq)(into, (0, combi_1.opt)((0, combi_1.per)(index, (0, combi_1.alt)(ref, assigning)))), (0, combi_1.per)(index, (0, combi_1.alt)(ref, assigning)));\n const lines = (0, combi_1.seq)(\"LINES OF\", target, (0, combi_1.opt)(fromTo));\n const src = (0, combi_1.alt)(expressions_1.SimpleSource4, (0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source));\n const tab = (0, combi_1.seq)(\"TABLE\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"INSERT\", (0, combi_1.altPrio)(tab, (0, combi_1.seq)((0, combi_1.altPrio)(initial, lines, src), foo)));\n return ret;\n }\n}\nexports.InsertInternal = InsertInternal;\n//# sourceMappingURL=insert_internal.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_internal.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_report.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_report.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertReport = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass InsertReport {\n getMatcher() {\n const options = (0, combi_1.per)((0, combi_1.seq)(\"STATE\", expressions_1.Source), (0, combi_1.seq)(\"EXTENSION TYPE\", expressions_1.Source), (0, combi_1.seq)(\"DIRECTORY ENTRY\", expressions_1.Source), (0, combi_1.seq)(\"UNICODE ENABLING\", expressions_1.Source), (0, combi_1.seq)(\"PROGRAM TYPE\", expressions_1.Source), (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"VERSION\", expressions_1.Source)), (0, combi_1.seq)(\"FIXED-POINT ARITHMETIC\", expressions_1.Source), \"KEEPING DIRECTORY ENTRY\");\n const ret = (0, combi_1.seq)(\"INSERT REPORT\", expressions_1.Source, \"FROM\", expressions_1.Source, (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.InsertReport = InsertReport;\n//# sourceMappingURL=insert_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_textpool.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_textpool.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertTextpool = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass InsertTextpool {\n getMatcher() {\n const state = (0, combi_1.seq)(\"STATE\", expressions_1.Source);\n const language = (0, combi_1.seq)(\"LANGUAGE\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"INSERT TEXTPOOL\", expressions_1.Source, \"FROM\", expressions_1.Source, (0, combi_1.opt)(language), (0, combi_1.opt)(state));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.InsertTextpool = InsertTextpool;\n//# sourceMappingURL=insert_textpool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/insert_textpool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Interface = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Interface {\n getMatcher() {\n return (0, combi_1.seq)(\"INTERFACE\", expressions_1.InterfaceName, (0, combi_1.opt)(expressions_1.ClassGlobal));\n }\n}\nexports.Interface = Interface;\n//# sourceMappingURL=interface.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_def.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_def.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InterfaceDef = void 0;\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InterfaceDef {\n getMatcher() {\n const val = (0, combi_1.seq)(expressions_1.AttributeName, \"=\", expressions_1.Source);\n const dataValues = (0, combi_1.seq)(\"DATA VALUES\", (0, combi_1.plus)(val));\n const options = (0, combi_1.alt)(expressions_1.AbstractMethods, expressions_1.FinalMethods, \"ALL METHODS ABSTRACT\", \"ALL METHODS FINAL\", (0, combi_1.ver)(version_1.Version.v740sp02, \"PARTIALLY IMPLEMENTED\"));\n return (0, combi_1.seq)(\"INTERFACES\", expressions_1.InterfaceName, (0, combi_1.opt)(options), (0, combi_1.opt)(dataValues));\n }\n}\nexports.InterfaceDef = InterfaceDef;\n//# sourceMappingURL=interface_def.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_def.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_deferred.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_deferred.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InterfaceDeferred = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InterfaceDeferred {\n getMatcher() {\n return (0, combi_1.seq)(\"INTERFACE\", expressions_1.InterfaceName, \"DEFERRED\", (0, combi_1.opt)(\"PUBLIC\"));\n }\n}\nexports.InterfaceDeferred = InterfaceDeferred;\n//# sourceMappingURL=interface_deferred.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_deferred.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_load.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_load.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InterfaceLoad = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InterfaceLoad {\n getMatcher() {\n return (0, combi_1.seq)(\"INTERFACE\", expressions_1.InterfaceName, \"LOAD\");\n }\n}\nexports.InterfaceLoad = InterfaceLoad;\n//# sourceMappingURL=interface_load.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/interface_load.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/leave.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/leave.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Leave = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Leave {\n getMatcher() {\n const retu = (0, combi_1.seq)(expressions_1.AndReturn, \"TO SCREEN\", expressions_1.Source);\n const transaction = (0, combi_1.seq)(\"TO TRANSACTION\", expressions_1.Source, (0, combi_1.opt)(\"AND SKIP FIRST SCREEN\"));\n const ret = (0, combi_1.seq)(\"LEAVE\", (0, combi_1.opt)((0, combi_1.alt)(\"TO CURRENT TRANSACTION\", (0, combi_1.seq)((0, combi_1.opt)(\"TO\"), \"LIST-PROCESSING\", (0, combi_1.opt)(retu)), \"LIST-PROCESSING\", \"SCREEN\", transaction, \"PROGRAM\", (0, combi_1.seq)(\"TO SCREEN\", expressions_1.Source))));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Leave = Leave;\n//# sourceMappingURL=leave.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/leave.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_of_program.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_of_program.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoadOfProgram = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass LoadOfProgram {\n getMatcher() {\n const ret = (0, combi_1.str)(\"LOAD-OF-PROGRAM\");\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.LoadOfProgram = LoadOfProgram;\n//# sourceMappingURL=load_of_program.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_of_program.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_report.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_report.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoadReport = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass LoadReport {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"LOAD REPORT\", expressions_1.Source, \"PART\", expressions_1.Source, \"INTO\", expressions_1.Target);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.LoadReport = LoadReport;\n//# sourceMappingURL=load_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/load_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/local.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/local.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Local = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Local {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"LOCAL\", expressions_1.FieldSub, (0, combi_1.opt)(expressions_1.TableBody));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Local = Local;\n//# sourceMappingURL=local.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/local.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/log_point.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/log_point.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LogPoint = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass LogPoint {\n getMatcher() {\n const subkey = (0, combi_1.seq)(\"SUBKEY\", expressions_1.Source);\n const fields = (0, combi_1.seq)(\"FIELDS\", (0, combi_1.plus)(expressions_1.Source));\n const ret = (0, combi_1.seq)(\"LOG-POINT ID\", expressions_1.NamespaceSimpleName, (0, combi_1.opt)(subkey), (0, combi_1.opt)(fields));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.LogPoint = LogPoint;\n//# sourceMappingURL=log_point.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/log_point.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Loop = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst simple_source2_1 = __webpack_require__(/*! ../expressions/simple_source2 */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source2.js\");\nconst loop_group_by_1 = __webpack_require__(/*! ../expressions/loop_group_by */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by.js\");\nclass Loop {\n getMatcher() {\n const where = (0, combi_1.seq)(\"WHERE\", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));\n const group = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)(\"GROUP BY\", loop_group_by_1.LoopGroupBy));\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const to = (0, combi_1.seq)(\"TO\", expressions_1.Source);\n const usingKey = (0, combi_1.seq)(\"USING KEY\", (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic));\n const options = (0, combi_1.per)(expressions_1.LoopTarget, from, to, where, usingKey, group);\n const at = (0, combi_1.seq)(\"AT\", (0, combi_1.opt)((0, combi_1.seq)(\"SCREEN\", (0, combi_1.failCombinator)())), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp08, \"GROUP\")), (0, combi_1.alt)(simple_source2_1.SimpleSource2, (0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source)), (0, combi_1.opt)(options));\n return (0, combi_1.seq)(\"LOOP\", (0, combi_1.opt)(at));\n }\n}\nexports.Loop = Loop;\n//# sourceMappingURL=loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop_at_screen.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop_at_screen.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopAtScreen = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass LoopAtScreen {\n getMatcher() {\n const l = (0, combi_1.seq)(\"LOOP AT SCREEN\", (0, combi_1.opt)((0, combi_1.seq)(\"INTO\", expressions_1.Target)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, l);\n }\n}\nexports.LoopAtScreen = LoopAtScreen;\n//# sourceMappingURL=loop_at_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop_at_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/message.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/message.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Message = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Message {\n getMatcher() {\n const s = (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source), expressions_1.SimpleSource3);\n const like = (0, combi_1.seq)(\"DISPLAY LIKE\", expressions_1.Source);\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n const raising = (0, combi_1.seq)(\"RAISING\", expressions_1.ExceptionName);\n const options = (0, combi_1.per)(like, into, raising);\n const type = (0, combi_1.seq)(\"TYPE\", expressions_1.Source);\n const sou = (0, combi_1.altPrio)(options, s);\n const sourc = (0, combi_1.alt)(sou, (0, combi_1.seq)(s, sou), (0, combi_1.seq)(s, s, sou), (0, combi_1.seq)(s, s, s, options));\n const mwith = (0, combi_1.seq)(\"WITH\", s, (0, combi_1.opt)(sourc));\n const foo = (0, combi_1.seq)(expressions_1.MessageSource, (0, combi_1.opt)(options), (0, combi_1.opt)(mwith));\n const text = (0, combi_1.seq)(s, type, (0, combi_1.optPrio)(like), (0, combi_1.optPrio)(raising));\n const cloud1 = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.seq)(\"WITH\", expressions_1.Source, (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source))), (0, combi_1.altPrio)(into, raising));\n const cloud2 = (0, combi_1.seq)((0, combi_1.altPrio)(into, raising), (0, combi_1.opt)((0, combi_1.seq)(\"WITH\", expressions_1.Source, (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source))));\n const cloud = (0, combi_1.seq)(expressions_1.MessageSource, (0, combi_1.alt)(cloud1, cloud2));\n const ret = (0, combi_1.seq)(\"MESSAGE\", (0, combi_1.altPrio)((0, combi_1.verNot)(version_1.Version.Cloud, foo), (0, combi_1.verNot)(version_1.Version.Cloud, text), (0, combi_1.ver)(version_1.Version.Cloud, cloud)));\n return ret;\n }\n}\nexports.Message = Message;\n//# sourceMappingURL=message.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/message.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_def.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_def.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDef = void 0;\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodDef {\n getMatcher() {\n const def = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)(\"DEFAULT\", (0, combi_1.altPrio)(\"FAIL\", \"IGNORE\")));\n const parameters = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)(\"FINAL\", def, expressions_1.Abstract)), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefChanging), (0, combi_1.optPrio)(expressions_1.MethodDefReturning), (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));\n const testing = (0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), \"FOR TESTING\", (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));\n // todo, this is only from version something\n const tableFunction = (0, combi_1.seq)(\"TABLE FUNCTION\", (0, combi_1.regex)(/^\\w+?$/));\n // todo, this is only from version something\n const ddl = \"DDL OBJECT OPTIONS CDS SESSION CLIENT REQUIRED\";\n const result = (0, combi_1.seq)(\"RESULT\", expressions_1.MethodParamName);\n const link = (0, combi_1.seq)(\"LINK\", expressions_1.MethodParamName);\n const full = (0, combi_1.seq)(\"FULL\", expressions_1.MethodParamName);\n const modify = (0, combi_1.alt)((0, combi_1.seq)(\"FOR ACTION\", expressions_1.TypeName, (0, combi_1.optPrio)(result)), (0, combi_1.seq)(\"FOR CREATE\", (0, combi_1.alt)(expressions_1.TypeName, expressions_1.EntityAssociation)), (0, combi_1.seq)(\"FOR DELETE\", expressions_1.TypeName), (0, combi_1.seq)(\"FOR UPDATE\", expressions_1.TypeName));\n const behavior = (0, combi_1.altPrio)((0, combi_1.seq)(\"VALIDATE ON SAVE IMPORTING\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName), (0, combi_1.seq)(\"MODIFY IMPORTING\", expressions_1.MethodParamName, modify), (0, combi_1.seq)(\"READ IMPORTING\", expressions_1.MethodParamName, \"FOR READ\", (0, combi_1.alt)(expressions_1.TypeName, expressions_1.EntityAssociation), (0, combi_1.optPrio)(full), result, (0, combi_1.optPrio)(link)), (0, combi_1.seq)(\"FEATURES IMPORTING\", expressions_1.MethodParamName, \"REQUEST\", expressions_1.NamespaceSimpleName, \"FOR\", expressions_1.NamespaceSimpleName, result), (0, combi_1.seq)(\"BEHAVIOR IMPORTING\", expressions_1.MethodParamName, \"FOR CREATE\", expressions_1.TypeName, expressions_1.MethodParamName, \"FOR UPDATE\", expressions_1.TypeName, expressions_1.MethodParamName, \"FOR DELETE\", expressions_1.TypeName), (0, combi_1.seq)(\"BEHAVIOR IMPORTING\", expressions_1.MethodParamName, \"FOR READ\", expressions_1.TypeName, result), (0, combi_1.seq)((0, combi_1.alt)(\"BEHAVIOR\", \"LOCK\"), \"IMPORTING\", expressions_1.MethodParamName, \"FOR LOCK\", expressions_1.TypeName), (0, combi_1.seq)(\"DETERMINE\", (0, combi_1.alt)(\"ON MODIFY\", \"ON SAVE\"), \"IMPORTING\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName), (0, combi_1.seq)(\"GLOBAL AUTHORIZATION IMPORTING REQUEST\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName, result), (0, combi_1.seq)(\"INSTANCE AUTHORIZATION IMPORTING\", expressions_1.MethodParamName, \"REQUEST\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName, result));\n // todo, this is only from version something\n const amdp = (0, combi_1.seq)(\"AMDP OPTIONS CDS SESSION CLIENT CURRENT\", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)(\"CLASS-METHODS\", \"METHODS\"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)(\"FOR\", (0, combi_1.alt)(tableFunction, ddl, behavior)), amdp, \"NOT AT END OF MODE\", (0, combi_1.optPrio)(expressions_1.Redefinition)));\n return ret;\n }\n}\nexports.MethodDef = MethodDef;\n//# sourceMappingURL=method_def.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_def.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_implementation.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_implementation.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodImplementation = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodImplementation {\n getMatcher() {\n const name = (0, combi_1.regex)(/[\\w~]+/);\n const kernel = (0, combi_1.seq)(\"KERNEL MODULE\", (0, combi_1.plus)(name), (0, combi_1.optPrio)((0, combi_1.altPrio)(\"FAIL\", \"IGNORE\")));\n const using = (0, combi_1.seq)(\"USING\", (0, combi_1.plus)(expressions_1.SimpleFieldChain));\n const database = (0, combi_1.seq)(\"DATABASE\", (0, combi_1.alt)(\"PROCEDURE\", \"FUNCTION\", \"GRAPH WORKSPACE\"), \"FOR HDB\", expressions_1.Language, (0, combi_1.opt)(\"OPTIONS READ-ONLY\"), (0, combi_1.opt)(using));\n const by = (0, combi_1.seq)(\"BY\", (0, combi_1.alt)(kernel, database));\n return (0, combi_1.seq)(\"METHOD\", expressions_1.MethodName, (0, combi_1.optPrio)(by));\n }\n}\nexports.MethodImplementation = MethodImplementation;\n//# sourceMappingURL=method_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_database.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_database.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyDatabase = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ModifyDatabase {\n getMatcher() {\n const from = (0, combi_1.seq)(\"FROM\", (0, combi_1.opt)(\"TABLE\"), expressions_1.SQLSource);\n const options = (0, combi_1.per)(expressions_1.DatabaseConnection, from, expressions_1.SQLClient);\n return (0, combi_1.seq)(\"MODIFY\", expressions_1.DatabaseTable, options);\n }\n}\nexports.ModifyDatabase = ModifyDatabase;\n//# sourceMappingURL=modify_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_entities.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_entities.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyEntities = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ModifyEntities {\n getMatcher() {\n const fieldsWith = (0, combi_1.seq)(\"FIELDS (\", (0, combi_1.plus)(expressions_1.SimpleName), \") WITH\", expressions_1.Source);\n const operation = (0, combi_1.alt)((0, combi_1.seq)(\"UPDATE SET FIELDS WITH\", expressions_1.Source), (0, combi_1.seq)(\"CREATE SET FIELDS WITH\", expressions_1.Source), (0, combi_1.seq)(\"UPDATE\", fieldsWith), (0, combi_1.seq)(\"DELETE FROM\", expressions_1.Source), (0, combi_1.seq)(\"EXECUTE\", expressions_1.SimpleName, \"FROM\", expressions_1.Source), (0, combi_1.seq)(\"CREATE\", (0, combi_1.optPrio)(\"AUTO FILL CID\"), fieldsWith));\n const s = (0, combi_1.seq)(\"MODIFY ENTITIES OF\", expressions_1.NamespaceSimpleName, (0, combi_1.opt)(\"IN LOCAL MODE\"), \"ENTITY\", expressions_1.SimpleName, operation, (0, combi_1.per)((0, combi_1.seq)(\"FAILED\", expressions_1.Target), (0, combi_1.seq)(\"RESULT\", expressions_1.Target), (0, combi_1.seq)(\"MAPPED\", expressions_1.Target), (0, combi_1.seq)(\"REPORTED\", expressions_1.Target)));\n return (0, combi_1.ver)(version_1.Version.v754, s);\n }\n}\nexports.ModifyEntities = ModifyEntities;\n//# sourceMappingURL=modify_entities.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_entities.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_internal.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_internal.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyInternal = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ModifyInternal {\n getMatcher() {\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const transporting = (0, combi_1.seq)(\"TRANSPORTING\", (0, combi_1.plus)((0, combi_1.alt)(expressions_1.ComponentChainSimple, expressions_1.Dynamic)));\n const where = (0, combi_1.seq)(\"WHERE\", expressions_1.ComponentCond);\n const assigning = (0, combi_1.seq)(\"ASSIGNING\", expressions_1.FSTarget);\n const using = (0, combi_1.seq)(\"USING KEY\", expressions_1.SimpleName);\n const additions = (0, combi_1.per)(where, assigning, using);\n const target = (0, combi_1.alt)(expressions_1.Target, expressions_1.Dynamic);\n const options = (0, combi_1.alt)((0, combi_1.per)(index, transporting), (0, combi_1.seq)(from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))), (0, combi_1.seq)((0, combi_1.per)(index, transporting), from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))));\n const long = (0, combi_1.seq)(\"MODIFY\", (0, combi_1.opt)(\"TABLE\"), target, (0, combi_1.opt)(options), (0, combi_1.opt)(additions));\n const simple = (0, combi_1.seq)(\"MODIFY TABLE\", target, from, (0, combi_1.opt)(using));\n return (0, combi_1.alt)(long, simple);\n }\n}\nexports.ModifyInternal = ModifyInternal;\n//# sourceMappingURL=modify_internal.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_internal.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_line.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_line.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyLine = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ModifyLine {\n getMatcher() {\n const form = (0, combi_1.seq)((0, combi_1.alt)(\"INVERSE\", \"INPUT\"), \"=\", expressions_1.Source);\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const value = (0, combi_1.seq)(\"FIELD VALUE\", (0, combi_1.plus)((0, combi_1.seq)(expressions_1.Source, (0, combi_1.optPrio)(from))));\n const format = (0, combi_1.seq)(\"FIELD FORMAT\", expressions_1.Source, (0, combi_1.opt)(form));\n const lineValue = (0, combi_1.seq)(\"LINE VALUE FROM\", expressions_1.Source);\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const page = (0, combi_1.seq)(\"OF PAGE\", expressions_1.Source);\n const ocp = (0, combi_1.str)(\"OF CURRENT PAGE\");\n const lineFormat = (0, combi_1.seq)(\"LINE FORMAT\", (0, combi_1.alt)(\"INPUT OFF\", \"INVERSE\", \"RESET\", \"INTENSIFIED\"));\n const onOff = (0, combi_1.alt)(\"ON\", \"OFF\");\n const intensified = (0, combi_1.seq)(\"INTENSIFIED\", onOff);\n const options = (0, combi_1.per)(index, value, format, page, lineFormat, lineValue, ocp, intensified, expressions_1.Color);\n const ret = (0, combi_1.seq)(\"MODIFY\", (0, combi_1.altPrio)(\"CURRENT LINE\", (0, combi_1.seq)(\"LINE\", expressions_1.Source)), (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ModifyLine = ModifyLine;\n//# sourceMappingURL=modify_line.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_line.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_screen.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_screen.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyScreen = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ModifyScreen {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"MODIFY SCREEN\", (0, combi_1.opt)((0, combi_1.seq)(\"FROM\", expressions_1.Source)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ModifyScreen = ModifyScreen;\n//# sourceMappingURL=modify_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/module.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/module.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Module = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Module {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"MODULE\", expressions_1.FormName, (0, combi_1.opt)((0, combi_1.alt)(\"INPUT\", \"OUTPUT\")));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Module = Module;\n//# sourceMappingURL=module.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/module.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Move = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass Move {\n getMatcher() {\n const mov = (0, combi_1.verNot)(version_1.Version.Cloud, \"MOVE\");\n const move = (0, combi_1.seq)(mov, (0, combi_1.altPrio)((0, combi_1.seq)(\"EXACT\", expressions_1.Source, \"TO\", expressions_1.Target), (0, combi_1.seq)(expressions_1.Source, (0, combi_1.altPrio)(\"?TO\", \"TO\"), expressions_1.Target)));\n const calcAssign = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), \"=\"), (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WDash), \"=\"), \"/=\", \"*=\", \"&&=\"));\n const chained = (0, combi_1.seq)(\"=\", (0, combi_1.star)((0, combi_1.seq)(expressions_1.Target, \"=\")));\n const equals = (0, combi_1.altPrio)((0, combi_1.altPrio)(chained, \"?=\"), calcAssign);\n // todo, move \"?=\" to CAST?\n const eq = (0, combi_1.seq)(expressions_1.Target, equals, expressions_1.Source);\n return (0, combi_1.altPrio)(move, eq);\n }\n}\nexports.Move = Move;\n//# sourceMappingURL=move.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move_corresponding.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move_corresponding.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MoveCorresponding = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass MoveCorresponding {\n getMatcher() {\n const keeping = (0, combi_1.ver)(version_1.Version.v740sp05, \"KEEPING TARGET LINES\");\n const expanding = (0, combi_1.ver)(version_1.Version.v740sp05, \"EXPANDING NESTED TABLES\");\n const move = (0, combi_1.seq)(\"MOVE-CORRESPONDING\", (0, combi_1.optPrio)(\"EXACT\"), expressions_1.Source, \"TO\", expressions_1.Target, (0, combi_1.optPrio)(expanding), (0, combi_1.optPrio)(keeping));\n return move;\n }\n}\nexports.MoveCorresponding = MoveCorresponding;\n//# sourceMappingURL=move_corresponding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/move_corresponding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/multiply.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/multiply.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Multiply = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Multiply {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"MULTIPLY\", expressions_1.Target, \"BY\", expressions_1.Source);\n return ret;\n }\n}\nexports.Multiply = Multiply;\n//# sourceMappingURL=multiply.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/multiply.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_line.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_line.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NewLine = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass NewLine {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"NEW-LINE\", (0, combi_1.opt)((0, combi_1.alt)(\"SCROLLING\", \"NO-SCROLLING\")));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.NewLine = NewLine;\n//# sourceMappingURL=new_line.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_line.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_page.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_page.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NewPage = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass NewPage {\n getMatcher() {\n const line = (0, combi_1.seq)(\"LINE-SIZE\", expressions_1.Source);\n const print = (0, combi_1.seq)(\"PRINT\", (0, combi_1.alt)(\"OFF\", \"ON\"));\n const parameters = (0, combi_1.seq)(\"PARAMETERS\", expressions_1.Source);\n const destination = (0, combi_1.seq)(\"DESTINATION\", expressions_1.Source);\n const archive = (0, combi_1.seq)(\"ARCHIVE PARAMETERS\", expressions_1.Source);\n const lineCount = (0, combi_1.seq)(\"LINE-COUNT\", expressions_1.Source);\n const coverText = (0, combi_1.seq)(\"COVER TEXT\", expressions_1.Source);\n const coverPage = (0, combi_1.seq)(\"SAP COVER PAGE\", expressions_1.Source);\n const immediately = (0, combi_1.seq)(\"IMMEDIATELY\", expressions_1.Source);\n const keep = (0, combi_1.seq)(\"KEEP IN SPOOL\", expressions_1.Source);\n const layout = (0, combi_1.seq)(\"LAYOUT\", expressions_1.Source);\n const listAuth = (0, combi_1.seq)(\"LIST AUTHORITY\", expressions_1.Source);\n const dataset = (0, combi_1.seq)(\"LIST DATASET\", expressions_1.Source);\n const name = (0, combi_1.seq)(\"LIST NAME\", expressions_1.Source);\n const newList = (0, combi_1.seq)(\"NEW LIST IDENTIFICATION\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"NEW-PAGE\", (0, combi_1.opt)((0, combi_1.per)(print, (0, combi_1.alt)(\"NO-TITLE\", \"WITH-TITLE\"), (0, combi_1.alt)(\"NO-HEADING\", \"WITH-HEADING\"), \"NO DIALOG\", parameters, listAuth, immediately, dataset, coverPage, newList, keep, name, layout, destination, coverText, archive, \"NEW-SECTION\", lineCount, line)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.NewPage = NewPage;\n//# sourceMappingURL=new_page.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/new_page.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/nodes.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/nodes.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Nodes = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Nodes {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"NODES\", expressions_1.Field);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Nodes = Nodes;\n//# sourceMappingURL=nodes.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/nodes.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/on_change.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/on_change.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OnChange = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass OnChange {\n getMatcher() {\n const or = (0, combi_1.seq)(\"OR\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"ON CHANGE OF\", expressions_1.Target, (0, combi_1.star)(or));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.OnChange = OnChange;\n//# sourceMappingURL=on_change.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/on_change.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_cursor.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_cursor.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OpenCursor = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass OpenCursor {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"OPEN CURSOR\", (0, combi_1.optPrio)(\"WITH HOLD\"), expressions_1.SQLTarget, \"FOR\", expressions_1.Select, (0, combi_1.optPrio)(expressions_1.SQLHints));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.OpenCursor = OpenCursor;\n//# sourceMappingURL=open_cursor.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_cursor.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_dataset.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_dataset.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OpenDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass OpenDataset {\n getMatcher() {\n const mode = (0, combi_1.seq)(\"IN\", (0, combi_1.opt)(\"LEGACY\"), (0, combi_1.altPrio)(\"BINARY MODE\", \"TEXT MODE\"));\n const code = (0, combi_1.seq)(\"CODE PAGE\", expressions_1.Source);\n const direction = (0, combi_1.seq)(\"FOR\", (0, combi_1.altPrio)(\"OUTPUT\", \"INPUT\", \"UPDATE\", \"APPENDING\"));\n const encoding = (0, combi_1.seq)(\"ENCODING\", (0, combi_1.altPrio)(\"DEFAULT\", \"UTF-8\", \"NON-UNICODE\"));\n const pos = (0, combi_1.seq)(\"AT POSITION\", expressions_1.Source);\n const message = (0, combi_1.seq)(\"MESSAGE\", expressions_1.Target);\n const ignoring = (0, combi_1.str)(\"IGNORING CONVERSION ERRORS\");\n const replacement = (0, combi_1.seq)(\"REPLACEMENT CHARACTER\", expressions_1.Source);\n const bom = (0, combi_1.str)(\"SKIPPING BYTE-ORDER MARK\");\n const wbom = (0, combi_1.str)(\"WITH BYTE-ORDER MARK\");\n const type = (0, combi_1.seq)(\"TYPE\", expressions_1.Source);\n const filter = (0, combi_1.seq)(\"FILTER\", expressions_1.Source);\n const linetype = (0, combi_1.altPrio)(\"SMART\", \"NATIVE\", \"UNIX\");\n const feed = (0, combi_1.seq)(\"WITH\", linetype, \"LINEFEED\");\n const windows = (0, combi_1.str)(\"WITH WINDOWS LINEFEED\");\n const ret = (0, combi_1.seq)(\"OPEN DATASET\", expressions_1.Source, (0, combi_1.per)(direction, type, mode, wbom, replacement, filter, encoding, pos, message, ignoring, bom, code, feed, windows));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.OpenDataset = OpenDataset;\n//# sourceMappingURL=open_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/open_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/overlay.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/overlay.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Overlay = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Overlay {\n getMatcher() {\n const only = (0, combi_1.seq)(\"ONLY\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"OVERLAY\", expressions_1.Target, \"WITH\", expressions_1.Source, (0, combi_1.opt)(only));\n return ret;\n }\n}\nexports.Overlay = Overlay;\n//# sourceMappingURL=overlay.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/overlay.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/pack.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/pack.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Pack = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Pack {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"PACK\", expressions_1.Source, \"TO\", expressions_1.Target);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Pack = Pack;\n//# sourceMappingURL=pack.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/pack.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/parameter.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/parameter.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Parameter = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Parameter {\n getMatcher() {\n const para = (0, combi_1.altPrio)(\"PARAMETER\", \"PARAMETERS\");\n const def = (0, combi_1.seq)(\"DEFAULT\", (0, combi_1.altPrio)(expressions_1.Constant, expressions_1.FieldChain));\n const radio = (0, combi_1.seq)(\"RADIOBUTTON GROUP\", expressions_1.RadioGroupName);\n const type = (0, combi_1.seq)((0, combi_1.altPrio)(\"TYPE\", \"LIKE\"), (0, combi_1.altPrio)(expressions_1.TypeName, expressions_1.Dynamic));\n const memory = (0, combi_1.seq)(\"MEMORY ID\", expressions_1.SimpleSource1);\n const listbox = (0, combi_1.str)(\"AS LISTBOX\");\n const cmd = (0, combi_1.seq)(\"USER-COMMAND\", (0, combi_1.regex)(/^\\w+$/));\n const modif = (0, combi_1.seq)(\"MODIF ID\", expressions_1.Modif);\n const visible = (0, combi_1.seq)(\"VISIBLE LENGTH\", expressions_1.Constant);\n const length = (0, combi_1.seq)(\"LENGTH\", expressions_1.Constant);\n const match = (0, combi_1.seq)(\"MATCHCODE OBJECT\", expressions_1.Field);\n const decimals = (0, combi_1.seq)(\"DECIMALS\", expressions_1.Source);\n const perm = (0, combi_1.per)(type, def, \"OBLIGATORY\", match, cmd, length, decimals, radio, memory, modif, listbox, visible, \"VALUE CHECK\", \"NO-DISPLAY\", \"AS CHECKBOX\", \"LOWER CASE\");\n const ret = (0, combi_1.seq)(para, expressions_1.FieldSub, (0, combi_1.opt)(expressions_1.FieldLength), (0, combi_1.opt)(perm));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Parameter = Parameter;\n//# sourceMappingURL=parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/perform.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/perform.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Perform = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst Expressions = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Perform {\n getMatcher() {\n const level = (0, combi_1.seq)(\"LEVEL\", Expressions.Source);\n const commit = (0, combi_1.alt)((0, combi_1.seq)(\"ON COMMIT\", (0, combi_1.opt)(level)), \"ON ROLLBACK\");\n const short = (0, combi_1.verNot)(version_1.Version.Cloud, (0, combi_1.seq)(Expressions.FormName, (0, combi_1.tok)(tokens_1.ParenLeft), Expressions.IncludeName, (0, combi_1.tok)(tokens_1.ParenRightW)));\n const program = (0, combi_1.seq)(\"IN PROGRAM\", (0, combi_1.opt)((0, combi_1.alt)(Expressions.Dynamic, Expressions.IncludeName)));\n const found = (0, combi_1.str)(\"IF FOUND\");\n const full = (0, combi_1.seq)((0, combi_1.alt)(Expressions.FormName, Expressions.Dynamic), (0, combi_1.opt)((0, combi_1.verNot)(version_1.Version.Cloud, program)));\n const ret = (0, combi_1.seq)(\"PERFORM\", (0, combi_1.alt)(short, full), (0, combi_1.opt)(found), (0, combi_1.opt)(expressions_1.PerformTables), (0, combi_1.opt)(expressions_1.PerformUsing), (0, combi_1.opt)(expressions_1.PerformChanging), (0, combi_1.opt)(found), (0, combi_1.opt)(commit));\n return ret;\n }\n}\nexports.Perform = Perform;\n//# sourceMappingURL=perform.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/perform.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/position.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/position.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Position = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Position {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"POSITION\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Position = Position;\n//# sourceMappingURL=position.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/position.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/print_control.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/print_control.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PrintControl = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass PrintControl {\n getMatcher() {\n const index = (0, combi_1.seq)(\"INDEX-LINE\", expressions_1.Source);\n const func = (0, combi_1.seq)(\"FUNCTION\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"PRINT-CONTROL\", (0, combi_1.alt)(index, func));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.PrintControl = PrintControl;\n//# sourceMappingURL=print_control.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/print_control.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/private.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/private.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Private = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Private {\n getMatcher() {\n return (0, combi_1.str)(\"PRIVATE SECTION\");\n }\n}\nexports.Private = Private;\n//# sourceMappingURL=private.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/private.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/program.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/program.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Program = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Program {\n getMatcher() {\n const message = (0, combi_1.seq)(\"MESSAGE-ID\", expressions_1.Source);\n const size = (0, combi_1.seq)(\"LINE-SIZE\", expressions_1.Source);\n const heading = (0, combi_1.str)(\"NO STANDARD PAGE HEADING\");\n const line = (0, combi_1.seq)(\"LINE-COUNT\", expressions_1.Source);\n const options = (0, combi_1.per)(message, size, heading, line);\n const ret = (0, combi_1.seq)(\"PROGRAM\", (0, combi_1.optPrio)(expressions_1.ReportName), (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Program = Program;\n//# sourceMappingURL=program.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/program.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/protected.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/protected.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Protected = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Protected {\n getMatcher() {\n return (0, combi_1.str)(\"PROTECTED SECTION\");\n }\n}\nexports.Protected = Protected;\n//# sourceMappingURL=protected.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/protected.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/provide.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/provide.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Provide = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Provide {\n getMatcher() {\n const list = (0, combi_1.plus)((0, combi_1.altPrio)(\"*\", expressions_1.Field));\n const fields = (0, combi_1.seq)(\"FIELDS\", list, \"FROM\", expressions_1.Source, \"INTO\", expressions_1.Target, \"VALID\", expressions_1.Field, \"BOUNDS\", expressions_1.Field, \"AND\", expressions_1.Field);\n const fieldList = (0, combi_1.altPrio)((0, combi_1.seq)(list, \"FROM\", expressions_1.Source), list);\n const ret = (0, combi_1.seq)(\"PROVIDE\", (0, combi_1.altPrio)((0, combi_1.plus)(fields), (0, combi_1.plus)(fieldList)), \"BETWEEN\", expressions_1.SimpleSource3, \"AND\", expressions_1.SimpleSource3);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Provide = Provide;\n//# sourceMappingURL=provide.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/provide.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/public.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/public.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Public = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Public {\n getMatcher() {\n return (0, combi_1.str)(\"PUBLIC SECTION\");\n }\n}\nexports.Public = Public;\n//# sourceMappingURL=public.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/public.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/put.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/put.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Put = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Put {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"PUT\", expressions_1.Field);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Put = Put;\n//# sourceMappingURL=put.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/put.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Raise = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Raise {\n getMatcher() {\n const mess = (0, combi_1.seq)(\"MESSAGE\", expressions_1.MessageSource, (0, combi_1.opt)(expressions_1.RaiseWith));\n const messid = (0, combi_1.seq)(\"MESSAGE ID\", expressions_1.Source, \"NUMBER\", (0, combi_1.altPrio)(expressions_1.MessageNumber, expressions_1.Source), (0, combi_1.optPrio)(expressions_1.RaiseWith));\n const exporting = (0, combi_1.seq)(\"EXPORTING\", expressions_1.ParameterListS);\n const from = (0, combi_1.seq)(\"TYPE\", expressions_1.ClassName, (0, combi_1.opt)((0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v750, (0, combi_1.alt)(mess, messid)), (0, combi_1.ver)(version_1.Version.v752, \"USING MESSAGE\"))), (0, combi_1.optPrio)(exporting));\n const pre = (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.optPrio)(\"RESUMABLE\"), \"EXCEPTION\"), \"SHORTDUMP\");\n const clas = (0, combi_1.seq)(pre, (0, combi_1.altPrio)(from, (0, combi_1.ver)(version_1.Version.v752, expressions_1.Source), expressions_1.SimpleSource2));\n const ret = (0, combi_1.seq)(\"RAISE\", (0, combi_1.altPrio)(clas, expressions_1.ExceptionName));\n return ret;\n }\n}\nexports.Raise = Raise;\n//# sourceMappingURL=raise.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise_event.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise_event.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RaiseEvent = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass RaiseEvent {\n getMatcher() {\n const exporting = (0, combi_1.seq)(\"EXPORTING\", expressions_1.ParameterListS);\n return (0, combi_1.seq)(\"RAISE EVENT\", expressions_1.EventName, (0, combi_1.opt)(exporting));\n }\n}\nexports.RaiseEvent = RaiseEvent;\n//# sourceMappingURL=raise_event.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise_event.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/ranges.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/ranges.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Ranges = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Ranges {\n getMatcher() {\n const occurs = (0, combi_1.seq)(\"OCCURS\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"RANGES\", expressions_1.SimpleName, \"FOR\", expressions_1.FieldSub, (0, combi_1.opt)(occurs));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Ranges = Ranges;\n//# sourceMappingURL=ranges.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/ranges.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_dataset.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_dataset.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ReadDataset {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"READ DATASET\", expressions_1.Source, \"INTO\", expressions_1.Target, (0, combi_1.opt)((0, combi_1.seq)(\"MAXIMUM LENGTH\", expressions_1.Source)), (0, combi_1.opt)((0, combi_1.seq)(\"ACTUAL LENGTH\", expressions_1.Target)), (0, combi_1.opt)((0, combi_1.seq)(\"LENGTH\", expressions_1.Target)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ReadDataset = ReadDataset;\n//# sourceMappingURL=read_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_entities.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_entities.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadEntities = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass ReadEntities {\n getMatcher() {\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const fields = (0, combi_1.seq)(\"FIELDS\", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.plus)(expressions_1.SimpleName), (0, combi_1.tok)(tokens_1.WParenRightW), \"WITH\", expressions_1.Source);\n const all = (0, combi_1.seq)(\"ALL FIELDS WITH\", expressions_1.Source);\n const s = (0, combi_1.seq)(\"READ ENTITIES OF\", expressions_1.NamespaceSimpleName, (0, combi_1.opt)(\"IN LOCAL MODE\"), \"ENTITY\", expressions_1.SimpleName, (0, combi_1.opt)((0, combi_1.seq)(\"BY\", expressions_1.AssociationName)), (0, combi_1.alt)(fields, from, all), \"RESULT\", expressions_1.Target, (0, combi_1.optPrio)((0, combi_1.seq)(\"LINK\", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)(\"FAILED\", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)(\"REPORTED\", expressions_1.Target)));\n return (0, combi_1.ver)(version_1.Version.v754, s);\n }\n}\nexports.ReadEntities = ReadEntities;\n//# sourceMappingURL=read_entities.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_entities.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_line.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_line.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadLine = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ReadLine {\n getMatcher() {\n const val = (0, combi_1.seq)(\"LINE VALUE INTO\", expressions_1.Target);\n const fields = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.opt)((0, combi_1.seq)(\"INTO\", expressions_1.Target)));\n const field = (0, combi_1.seq)(\"FIELD VALUE\", (0, combi_1.plus)(fields));\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const page = (0, combi_1.seq)(\"OF PAGE\", expressions_1.Source);\n const current = (0, combi_1.str)(\"OF CURRENT PAGE\");\n const ret = (0, combi_1.seq)(\"READ\", (0, combi_1.alt)(\"CURRENT LINE\", (0, combi_1.seq)(\"LINE\", expressions_1.Source)), (0, combi_1.opt)((0, combi_1.per)(val, index, field, page, current)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ReadLine = ReadLine;\n//# sourceMappingURL=read_line.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_line.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_report.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_report.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadReport = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ReadReport {\n getMatcher() {\n const state = (0, combi_1.seq)(\"STATE\", expressions_1.Source);\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n const maximum = (0, combi_1.seq)(\"MAXIMUM WIDTH INTO\", expressions_1.Target);\n const ret = (0, combi_1.seq)(\"READ REPORT\", expressions_1.Source, (0, combi_1.per)(state, into, maximum));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ReadReport = ReadReport;\n//# sourceMappingURL=read_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_table.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_table.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadTable = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ReadTable {\n getMatcher() {\n const comparing = (0, combi_1.seq)(\"COMPARING\", (0, combi_1.alt)((0, combi_1.plus)(expressions_1.FieldSub), expressions_1.Dynamic));\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const components = (0, combi_1.seq)((0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic), \"COMPONENTS\", expressions_1.ComponentCompareSimple);\n const key = (0, combi_1.seq)((0, combi_1.altPrio)(\"WITH KEY\", \"WITH TABLE KEY\"), (0, combi_1.alt)(expressions_1.ComponentCompareSimple, components, (0, combi_1.seq)((0, combi_1.optPrio)(\"=\"), expressions_1.Source)));\n const using = (0, combi_1.seq)(\"USING KEY\", (0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic));\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const fields = (0, combi_1.plus)((0, combi_1.alt)((0, combi_1.seq)(\"INTO\", (0, combi_1.failStar)()), expressions_1.FieldSub));\n const perm = (0, combi_1.per)((0, combi_1.alt)(index, key, from), expressions_1.ReadTableTarget, using, comparing, \"CASTING\", \"TRANSPORTING ALL FIELDS\", (0, combi_1.seq)(\"TRANSPORTING\", (0, combi_1.altPrio)(expressions_1.Dynamic, fields)), \"BINARY SEARCH\");\n return (0, combi_1.seq)(\"READ TABLE\", (0, combi_1.alt)(expressions_1.SimpleSource2, (0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source)), (0, combi_1.opt)(perm));\n }\n}\nexports.ReadTable = ReadTable;\n//# sourceMappingURL=read_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_textpool.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_textpool.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadTextpool = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ReadTextpool {\n getMatcher() {\n const language = (0, combi_1.seq)(\"LANGUAGE\", expressions_1.Source);\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n const state = (0, combi_1.seq)(\"STATE\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"READ TEXTPOOL\", expressions_1.Source, (0, combi_1.per)(into, language, state));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ReadTextpool = ReadTextpool;\n//# sourceMappingURL=read_textpool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_textpool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/receive.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/receive.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Receive = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Receive {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"RECEIVE RESULTS FROM FUNCTION\", expressions_1.FunctionName, (0, combi_1.opt)(\"KEEPING TASK\"), expressions_1.ReceiveParameters);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Receive = Receive;\n//# sourceMappingURL=receive.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/receive.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Refresh = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Refresh {\n getMatcher() {\n const from = (0, combi_1.seq)(\"FROM TABLE\", expressions_1.DatabaseTable);\n const ret = (0, combi_1.seq)(\"REFRESH\", expressions_1.Target, (0, combi_1.optPrio)(from));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Refresh = Refresh;\n//# sourceMappingURL=refresh.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh_control.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh_control.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RefreshControl = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass RefreshControl {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"REFRESH CONTROL\", expressions_1.Source, \"FROM SCREEN\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.RefreshControl = RefreshControl;\n//# sourceMappingURL=refresh_control.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/refresh_control.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reject.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reject.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Reject = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Reject {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"REJECT\", (0, combi_1.opt)(expressions_1.Source));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Reject = Reject;\n//# sourceMappingURL=reject.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reject.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/replace.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/replace.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Replace = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Replace {\n getMatcher() {\n const length = (0, combi_1.seq)(\"LENGTH\", expressions_1.Source);\n const offset = (0, combi_1.seq)(\"OFFSET\", expressions_1.Source);\n const section = (0, combi_1.seq)((0, combi_1.opt)(\"IN\"), \"SECTION\", (0, combi_1.per)(offset, length), \"OF\", expressions_1.Target);\n const source = (0, combi_1.seq)((0, combi_1.opt)(\"OF\"), expressions_1.FindType, expressions_1.Source);\n const cas = (0, combi_1.altPrio)(\"IGNORING CASE\", \"RESPECTING CASE\");\n const repl = (0, combi_1.seq)(\"REPLACEMENT COUNT\", expressions_1.Target);\n const replo = (0, combi_1.seq)(\"REPLACEMENT OFFSET\", expressions_1.Target);\n const repll = (0, combi_1.seq)(\"REPLACEMENT LENGTH\", expressions_1.Target);\n const repli = (0, combi_1.seq)(\"REPLACEMENT LINE\", expressions_1.Target);\n const occ = (0, combi_1.altPrio)(\"ALL OCCURRENCES\", \"ALL OCCURENCES\", \"FIRST OCCURENCE\", \"FIRST OCCURRENCE\");\n const mode = (0, combi_1.alt)(\"IN CHARACTER MODE\", \"IN BYTE MODE\");\n const wit = (0, combi_1.seq)(\"WITH\", expressions_1.Source);\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.Target);\n return (0, combi_1.seq)(\"REPLACE\", (0, combi_1.per)(section, (0, combi_1.seq)((0, combi_1.opt)(occ), source)), (0, combi_1.opt)((0, combi_1.seq)(\"IN\", (0, combi_1.opt)(\"TABLE\"), expressions_1.Target)), (0, combi_1.opt)((0, combi_1.per)(wit, into, cas, mode, repl, replo, repll, repli, length)));\n }\n}\nexports.Replace = Replace;\n//# sourceMappingURL=replace.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/replace.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/report.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/report.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Report = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass Report {\n getMatcher() {\n const more = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), expressions_1.Integer, (0, combi_1.tok)(tokens_1.ParenRightW));\n const heading = (0, combi_1.str)(\"NO STANDARD PAGE HEADING\");\n const size = (0, combi_1.seq)(\"LINE-SIZE\", expressions_1.Integer);\n const count = (0, combi_1.seq)(\"LINE-COUNT\", expressions_1.Integer, (0, combi_1.opt)(more));\n const message = (0, combi_1.seq)(\"MESSAGE-ID\", expressions_1.MessageClass);\n const database = (0, combi_1.seq)(\"USING DATABASE\", expressions_1.Field);\n const ret = (0, combi_1.seq)(\"REPORT\", (0, combi_1.opt)(expressions_1.ReportName), (0, combi_1.opt)((0, combi_1.per)(heading, size, count, database, message)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Report = Report;\n//# sourceMappingURL=report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reserve.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reserve.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Reserve = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Reserve {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"RESERVE\", expressions_1.Source, \"LINES\");\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Reserve = Reserve;\n//# sourceMappingURL=reserve.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/reserve.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/resume.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/resume.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Resume = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Resume {\n getMatcher() {\n return (0, combi_1.str)(\"RESUME\");\n }\n}\nexports.Resume = Resume;\n//# sourceMappingURL=resume.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/resume.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/retry.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/retry.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Retry = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Retry {\n getMatcher() {\n return (0, combi_1.ver)(version_1.Version.v702, \"RETRY\");\n }\n}\nexports.Retry = Retry;\n//# sourceMappingURL=retry.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/retry.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/return.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/return.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Return = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Return {\n getMatcher() {\n return (0, combi_1.str)(\"RETURN\");\n }\n}\nexports.Return = Return;\n//# sourceMappingURL=return.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/return.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Rollback = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Rollback {\n getMatcher() {\n return (0, combi_1.seq)(\"ROLLBACK\", (0, combi_1.altPrio)(\"WORK\", expressions_1.DatabaseConnection));\n }\n}\nexports.Rollback = Rollback;\n//# sourceMappingURL=rollback.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback_entities.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback_entities.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RollbackEntities = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass RollbackEntities {\n getMatcher() {\n const s = \"ROLLBACK ENTITIES\";\n return (0, combi_1.ver)(version_1.Version.v754, s);\n }\n}\nexports.RollbackEntities = RollbackEntities;\n//# sourceMappingURL=rollback_entities.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/rollback_entities.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scan.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scan.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Scan = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Scan {\n getMatcher() {\n const tokens = (0, combi_1.seq)(\"TOKENS INTO\", expressions_1.Target);\n const word = (0, combi_1.seq)(\"WORD INTO\", expressions_1.Target);\n const line = (0, combi_1.seq)(\"LINE INTO\", expressions_1.Target);\n const statements = (0, combi_1.seq)(\"STATEMENTS INTO\", expressions_1.Target);\n const levels = (0, combi_1.seq)(\"LEVELS INTO\", expressions_1.Target);\n const structures = (0, combi_1.seq)(\"STRUCTURES INTO\", expressions_1.Target);\n const include = (0, combi_1.seq)(\"INCLUDE INTO\", expressions_1.Target);\n const offset = (0, combi_1.seq)(\"OFFSET INTO\", expressions_1.Target);\n const enh = (0, combi_1.seq)(\"ENHANCEMENTS INTO\", expressions_1.Target);\n const enhO = (0, combi_1.seq)(\"ENHANCEMENT OPTIONS INTO\", expressions_1.Target);\n const keywords = (0, combi_1.seq)(\"KEYWORDS FROM\", expressions_1.Source);\n const pragmas = (0, combi_1.seq)(\"WITH PRAGMAS\", expressions_1.Source);\n const overflow = (0, combi_1.seq)(\"OVERFLOW INTO\", expressions_1.Target);\n const message = (0, combi_1.seq)(\"MESSAGE INTO\", expressions_1.Target);\n const includeProgram = (0, combi_1.seq)(\"INCLUDE PROGRAM FROM\", expressions_1.Source);\n const frame = (0, combi_1.seq)(\"FRAME PROGRAM FROM\", expressions_1.Source);\n const program = (0, combi_1.seq)(\"PROGRAM FROM\", expressions_1.Source);\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\n const to = (0, combi_1.seq)(\"TO\", expressions_1.Source);\n const replacing = (0, combi_1.seq)(\"REPLACING\", expressions_1.Source);\n const id = (0, combi_1.seq)(\"ID\", expressions_1.Source, \"TABLE\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"SCAN ABAP-SOURCE\", expressions_1.Source, (0, combi_1.per)(tokens, levels, from, to, statements, structures, keywords, word, line, offset, overflow, message, includeProgram, include, frame, enhO, enh, program, replacing, \"WITH ANALYSIS\", \"WITH COMMENTS\", \"WITH TYPE-POOLS\", \"WITH INCLUDES\", \"WITHOUT TRMAC\", \"WITH DECLARATIONS\", \"WITH BLOCKS\", \"PRESERVING IDENTIFIER ESCAPING\", \"WITH LIST TOKENIZATION\", \"WITH EXPLICIT ENHANCEMENTS\", \"WITH IMPLICIT ENHANCEMENTS\", \"WITH INACTIVE ENHANCEMENTS\", pragmas, id));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Scan = Scan;\n//# sourceMappingURL=scan.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scan.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scroll_list.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scroll_list.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ScrollList = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass ScrollList {\n getMatcher() {\n const index = (0, combi_1.seq)(\"INDEX\", expressions_1.Source);\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Source);\n const column = (0, combi_1.seq)(\"TO COLUMN\", expressions_1.Source);\n const to = (0, combi_1.seq)(\"TO\", (0, combi_1.alt)(\"FIRST PAGE\", \"LAST PAGE\", (0, combi_1.seq)(\"PAGE\", expressions_1.Source)));\n const ret = (0, combi_1.seq)(\"SCROLL LIST\", (0, combi_1.per)(index, (0, combi_1.alt)(to, \"BACKWARD\", \"FORWARD\"), column, line));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.ScrollList = ScrollList;\n//# sourceMappingURL=scroll_list.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/scroll_list.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/search.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/search.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Search = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Search {\n getMatcher() {\n const starting = (0, combi_1.seq)(\"STARTING AT\", expressions_1.Source);\n const ending = (0, combi_1.seq)(\"ENDING AT\", expressions_1.Source);\n const mark = (0, combi_1.str)(\"AND MARK\");\n const mode = (0, combi_1.altPrio)(\"IN BYTE MODE\", \"IN CHARACTER MODE\");\n const ret = (0, combi_1.seq)(\"SEARCH\", expressions_1.Source, \"FOR\", expressions_1.Source, (0, combi_1.opt)((0, combi_1.per)(mode, starting, ending, mark)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Search = Search;\n//# sourceMappingURL=search.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/search.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Select = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Select {\n getMatcher() {\n const union = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"UNION\", (0, combi_1.optPrio)((0, combi_1.altPrio)(\"DISTINCT\", \"ALL\")), expressions_1.Select));\n return (0, combi_1.seq)(expressions_1.Select, (0, combi_1.starPrio)(union));\n }\n}\nexports.Select = Select;\n//# sourceMappingURL=select.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select_loop.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select_loop.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectLoop = void 0;\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SelectLoop {\n getMatcher() {\n return new expressions_1.SelectLoop();\n }\n}\nexports.SelectLoop = SelectLoop;\n//# sourceMappingURL=select_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/select_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectionscreen.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectionscreen.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectionScreen = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SelectionScreen {\n getMatcher() {\n const beginBlock = (0, combi_1.seq)(\"BEGIN OF BLOCK\", expressions_1.BlockName, (0, combi_1.optPrio)(\"WITH FRAME\"), (0, combi_1.optPrio)((0, combi_1.seq)(\"TITLE\", (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement))), (0, combi_1.optPrio)(\"NO INTERVALS\"));\n const endBlock = (0, combi_1.seq)(\"END OF BLOCK\", expressions_1.BlockName);\n const nesting = (0, combi_1.seq)(\"NESTING LEVEL\", expressions_1.Source);\n const scrOptions = (0, combi_1.per)((0, combi_1.seq)(\"AS\", (0, combi_1.alt)(\"WINDOW\", \"SUBSCREEN\")), (0, combi_1.seq)(\"TITLE\", (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement)), \"NO INTERVALS\", nesting);\n const beginScreen = (0, combi_1.seq)(\"BEGIN OF SCREEN\", expressions_1.Integer, (0, combi_1.opt)(scrOptions));\n const endScreen = (0, combi_1.seq)(\"END OF SCREEN\", expressions_1.Integer);\n const beginLine = (0, combi_1.str)(\"BEGIN OF LINE\");\n const endLine = (0, combi_1.str)(\"END OF LINE\");\n const modif = (0, combi_1.seq)(\"MODIF ID\", expressions_1.Modif);\n const visible = (0, combi_1.seq)(\"VISIBLE LENGTH\", (0, combi_1.regex)(/^\\d+$/));\n const commentOpt = (0, combi_1.per)((0, combi_1.seq)(\"FOR FIELD\", expressions_1.Field), modif, visible);\n const position = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.regex)(/^\\/?[\\d\\w]+$/)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.WParenLeft)), expressions_1.Integer, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.ParenRight)));\n const comment = (0, combi_1.seq)(\"COMMENT\", position, (0, combi_1.opt)((0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement)), (0, combi_1.opt)(commentOpt));\n const command = (0, combi_1.seq)(\"USER-COMMAND\", (0, combi_1.alt)(expressions_1.Field, expressions_1.Constant));\n const push = (0, combi_1.seq)(\"PUSHBUTTON\", position, (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement), command, (0, combi_1.opt)(modif), (0, combi_1.opt)(visible));\n const prog = (0, combi_1.seq)(\"PROGRAM\", expressions_1.Field);\n const def = (0, combi_1.seq)(\"DEFAULT\", (0, combi_1.opt)(prog), \"SCREEN\", expressions_1.Integer);\n const tab = (0, combi_1.seq)(\"TAB\", (0, combi_1.tok)(tokens_1.WParenLeft), expressions_1.Integer, (0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement), command, (0, combi_1.opt)(def), (0, combi_1.opt)(modif));\n const func = (0, combi_1.seq)(\"FUNCTION KEY\", expressions_1.Integer);\n const skip = (0, combi_1.seq)(\"SKIP\", (0, combi_1.opt)(expressions_1.Integer));\n const posSymbols = (0, combi_1.altPrio)(\"POS_LOW\", \"POS_HIGH\");\n // number between 1 and 83\n const posIntegers = (0, combi_1.regex)(/^(0?[1-9]|[1234567][0-9]|8[0-3])$/);\n const pos = (0, combi_1.seq)(\"POSITION\", (0, combi_1.altPrio)(posIntegers, posSymbols));\n const incl = (0, combi_1.seq)(\"INCLUDE BLOCKS\", expressions_1.BlockName);\n const tabbed = (0, combi_1.seq)(\"BEGIN OF TABBED BLOCK\", expressions_1.InlineField, \"FOR\", expressions_1.Integer, \"LINES\", (0, combi_1.optPrio)(\"NO INTERVALS\"));\n const uline = (0, combi_1.seq)(\"ULINE\", (0, combi_1.opt)(position));\n const param = (0, combi_1.seq)(\"INCLUDE PARAMETERS\", expressions_1.Field);\n const iso = (0, combi_1.seq)(\"INCLUDE SELECT-OPTIONS\", expressions_1.Field);\n const ret = (0, combi_1.seq)(\"SELECTION-SCREEN\", (0, combi_1.altPrio)(comment, func, skip, pos, incl, iso, push, tab, uline, beginBlock, tabbed, endBlock, beginLine, endLine, param, beginScreen, endScreen));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SelectionScreen = SelectionScreen;\n//# sourceMappingURL=selectionscreen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectionscreen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectoption.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectoption.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectOption = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SelectOption {\n getMatcher() {\n const sourc = (0, combi_1.alt)(expressions_1.Constant, expressions_1.FieldChain);\n const to = (0, combi_1.seq)(\"TO\", sourc);\n const def = (0, combi_1.seq)(\"DEFAULT\", sourc, (0, combi_1.opt)(to));\n const option = (0, combi_1.seq)(\"OPTION\", (0, combi_1.alt)(\"CP\", expressions_1.Field));\n const sign = (0, combi_1.seq)(\"SIGN\", expressions_1.Field);\n const memory = (0, combi_1.seq)(\"MEMORY ID\", expressions_1.SimpleSource1);\n const match = (0, combi_1.seq)(\"MATCHCODE OBJECT\", expressions_1.Field);\n const modif = (0, combi_1.seq)(\"MODIF ID\", expressions_1.Modif);\n const visible = (0, combi_1.seq)(\"VISIBLE LENGTH\", expressions_1.Source);\n const options = (0, combi_1.per)(def, option, sign, memory, match, visible, modif, \"NO DATABASE SELECTION\", \"LOWER CASE\", \"NO-EXTENSION\", \"NO INTERVALS\", \"NO-DISPLAY\", \"OBLIGATORY\");\n const ret = (0, combi_1.seq)(\"SELECT-OPTIONS\", expressions_1.FieldSub, \"FOR\", (0, combi_1.alt)(expressions_1.FieldChain, expressions_1.Dynamic), (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SelectOption = SelectOption;\n//# sourceMappingURL=selectoption.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectoption.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_bit.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_bit.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetBit = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SetBit {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET BIT\", expressions_1.Source, \"OF\", expressions_1.Target, (0, combi_1.opt)((0, combi_1.seq)(\"TO\", expressions_1.Source)));\n return ret;\n }\n}\nexports.SetBit = SetBit;\n//# sourceMappingURL=set_bit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_bit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_blank.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_blank.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetBlank = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetBlank {\n getMatcher() {\n const onOff = (0, combi_1.alt)(\"ON\", \"OFF\");\n const ret = (0, combi_1.seq)(\"SET BLANK LINES\", onOff);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetBlank = SetBlank;\n//# sourceMappingURL=set_blank.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_blank.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_country.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_country.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetCountry = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetCountry {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET COUNTRY\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetCountry = SetCountry;\n//# sourceMappingURL=set_country.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_country.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_cursor.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_cursor.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetCursor = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetCursor {\n getMatcher() {\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Source);\n const offset = (0, combi_1.seq)(\"OFFSET\", expressions_1.Source);\n const field = (0, combi_1.seq)(\"FIELD\", expressions_1.Source);\n const pos = (0, combi_1.seq)(expressions_1.Source, expressions_1.Source);\n const ret = (0, combi_1.seq)(\"SET CURSOR\", (0, combi_1.altPrio)((0, combi_1.per)(field, offset, line), pos));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetCursor = SetCursor;\n//# sourceMappingURL=set_cursor.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_cursor.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_dataset.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_dataset.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetDataset {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET DATASET\", expressions_1.Source, \"POSITION\", (0, combi_1.alt)(expressions_1.Source, \"END OF FILE\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetDataset = SetDataset;\n//# sourceMappingURL=set_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_extended_check.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_extended_check.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetExtendedCheck = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetExtendedCheck {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET EXTENDED CHECK\", (0, combi_1.alt)(\"OFF\", \"ON\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetExtendedCheck = SetExtendedCheck;\n//# sourceMappingURL=set_extended_check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_extended_check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_handler.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_handler.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetHandler = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SetHandler {\n getMatcher() {\n const activation = (0, combi_1.seq)(\"ACTIVATION\", expressions_1.Source);\n const fo = (0, combi_1.seq)(\"FOR\", (0, combi_1.altPrio)(\"ALL INSTANCES\", expressions_1.Source));\n const ret = (0, combi_1.seq)(\"SET HANDLER\", (0, combi_1.plus)(expressions_1.MethodSource), (0, combi_1.optPrio)(fo), (0, combi_1.optPrio)(activation));\n return ret;\n }\n}\nexports.SetHandler = SetHandler;\n//# sourceMappingURL=set_handler.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_handler.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_language.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_language.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetLanguage = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetLanguage {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET LANGUAGE\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetLanguage = SetLanguage;\n//# sourceMappingURL=set_language.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_language.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_left.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_left.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetLeft = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass SetLeft {\n getMatcher() {\n const column = (0, combi_1.seq)(\"COLUMN\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, (0, combi_1.seq)(\"SET LEFT SCROLL-BOUNDARY\", (0, combi_1.opt)(column)));\n }\n}\nexports.SetLeft = SetLeft;\n//# sourceMappingURL=set_left.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_left.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locale.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locale.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetLocale = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetLocale {\n getMatcher() {\n const country = (0, combi_1.seq)(\"COUNTRY\", expressions_1.Source);\n const modifier = (0, combi_1.seq)(\"MODIFIER\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"SET LOCALE LANGUAGE\", expressions_1.Source, (0, combi_1.opt)(country), (0, combi_1.opt)(modifier));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetLocale = SetLocale;\n//# sourceMappingURL=set_locale.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locale.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locks.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locks.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetLocks = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetLocks {\n getMatcher() {\n const s = (0, combi_1.seq)(\"SET LOCKS OF\", expressions_1.SimpleName, \"ENTITY\", expressions_1.SimpleName, \"FROM\", expressions_1.Source, \"FAILED\", expressions_1.Target, \"REPORTED\", expressions_1.Target);\n return (0, combi_1.ver)(version_1.Version.v754, s);\n }\n}\nexports.SetLocks = SetLocks;\n//# sourceMappingURL=set_locks.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_locks.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_margin.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_margin.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetMargin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetMargin {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET MARGIN\", expressions_1.Source, (0, combi_1.opt)(expressions_1.Source));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetMargin = SetMargin;\n//# sourceMappingURL=set_margin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_margin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_parameter.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_parameter.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetParameter = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetParameter {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET PARAMETER ID\", expressions_1.Source, \"FIELD\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetParameter = SetParameter;\n//# sourceMappingURL=set_parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_pf_status.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_pf_status.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetPFStatus = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetPFStatus {\n getMatcher() {\n const program = (0, combi_1.seq)(\"OF PROGRAM\", expressions_1.Source);\n const options = (0, combi_1.per)(program, \"IMMEDIATELY\", (0, combi_1.seq)(\"EXCLUDING\", expressions_1.Source));\n const ret = (0, combi_1.seq)(\"SET PF-STATUS\", expressions_1.Source, (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetPFStatus = SetPFStatus;\n//# sourceMappingURL=set_pf_status.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_pf_status.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_property.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_property.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetProperty = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetProperty {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET PROPERTY OF\", expressions_1.Source, (0, combi_1.alt)(expressions_1.Constant, expressions_1.Field), \"=\", expressions_1.Source, (0, combi_1.optPrio)(\"NO FLUSH\"), (0, combi_1.opt)(expressions_1.OLEExporting));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetProperty = SetProperty;\n//# sourceMappingURL=set_property.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_property.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_run_time.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_run_time.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetRunTime = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetRunTime {\n getMatcher() {\n const clock = (0, combi_1.seq)(\"CLOCK RESOLUTION\", (0, combi_1.alt)(\"LOW\", \"HIGH\"));\n const analyzer = (0, combi_1.seq)(\"ANALYZER\", (0, combi_1.alt)(\"ON\", \"OFF\"));\n const ret = (0, combi_1.seq)(\"SET RUN TIME\", (0, combi_1.alt)(clock, analyzer));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetRunTime = SetRunTime;\n//# sourceMappingURL=set_run_time.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_run_time.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_screen.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_screen.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetScreen = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetScreen {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET SCREEN\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetScreen = SetScreen;\n//# sourceMappingURL=set_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_titlebar.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_titlebar.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetTitlebar = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetTitlebar {\n getMatcher() {\n const wit = (0, combi_1.seq)(\"WITH\", (0, combi_1.plus)(expressions_1.Source));\n const program = (0, combi_1.seq)(\"OF PROGRAM\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"SET TITLEBAR\", expressions_1.Source, (0, combi_1.opt)(program), (0, combi_1.opt)(wit));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetTitlebar = SetTitlebar;\n//# sourceMappingURL=set_titlebar.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_titlebar.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_update_task.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_update_task.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetUpdateTask = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetUpdateTask {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"SET UPDATE TASK LOCAL\");\n }\n}\nexports.SetUpdateTask = SetUpdateTask;\n//# sourceMappingURL=set_update_task.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_update_task.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_user_command.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_user_command.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetUserCommand = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SetUserCommand {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SET USER-COMMAND\", expressions_1.Source);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SetUserCommand = SetUserCommand;\n//# sourceMappingURL=set_user_command.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/set_user_command.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/shift.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/shift.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Shift = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Shift {\n getMatcher() {\n const deleting = (0, combi_1.seq)(\"DELETING\", (0, combi_1.altPrio)(\"LEADING\", \"TRAILING\"), expressions_1.Source);\n const up = (0, combi_1.seq)(\"UP TO\", expressions_1.Source);\n const mode = (0, combi_1.seq)(\"IN\", (0, combi_1.altPrio)(\"CHARACTER\", \"BYTE\"), \"MODE\");\n const dir = (0, combi_1.altPrio)(\"LEFT\", \"RIGHT\");\n const by = (0, combi_1.seq)(\"BY\", expressions_1.Source, (0, combi_1.optPrio)(\"PLACES\"));\n const options = (0, combi_1.per)(deleting, up, mode, dir, by, \"CIRCULAR\");\n return (0, combi_1.seq)(\"SHIFT\", expressions_1.Target, (0, combi_1.opt)(options));\n }\n}\nexports.Shift = Shift;\n//# sourceMappingURL=shift.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/shift.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/skip.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/skip.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Skip = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Skip {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SKIP\", (0, combi_1.opt)(\"TO LINE\"), (0, combi_1.opt)(expressions_1.Source));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Skip = Skip;\n//# sourceMappingURL=skip.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/skip.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Sort = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Sort {\n getMatcher() {\n const order = (0, combi_1.altPrio)(\"ASCENDING\", \"DESCENDING\");\n const sel = (0, combi_1.alt)(expressions_1.ComponentChain, expressions_1.Dynamic, expressions_1.SourceFieldSymbol);\n const text = \"AS TEXT\";\n const fields = (0, combi_1.plus)((0, combi_1.seq)(sel, (0, combi_1.optPrio)(text), (0, combi_1.optPrio)(order), (0, combi_1.optPrio)(text)));\n const by = (0, combi_1.seq)(\"BY\", fields);\n const normal = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.opt)((0, combi_1.per)(order, by, \"STABLE\", text)));\n const target = (0, combi_1.altPrio)(text, normal);\n return (0, combi_1.seq)(\"SORT\", target);\n }\n}\nexports.Sort = Sort;\n//# sourceMappingURL=sort.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort_dataset.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort_dataset.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SortDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SortDataset {\n getMatcher() {\n const order = (0, combi_1.alt)(\"ASCENDING\", \"DESCENDING\");\n const sel = (0, combi_1.alt)(expressions_1.FieldSub, expressions_1.SourceFieldSymbol, expressions_1.Dynamic);\n const fields = (0, combi_1.plus)((0, combi_1.seq)(sel, (0, combi_1.optPrio)(order)));\n const by = (0, combi_1.seq)(\"BY\", fields);\n const ret = (0, combi_1.seq)(\"SORT\", (0, combi_1.opt)(by));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SortDataset = SortDataset;\n//# sourceMappingURL=sort_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sort_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/split.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/split.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Split = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Split {\n getMatcher() {\n const mode = (0, combi_1.seq)(\"IN\", (0, combi_1.alt)(\"CHARACTER\", \"BYTE\"), \"MODE\");\n const into = (0, combi_1.altPrio)((0, combi_1.seq)(\"TABLE\", expressions_1.Target, (0, combi_1.opt)(mode)), (0, combi_1.seq)((0, combi_1.plus)(expressions_1.Target), (0, combi_1.opt)(mode)));\n const ret = (0, combi_1.seq)(\"SPLIT\", expressions_1.Source, \"AT\", expressions_1.Source, \"INTO\", into);\n return ret;\n }\n}\nexports.Split = Split;\n//# sourceMappingURL=split.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/split.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/start_of_selection.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/start_of_selection.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StartOfSelection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass StartOfSelection {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"START-OF-SELECTION\");\n }\n}\nexports.StartOfSelection = StartOfSelection;\n//# sourceMappingURL=start_of_selection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/start_of_selection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Static = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Expressions = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Static {\n getMatcher() {\n const p = (0, combi_1.opt)((0, combi_1.per)(Expressions.Type, Expressions.Value, Expressions.Length, Expressions.Decimals));\n const type = (0, combi_1.seq)((0, combi_1.opt)(Expressions.ConstantFieldLength), p);\n const ret = (0, combi_1.seq)((0, combi_1.alt)(\"STATIC\", \"STATICS\"), Expressions.DefinitionName, (0, combi_1.alt)(type, Expressions.TypeTable));\n return ret;\n }\n}\nexports.Static = Static;\n//# sourceMappingURL=static.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_begin.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_begin.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StaticBegin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass StaticBegin {\n getMatcher() {\n const occurs = (0, combi_1.seq)(\"OCCURS\", expressions_1.Integer);\n const ret = (0, combi_1.seq)((0, combi_1.alt)(\"STATIC\", \"STATICS\"), \"BEGIN OF\", expressions_1.DefinitionName, (0, combi_1.opt)(occurs));\n return ret;\n }\n}\nexports.StaticBegin = StaticBegin;\n//# sourceMappingURL=static_begin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_begin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_end.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_end.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StaticEnd = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass StaticEnd {\n getMatcher() {\n const ret = (0, combi_1.seq)((0, combi_1.alt)(\"STATIC\", \"STATICS\"), \"END OF\", expressions_1.DefinitionName);\n return ret;\n }\n}\nexports.StaticEnd = StaticEnd;\n//# sourceMappingURL=static_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/stop.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/stop.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Stop = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Stop {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"STOP\");\n }\n}\nexports.Stop = Stop;\n//# sourceMappingURL=stop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/stop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/submit.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/submit.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Submit = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Submit {\n getMatcher() {\n const sign = (0, combi_1.seq)(\"SIGN\", expressions_1.Source);\n const eq = (0, combi_1.alt)(\"=\", \"EQ\", \"IN\", \"NE\", \"CP\", \"GE\", \"LE\", \"INCL\");\n const compare = (0, combi_1.seq)(eq, expressions_1.Source);\n const between = (0, combi_1.seq)(\"BETWEEN\", expressions_1.Source, \"AND\", expressions_1.Source);\n const selectionTable = (0, combi_1.seq)(\"WITH SELECTION-TABLE\", expressions_1.Source);\n const awith = (0, combi_1.seq)(\"WITH\", expressions_1.FieldSub, (0, combi_1.alt)(compare, between), (0, combi_1.optPrio)(sign));\n const prog = (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.Dynamic);\n const job = (0, combi_1.seq)(\"VIA JOB\", expressions_1.Source, \"NUMBER\", expressions_1.Source);\n const exporting = (0, combi_1.str)(\"EXPORTING LIST TO MEMORY\");\n const spool = (0, combi_1.seq)(\"SPOOL PARAMETERS\", expressions_1.Source);\n const archive = (0, combi_1.seq)(\"ARCHIVE PARAMETERS\", expressions_1.Source);\n const lineSize = (0, combi_1.seq)(\"LINE-SIZE\", expressions_1.Source);\n const lineCount = (0, combi_1.seq)(\"LINE-COUNT\", expressions_1.Source);\n const user = (0, combi_1.seq)(\"USER\", expressions_1.Source);\n const sset = (0, combi_1.seq)(\"USING SELECTION-SET\", expressions_1.Source);\n const ssetp = (0, combi_1.seq)(\"USING SELECTION-SETS OF PROGRAM\", expressions_1.Source);\n const uss = (0, combi_1.seq)(\"USING SELECTION-SCREEN\", expressions_1.Source);\n const free = (0, combi_1.seq)(\"WITH FREE SELECTIONS\", expressions_1.Source);\n const newList = (0, combi_1.seq)(\"NEW LIST IDENTIFICATION\", expressions_1.Source);\n const layout = (0, combi_1.seq)(\"LAYOUT\", expressions_1.Source);\n const cover = (0, combi_1.seq)(\"SAP COVER PAGE\", expressions_1.Source);\n const keep = (0, combi_1.seq)(\"KEEP IN SPOOL\", expressions_1.Source);\n const imm = (0, combi_1.seq)(\"IMMEDIATELY\", expressions_1.Source);\n const dest = (0, combi_1.seq)(\"DESTINATION\", expressions_1.Source);\n const language = (0, combi_1.seq)(\"LANGUAGE\", expressions_1.Source);\n const perm = (0, combi_1.per)((0, combi_1.plus)(awith), selectionTable, spool, lineSize, lineCount, archive, user, sset, ssetp, keep, cover, imm, layout, dest, language, free, newList, uss, \"TO SAP-SPOOL\", \"WITHOUT SPOOL DYNPRO\", \"VIA SELECTION-SCREEN\", exporting, expressions_1.AndReturn, job);\n const ret = (0, combi_1.seq)(\"SUBMIT\", prog, (0, combi_1.opt)(perm));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Submit = Submit;\n//# sourceMappingURL=submit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/submit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Subtract = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Subtract {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SUBTRACT\", expressions_1.Source, \"FROM\", expressions_1.Target);\n return ret;\n }\n}\nexports.Subtract = Subtract;\n//# sourceMappingURL=subtract.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract_corresponding.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract_corresponding.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SubtractCorresponding = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SubtractCorresponding {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"SUBTRACT-CORRESPONDING\", expressions_1.Source, \"FROM\", expressions_1.Target);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SubtractCorresponding = SubtractCorresponding;\n//# sourceMappingURL=subtract_corresponding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/subtract_corresponding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sum.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sum.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Sum = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Sum {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"SUM\");\n }\n}\nexports.Sum = Sum;\n//# sourceMappingURL=sum.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/sum.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/summary.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/summary.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Summary = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Summary {\n getMatcher() {\n return (0, combi_1.verNot)(version_1.Version.Cloud, \"SUMMARY\");\n }\n}\nexports.Summary = Summary;\n//# sourceMappingURL=summary.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/summary.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/supply.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/supply.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Supply = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Supply {\n getMatcher() {\n const field = (0, combi_1.seq)(expressions_1.Field, \"=\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"SUPPLY\", (0, combi_1.plus)(field), \"TO CONTEXT\", expressions_1.Field);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Supply = Supply;\n//# sourceMappingURL=supply.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/supply.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/suppress_dialog.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/suppress_dialog.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SuppressDialog = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SuppressDialog {\n getMatcher() {\n const ret = (0, combi_1.str)(\"SUPPRESS DIALOG\");\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SuppressDialog = SuppressDialog;\n//# sourceMappingURL=suppress_dialog.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/suppress_dialog.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/syntax_check.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/syntax_check.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SyntaxCheck = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SyntaxCheck {\n getMatcher() {\n const program = (0, combi_1.seq)(\"PROGRAM\", expressions_1.Source);\n const offset = (0, combi_1.seq)(\"OFFSET\", expressions_1.Target);\n const frame = (0, combi_1.seq)(\"FRAME ENTRY\", expressions_1.Target);\n const include = (0, combi_1.seq)(\"INCLUDE\", expressions_1.Target);\n const trace = (0, combi_1.seq)(\"TRACE-TABLE\", expressions_1.Target);\n const line = (0, combi_1.seq)(\"LINE\", expressions_1.Target);\n const word = (0, combi_1.seq)(\"WORD\", expressions_1.Target);\n const messageId = (0, combi_1.seq)(\"MESSAGE-ID\", expressions_1.Target);\n const message = (0, combi_1.seq)(\"MESSAGE\", expressions_1.Target);\n const id = (0, combi_1.seq)(\"ID\", expressions_1.Source, \"TABLE\", expressions_1.Target);\n const replacing = (0, combi_1.seq)(\"REPLACING\", expressions_1.Target);\n const directory = (0, combi_1.seq)(\"DIRECTORY ENTRY\", expressions_1.Source);\n const dump = (0, combi_1.seq)(\"SHORTDUMP-ID\", expressions_1.Source);\n const filter = (0, combi_1.seq)(\"FILTER\", expressions_1.Source);\n const syntax = (0, combi_1.seq)((0, combi_1.optPrio)(\"PROGRAM\"), expressions_1.Source, (0, combi_1.per)(message, line, word, offset, program, replacing, directory, frame, include, messageId, trace, dump, filter, (0, combi_1.plus)(id)));\n const dynpro = (0, combi_1.seq)(\"DYNPRO\", expressions_1.Source, expressions_1.Source, expressions_1.Source, expressions_1.Source, (0, combi_1.per)(message, line, word, offset, messageId, trace));\n const ret = (0, combi_1.seq)(\"SYNTAX-CHECK FOR\", (0, combi_1.alt)(syntax, dynpro));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SyntaxCheck = SyntaxCheck;\n//# sourceMappingURL=syntax_check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/syntax_check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/system_call.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/system_call.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SystemCall = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/target.js\");\nclass SystemCall {\n getMatcher() {\n const anyy = (0, combi_1.regex)(/^.+$/);\n const objmgr = (0, combi_1.seq)(\"OBJMGR CLONE\", source_1.Source, \"TO\", target_1.Target);\n const did = (0, combi_1.seq)(anyy, \"DID\", source_1.Source, \"PARAMETERS\", source_1.Source, source_1.Source, source_1.Source);\n const ret = (0, combi_1.seq)(\"SYSTEM-CALL\", (0, combi_1.altPrio)(objmgr, did, (0, combi_1.plus)(anyy)));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.SystemCall = SystemCall;\n//# sourceMappingURL=system_call.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/system_call.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/tables.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/tables.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Tables = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Tables {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"TABLES\", expressions_1.Field);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Tables = Tables;\n//# sourceMappingURL=tables.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/tables.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_injection.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_injection.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TestInjection = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TestInjection {\n getMatcher() {\n return (0, combi_1.seq)(\"TEST-INJECTION\", expressions_1.TestSeamName);\n }\n}\nexports.TestInjection = TestInjection;\n//# sourceMappingURL=test_injection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_injection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_seam.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_seam.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TestSeam = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TestSeam {\n getMatcher() {\n return (0, combi_1.seq)(\"TEST-SEAM\", expressions_1.TestSeamName);\n }\n}\nexports.TestSeam = TestSeam;\n//# sourceMappingURL=test_seam.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/test_seam.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/top_of_page.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/top_of_page.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TopOfPage = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TopOfPage {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"TOP-OF-PAGE\", (0, combi_1.opt)(\"DURING LINE-SELECTION\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.TopOfPage = TopOfPage;\n//# sourceMappingURL=top_of_page.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/top_of_page.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/transfer.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/transfer.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Transfer = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Transfer {\n getMatcher() {\n const length = (0, combi_1.seq)(\"LENGTH\", expressions_1.Source);\n const ret = (0, combi_1.seq)(\"TRANSFER\", expressions_1.Source, \"TO\", expressions_1.Source, (0, combi_1.opt)(length), (0, combi_1.opt)(\"NO END OF LINE\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Transfer = Transfer;\n//# sourceMappingURL=transfer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/transfer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/translate.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/translate.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Translate = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Translate {\n getMatcher() {\n const cas = (0, combi_1.seq)(\"TO\", (0, combi_1.altPrio)(\"UPPER\", \"LOWER\"), \"CASE\");\n const using = (0, combi_1.seq)(\"USING\", expressions_1.Source);\n return (0, combi_1.seq)(\"TRANSLATE\", expressions_1.Target, (0, combi_1.altPrio)(cas, using));\n }\n}\nexports.Translate = Translate;\n//# sourceMappingURL=translate.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/translate.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/truncate_dataset.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/truncate_dataset.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TruncateDataset = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TruncateDataset {\n getMatcher() {\n return (0, combi_1.seq)(\"TRUNCATE DATASET\", expressions_1.Source, \"AT CURRENT POSITION\");\n }\n}\nexports.TruncateDataset = TruncateDataset;\n//# sourceMappingURL=truncate_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/truncate_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/try.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/try.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Try = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass Try {\n getMatcher() {\n return (0, combi_1.str)(\"TRY\");\n }\n}\nexports.Try = Try;\n//# sourceMappingURL=try.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/try.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Type = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Expressions = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Type {\n getMatcher() {\n const simple = (0, combi_1.per)(Expressions.Type, Expressions.Decimals, Expressions.Length);\n const def = (0, combi_1.seq)(Expressions.NamespaceSimpleName, (0, combi_1.opt)(Expressions.ConstantFieldLength), (0, combi_1.opt)((0, combi_1.alt)(simple, Expressions.TypeTable)));\n // todo, BOXED is only allowed with structures inside structures?\n const boxed = (0, combi_1.ver)(version_1.Version.v702, \"BOXED\");\n const ret = (0, combi_1.seq)(\"TYPES\", def, (0, combi_1.opt)(boxed));\n return ret;\n }\n}\nexports.Type = Type;\n//# sourceMappingURL=type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_begin.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_begin.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeBegin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeBegin {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"TYPES\", \"BEGIN OF\", expressions_1.NamespaceSimpleName, (0, combi_1.optPrio)((0, combi_1.verNot)(version_1.Version.Cloud, \"%_FINAL\")));\n return ret;\n }\n}\nexports.TypeBegin = TypeBegin;\n//# sourceMappingURL=type_begin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_begin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_end.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_end.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeEnd = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass TypeEnd {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"TYPES\", \"END OF\", expressions_1.NamespaceSimpleName);\n return ret;\n }\n}\nexports.TypeEnd = TypeEnd;\n//# sourceMappingURL=type_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeEnum = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeEnum {\n getMatcher() {\n // it is also possible to define without Value, this is covered by normal type\n const ret = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"TYPES\", expressions_1.NamespaceSimpleName, expressions_1.Value));\n return ret;\n }\n}\nexports.TypeEnum = TypeEnum;\n//# sourceMappingURL=type_enum.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_begin.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_begin.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeEnumBegin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeEnumBegin {\n getMatcher() {\n const structure = (0, combi_1.seq)(\"STRUCTURE\", expressions_1.NamespaceSimpleName);\n const base = (0, combi_1.seq)(\"BASE TYPE\", expressions_1.NamespaceSimpleName);\n const em = (0, combi_1.seq)(\"ENUM\", expressions_1.NamespaceSimpleName, (0, combi_1.opt)(structure), (0, combi_1.opt)(base));\n const ret = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"TYPES\", \"BEGIN OF\", em));\n return ret;\n }\n}\nexports.TypeEnumBegin = TypeEnumBegin;\n//# sourceMappingURL=type_enum_begin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_begin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_end.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_end.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeEnumEnd = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeEnumEnd {\n getMatcher() {\n const structure = (0, combi_1.seq)(\"STRUCTURE\", expressions_1.NamespaceSimpleName);\n const ret = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"TYPES\", \"END OF\", \"ENUM\", expressions_1.NamespaceSimpleName, (0, combi_1.opt)(structure)));\n return ret;\n }\n}\nexports.TypeEnumEnd = TypeEnumEnd;\n//# sourceMappingURL=type_enum_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_enum_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeMesh = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeMesh {\n getMatcher() {\n const on = (0, combi_1.seq)(\"ON\", expressions_1.NamespaceSimpleName, \"=\", expressions_1.NamespaceSimpleName, (0, combi_1.star)((0, combi_1.seq)(\"AND\", expressions_1.NamespaceSimpleName, \"=\", expressions_1.NamespaceSimpleName)));\n const using = (0, combi_1.seq)(\"USING KEY\", expressions_1.NamespaceSimpleName);\n const association = (0, combi_1.seq)(\"ASSOCIATION\", expressions_1.NamespaceSimpleName, \"TO\", expressions_1.NamespaceSimpleName, (0, combi_1.plus)(on));\n const ret = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"TYPES\", expressions_1.NamespaceSimpleName, \"TYPE\", expressions_1.TypeName, (0, combi_1.plus)(association), (0, combi_1.opt)(using)));\n return ret;\n }\n}\nexports.TypeMesh = TypeMesh;\n//# sourceMappingURL=type_mesh.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_begin.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_begin.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeMeshBegin = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeMeshBegin {\n getMatcher() {\n const ret = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"TYPES\", \"BEGIN OF MESH\", expressions_1.NamespaceSimpleName));\n return ret;\n }\n}\nexports.TypeMeshBegin = TypeMeshBegin;\n//# sourceMappingURL=type_mesh_begin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_begin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_end.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_end.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeMeshEnd = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass TypeMeshEnd {\n getMatcher() {\n const ret = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)(\"TYPES\", \"END OF MESH\", expressions_1.NamespaceSimpleName));\n return ret;\n }\n}\nexports.TypeMeshEnd = TypeMeshEnd;\n//# sourceMappingURL=type_mesh_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_mesh_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pool.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pool.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypePool = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\n// type pool definition\nclass TypePool {\n getMatcher() {\n const fieldName = (0, combi_1.regex)(/^\\w+$/);\n const ret = (0, combi_1.seq)(\"TYPE-POOL\", fieldName);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.TypePool = TypePool;\n//# sourceMappingURL=type_pool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pools.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pools.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypePools = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\n// type pool usage\nclass TypePools {\n getMatcher() {\n const fieldName = (0, combi_1.regex)(/^\\w+$/);\n const ret = (0, combi_1.seq)(\"TYPE-POOLS\", fieldName);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.TypePools = TypePools;\n//# sourceMappingURL=type_pools.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/type_pools.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/uline.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/uline.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Uline = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Uline {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"ULINE\", (0, combi_1.optPrio)(expressions_1.WriteOffsetLength), (0, combi_1.optPrio)(\"NO-GAP\"));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Uline = Uline;\n//# sourceMappingURL=uline.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/uline.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unassign.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unassign.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Unassign = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Unassign {\n getMatcher() {\n return (0, combi_1.seq)(\"UNASSIGN\", expressions_1.TargetFieldSymbol);\n }\n}\nexports.Unassign = Unassign;\n//# sourceMappingURL=unassign.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unassign.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unpack.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unpack.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Unpack = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Unpack {\n getMatcher() {\n const ret = (0, combi_1.seq)(\"UNPACK\", expressions_1.Source, \"TO\", expressions_1.Target);\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Unpack = Unpack;\n//# sourceMappingURL=unpack.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/unpack.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/update_database.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/update_database.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UpdateDatabase = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass UpdateDatabase {\n getMatcher() {\n const parameters = (0, combi_1.seq)(expressions_1.SQLFieldAndValue, (0, combi_1.star)((0, combi_1.seq)((0, combi_1.opt)(\",\"), expressions_1.SQLFieldAndValue)));\n const set = (0, combi_1.seq)(\"SET\", (0, combi_1.alt)(parameters, expressions_1.Dynamic), (0, combi_1.opt)((0, combi_1.seq)(\"WHERE\", expressions_1.SQLCond)));\n const fromTable = (0, combi_1.seq)(\"FROM\", (0, combi_1.opt)(\"TABLE\"), expressions_1.SQLSource);\n const ret = (0, combi_1.seq)(\"UPDATE\", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), (0, combi_1.opt)((0, combi_1.alt)(fromTable, set)));\n return ret;\n }\n}\nexports.UpdateDatabase = UpdateDatabase;\n//# sourceMappingURL=update_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/update_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Wait = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Wait {\n getMatcher() {\n const up = (0, combi_1.seq)(\"UP TO\", expressions_1.Source, \"SECONDS\");\n const channels = \"MESSAGING CHANNELS\";\n const push = (0, combi_1.ver)(version_1.Version.v750, \"PUSH CHANNELS\", version_1.Version.OpenABAP);\n const tasks = \"ASYNCHRONOUS TASKS\";\n const type = (0, combi_1.seq)(\"FOR\", (0, combi_1.per)(channels, push, tasks));\n const until = (0, combi_1.seq)((0, combi_1.opt)(type), \"UNTIL\", expressions_1.Cond, (0, combi_1.opt)(up));\n const ret = (0, combi_1.seq)(\"WAIT\", (0, combi_1.alt)(until, up));\n return ret;\n }\n}\nexports.Wait = Wait;\n//# sourceMappingURL=wait.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.When = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass When {\n getMatcher() {\n const sourc = (0, combi_1.seq)(expressions_1.Source, (0, combi_1.starPrio)(expressions_1.Or));\n return (0, combi_1.seq)(\"WHEN\", sourc);\n }\n}\nexports.When = When;\n//# sourceMappingURL=when.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_others.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_others.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WhenOthers = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass WhenOthers {\n getMatcher() {\n return (0, combi_1.str)(\"WHEN OTHERS\");\n }\n}\nexports.WhenOthers = WhenOthers;\n//# sourceMappingURL=when_others.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_others.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_type.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_type.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WhenType = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass WhenType {\n getMatcher() {\n const into = (0, combi_1.seq)(\"INTO\", expressions_1.InlineData);\n const type = (0, combi_1.seq)(expressions_1.ClassName, (0, combi_1.optPrio)(into));\n return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)(\"WHEN TYPE\", type));\n }\n}\nexports.WhenType = WhenType;\n//# sourceMappingURL=when_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/when_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/while.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/while.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.While = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass While {\n getMatcher() {\n const vary = (0, combi_1.seq)(\"VARY\", expressions_1.Target, \"FROM\", expressions_1.Source, \"NEXT\", expressions_1.Source);\n return (0, combi_1.seq)(\"WHILE\", expressions_1.Cond, (0, combi_1.opt)(vary));\n }\n}\nexports.While = While;\n//# sourceMappingURL=while.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/while.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/window.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/window.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Window = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Window {\n getMatcher() {\n const ending = (0, combi_1.seq)(\"ENDING AT\", expressions_1.Source, expressions_1.Source);\n const ret = (0, combi_1.seq)(\"WINDOW STARTING AT\", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(ending));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Window = Window;\n//# sourceMappingURL=window.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/window.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.With = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass With {\n getMatcher() {\n const as = (0, combi_1.seq)(expressions_1.WithName, \"AS\", (0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SelectLoop, (0, combi_1.tok)(tokens_1.WParenRightW));\n return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"WITH\", (0, combi_1.plus)(as), expressions_1.Select));\n }\n}\nexports.With = With;\n//# sourceMappingURL=with.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with_loop.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with_loop.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WithLoop = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass WithLoop {\n getMatcher() {\n const as = (0, combi_1.seq)(expressions_1.WithName, \"AS\", (0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SelectLoop, (0, combi_1.tok)(tokens_1.WParenRightW));\n return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)(\"WITH\", (0, combi_1.plus)(as), expressions_1.SelectLoop));\n }\n}\nexports.WithLoop = WithLoop;\n//# sourceMappingURL=with_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/with_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/write.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/write.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Write = void 0;\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Write {\n getMatcher() {\n const mask = (0, combi_1.seq)(\"USING\", (0, combi_1.altPrio)(\"NO EDIT MASK\", (0, combi_1.seq)(\"EDIT MASK\", expressions_1.Source)));\n const onOff = (0, combi_1.alt)((0, combi_1.altPrio)(\"ON\", \"OFF\"), (0, combi_1.seq)(\"=\", expressions_1.FieldSub));\n const dateFormat = (0, combi_1.altPrio)(\"DD/MM/YY\", \"MM/DD/YY\", \"DD/MM/YYYY\", \"MM/DD/YYYY\", \"DDMMYY\", \"MMDDYY\", \"YYMMDD\");\n const as = (0, combi_1.seq)(\"AS\", (0, combi_1.altPrio)(\"LINE\", \"ICON\", \"CHECKBOX\", \"SYMBOL\"));\n const to = (0, combi_1.seq)(\"TO\", expressions_1.Target);\n const options = (0, combi_1.per)(mask, to, (0, combi_1.seq)(\"EXPONENT\", expressions_1.Source), \"NO-GROUPING\", \"NO-ZERO\", \"CENTERED\", (0, combi_1.seq)(\"INPUT\", (0, combi_1.opt)(onOff)), \"NO-GAP\", \"LEFT-JUSTIFIED\", as, (0, combi_1.seq)(\"FRAMES\", onOff), (0, combi_1.seq)(\"HOTSPOT\", (0, combi_1.opt)(onOff)), \"RIGHT-JUSTIFIED\", (0, combi_1.seq)(\"TIME ZONE\", expressions_1.Source), (0, combi_1.seq)(\"UNDER\", expressions_1.Source), (0, combi_1.seq)(\"STYLE\", expressions_1.Source), (0, combi_1.seq)(\"ROUND\", expressions_1.Source), (0, combi_1.seq)(\"QUICKINFO\", expressions_1.Source), \"ENVIRONMENT TIME FORMAT\", dateFormat, (0, combi_1.seq)(\"UNIT\", expressions_1.Source), (0, combi_1.seq)(\"INTENSIFIED\", (0, combi_1.opt)(onOff)), (0, combi_1.seq)(\"INDEX\", expressions_1.Source), (0, combi_1.seq)(\"DECIMALS\", expressions_1.Source), (0, combi_1.seq)(\"INVERSE\", (0, combi_1.opt)(onOff)), expressions_1.Color, (0, combi_1.seq)(\"CURRENCY\", expressions_1.Source), \"NO-SIGN\");\n const ret = (0, combi_1.seq)(\"WRITE\", (0, combi_1.opt)(expressions_1.WriteOffsetLength), (0, combi_1.altPrio)(expressions_1.Source, expressions_1.Dynamic, \"/\"), (0, combi_1.opt)(options));\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\n }\n}\nexports.Write = Write;\n//# sourceMappingURL=write.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/write.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structure_parser.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structure_parser.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StructureParser = void 0;\nconst _statement_1 = __webpack_require__(/*! ../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst Structures = __webpack_require__(/*! ./structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst issue_1 = __webpack_require__(/*! ../../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst severity_1 = __webpack_require__(/*! ../../severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nclass StructureParser {\n static run(input) {\n const structure = this.findStructureForFile(input.file.getFilename());\n const filtered = [];\n for (const s of input.statements) {\n const get = s.get();\n if (get instanceof _statement_1.Comment || get instanceof _statement_1.Empty || get instanceof _statement_1.Unknown) {\n continue;\n }\n filtered.push(s);\n }\n return this.runFile(structure, input.file, filtered);\n }\n //////////////////\n static findStructureForFile(filename) {\n // todo, not sure this is the right place for this logic\n if (filename.endsWith(\".clas.abap\")) {\n return new Structures.ClassGlobal();\n }\n else if (filename.endsWith(\".intf.abap\")) {\n return new Structures.InterfaceGlobal();\n }\n else {\n // todo, add a special structure for TYPE-POOLS\n return new Structures.Any();\n }\n }\n static runFile(structure, file, statements) {\n const parent = new nodes_1.StructureNode(structure);\n if (this.singletons[structure.constructor.name] === undefined) {\n this.singletons[structure.constructor.name] = structure.getMatcher();\n }\n const result = this.singletons[structure.constructor.name].run(statements, parent);\n if (result.error) {\n const issue = issue_1.Issue.atPosition(file, new position_1.Position(1, 1), result.errorDescription, \"structure\", severity_1.Severity.Error);\n return { issues: [issue], node: undefined };\n }\n if (result.unmatched.length > 0) {\n const statement = result.unmatched[0];\n const descr = \"Unexpected \" + statement.get().constructor.name.toUpperCase();\n const issue = issue_1.Issue.atPosition(file, statement.getStart(), descr, \"structure\", severity_1.Severity.Error);\n return { issues: [issue], node: undefined };\n }\n return { issues: [], node: parent };\n }\n}\nexports.StructureParser = StructureParser;\nStructureParser.singletons = {};\n//# sourceMappingURL=structure_parser.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structure_parser.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.sub = exports.sta = exports.star = exports.opt = exports.beginEnd = exports.alt = exports.seq = void 0;\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass Sequence {\n constructor(list) {\n if (list.length < 2) {\n throw new Error(\"Sequence, length error\");\n }\n this.list = list;\n }\n toRailroad() {\n const children = this.list.map((e) => { return e.toRailroad(); });\n return \"Railroad.Sequence(\" + children.join() + \")\";\n }\n getUsing() {\n return this.list.reduce((a, c) => { return a.concat(c.getUsing()); }, []);\n }\n first() {\n return this.list[0].first();\n }\n run(statements, parent) {\n let inn = statements;\n const out = [];\n for (const i of this.list) {\n const match = i.run(inn, parent);\n if (match.error) {\n return {\n matched: [],\n unmatched: statements,\n error: true,\n errorDescription: match.errorDescription,\n errorMatched: out.length,\n };\n }\n out.push(...match.matched);\n inn = match.unmatched;\n }\n return {\n matched: out,\n unmatched: inn,\n error: false,\n errorDescription: \"\",\n errorMatched: 0,\n };\n }\n}\n// Note that the Alternative does not nessesarily return the first in the alternative\n// as a map is used for better performance\nclass Alternative {\n constructor(list) {\n if (list.length < 2) {\n throw new Error(\"Alternative, length error\");\n }\n this.list = list;\n }\n setupMap() {\n // dont call from constructor, it will cause infinite loop\n if (this.map === undefined) {\n this.map = {};\n for (const i of this.list) {\n for (const first of i.first()) {\n if (this.map[first]) {\n this.map[first].push(i);\n }\n else {\n this.map[first] = [i];\n }\n }\n }\n }\n }\n first() {\n return [\"\"];\n }\n toRailroad() {\n const children = this.list.map((e) => { return e.toRailroad(); });\n return \"Railroad.Choice(0, \" + children.join() + \")\";\n }\n getUsing() {\n return this.list.reduce((a, c) => { return a.concat(c.getUsing()); }, []);\n }\n run(statements, parent) {\n this.setupMap();\n let count = 0;\n let countError = \"\";\n if (statements.length === 0) {\n return {\n matched: [],\n unmatched: statements,\n error: true,\n errorDescription: countError,\n errorMatched: count,\n };\n }\n const token = statements[0].getFirstToken().getStr().toUpperCase();\n for (const i of this.map[token] || []) {\n const match = i.run(statements, parent);\n if (match.error === false) {\n return match;\n }\n if (match.errorMatched > count) {\n countError = match.errorDescription;\n count = match.errorMatched;\n }\n }\n for (const i of this.map[\"\"] || []) {\n const match = i.run(statements, parent);\n if (match.error === false) {\n return match;\n }\n if (match.errorMatched > count) {\n countError = match.errorDescription;\n count = match.errorMatched;\n }\n }\n if (count === 0) {\n return {\n matched: [],\n unmatched: statements,\n error: true,\n errorDescription: \"Unexpected code structure\",\n errorMatched: count,\n };\n }\n else {\n return {\n matched: [],\n unmatched: statements,\n error: true,\n errorDescription: countError,\n errorMatched: count,\n };\n }\n }\n}\nclass Optional {\n constructor(obj) {\n this.obj = obj;\n }\n toRailroad() {\n return \"Railroad.Optional(\" + this.obj.toRailroad() + \")\";\n }\n getUsing() {\n return this.obj.getUsing();\n }\n run(statements, parent) {\n const ret = this.obj.run(statements, parent);\n ret.error = false;\n return ret;\n }\n first() {\n return [\"\"];\n }\n}\nclass Star {\n constructor(obj) {\n this.obj = obj;\n }\n toRailroad() {\n return \"Railroad.ZeroOrMore(\" + this.obj.toRailroad() + \")\";\n }\n getUsing() {\n return this.obj.getUsing();\n }\n run(statements, parent) {\n let inn = statements;\n const out = [];\n while (true) {\n if (inn.length === 0) {\n return {\n matched: out,\n unmatched: inn,\n error: false,\n errorDescription: \"\",\n errorMatched: 0,\n };\n }\n const match = this.obj.run(inn, parent);\n if (match.error === true) {\n if (match.errorMatched > 0) {\n return {\n matched: out,\n unmatched: inn,\n error: true,\n errorDescription: match.errorDescription,\n errorMatched: match.errorMatched,\n };\n }\n else {\n return {\n matched: out,\n unmatched: inn,\n error: false,\n errorDescription: \"\",\n errorMatched: 0,\n };\n }\n }\n out.push(...match.matched);\n inn = match.unmatched;\n }\n }\n first() {\n return [\"\"];\n }\n}\nclass SubStructure {\n constructor(s) {\n this.s = s;\n }\n toRailroad() {\n return \"Railroad.NonTerminal('\" + this.s.constructor.name + \"', {href: '#/structure/\" + this.s.constructor.name + \"'})\";\n }\n getUsing() {\n return [\"structure/\" + this.s.constructor.name];\n }\n first() {\n this.setupMatcher();\n return this.matcher.first();\n }\n setupMatcher() {\n if (this.matcher === undefined) {\n // SubStructures are singletons, so the getMatcher can be saved, its expensive to create\n // dont move this to the constructor, as it might trigger infinite recursion\n this.matcher = this.s.getMatcher();\n }\n }\n run(statements, parent) {\n const nparent = new nodes_1.StructureNode(this.s);\n this.setupMatcher();\n const ret = this.matcher.run(statements, nparent);\n if (ret.matched.length === 0) {\n ret.error = true;\n }\n else {\n parent.addChild(nparent);\n }\n return ret;\n }\n}\nclass SubStatement {\n constructor(obj) {\n this.obj = obj;\n }\n first() {\n const o = new this.obj();\n if (o instanceof _statement_1.MacroCall || o instanceof _statement_1.NativeSQL) {\n return [\"\"];\n }\n return o.getMatcher().first();\n }\n toRailroad() {\n return \"Railroad.Terminal('\" + this.className() + \"', {href: '#/statement/\" + this.className() + \"'})\";\n }\n getUsing() {\n return [\"statement/\" + this.className()];\n }\n className() {\n return this.obj.name;\n }\n run(statements, parent) {\n if (statements.length === 0) {\n return {\n matched: [],\n unmatched: [],\n error: true,\n errorDescription: \"Expected \" + this.className().toUpperCase(),\n errorMatched: 0,\n };\n }\n else if (statements[0].get() instanceof this.obj) {\n parent.addChild(statements[0]);\n return {\n matched: [statements[0]],\n unmatched: statements.splice(1),\n error: false,\n errorDescription: \"\",\n errorMatched: 0,\n };\n }\n else {\n return {\n matched: [],\n unmatched: statements,\n error: true,\n errorDescription: \"Expected \" + this.className().toUpperCase(),\n errorMatched: 0,\n };\n }\n }\n}\nfunction seq(first, ...rest) {\n return new Sequence([first].concat(rest));\n}\nexports.seq = seq;\nfunction alt(first, ...rest) {\n return new Alternative([first].concat(rest));\n}\nexports.alt = alt;\nfunction beginEnd(begin, body, end) {\n return new Sequence([begin, body, end]);\n}\nexports.beginEnd = beginEnd;\nfunction opt(o) {\n return new Optional(o);\n}\nexports.opt = opt;\nfunction star(s) {\n return new Star(s);\n}\nexports.star = star;\nfunction sta(s) {\n return new SubStatement(s);\n}\nexports.sta = sta;\nconst singletons = {};\nfunction sub(s) {\n if (singletons[s.name] === undefined) {\n singletons[s.name] = new SubStructure(new s());\n }\n return singletons[s.name];\n}\nexports.sub = sub;\n//# sourceMappingURL=_combi.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/any.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/any.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Any = void 0;\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst Structures = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nclass Any {\n getMatcher() {\n return (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.ClassLocalFriends), (0, _combi_1.sta)(Statements.ClassDeferred), (0, _combi_1.sta)(Statements.Report), (0, _combi_1.sta)(Statements.Program), (0, _combi_1.sta)(Statements.Parameter), (0, _combi_1.sta)(Statements.CheckSelectOptions), (0, _combi_1.sta)(Statements.Get), (0, _combi_1.sta)(Statements.Initialization), (0, _combi_1.sta)(Statements.InterfaceDeferred), (0, _combi_1.sta)(Statements.SelectionScreen), (0, _combi_1.sta)(Statements.SelectOption), (0, _combi_1.sta)(Statements.AtSelectionScreen), (0, _combi_1.sta)(Statements.AtLineSelection), (0, _combi_1.sta)(Statements.AtUserCommand), (0, _combi_1.sta)(Statements.StartOfSelection), (0, _combi_1.sta)(Statements.EndOfSelection), (0, _combi_1.sta)(Statements.LoadOfProgram), (0, _combi_1.sta)(Statements.TopOfPage), (0, _combi_1.sta)(Statements.EndOfPage), (0, _combi_1.sta)(Statements.Controls), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.TypePool), (0, _combi_1.sta)(Statements.FunctionPool), (0, _combi_1.sub)(Structures.Normal), (0, _combi_1.sub)(Structures.Form), (0, _combi_1.sub)(Structures.Module), (0, _combi_1.sub)(Structures.FunctionModule), (0, _combi_1.sub)(Structures.Interface), (0, _combi_1.sub)(Structures.ClassDefinition), (0, _combi_1.sub)(Structures.ClassImplementation)));\n }\n}\nexports.Any = Any;\n//# sourceMappingURL=any.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/any.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.At = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass At {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.At), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndAt));\n }\n}\nexports.At = At;\n//# sourceMappingURL=at.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_first.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_first.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AtFirst = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass AtFirst {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.AtFirst), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndAt));\n }\n}\nexports.AtFirst = AtFirst;\n//# sourceMappingURL=at_first.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_first.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_last.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_last.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AtLast = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass AtLast {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.AtLast), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndAt));\n }\n}\nexports.AtLast = AtLast;\n//# sourceMappingURL=at_last.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_last.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Body = void 0;\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst normal_1 = __webpack_require__(/*! ./normal */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js\");\nclass Body {\n getMatcher() {\n // todo, this should be a \"plus\" instead, however its not implemented yet\n return (0, _combi_1.star)((0, _combi_1.sub)(normal_1.Normal));\n }\n}\nexports.Body = Body;\n//# sourceMappingURL=body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Case = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst when_1 = __webpack_require__(/*! ./when */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when.js\");\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass Case {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Case), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sub)(when_1.When), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sta)(Statements.Include))), (0, _combi_1.sta)(Statements.EndCase));\n }\n}\nexports.Case = Case;\n//# sourceMappingURL=case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case_type.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case_type.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CaseType = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst when_type_1 = __webpack_require__(/*! ./when_type */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when_type.js\");\nclass CaseType {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.CaseType), (0, _combi_1.star)((0, _combi_1.sub)(when_type_1.WhenType)), (0, _combi_1.sta)(Statements.EndCase));\n }\n}\nexports.CaseType = CaseType;\n//# sourceMappingURL=case_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Catch = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Catch {\n getMatcher() {\n const cat = (0, _combi_1.seq)((0, _combi_1.sta)(Statements.Catch), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)));\n return cat;\n }\n}\nexports.Catch = Catch;\n//# sourceMappingURL=catch.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch_system_exceptions.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch_system_exceptions.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CatchSystemExceptions = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass CatchSystemExceptions {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.CatchSystemExceptions), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndCatch));\n }\n}\nexports.CatchSystemExceptions = CatchSystemExceptions;\n//# sourceMappingURL=catch_system_exceptions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch_system_exceptions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_data.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_data.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassData = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass ClassData {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.ClassDataBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.ClassData), (0, _combi_1.sub)(ClassData))), (0, _combi_1.sta)(Statements.ClassDataEnd));\n }\n}\nexports.ClassData = ClassData;\n//# sourceMappingURL=class_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_definition.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_definition.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDefinition = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst private_section_1 = __webpack_require__(/*! ./private_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/private_section.js\");\nconst protected_section_1 = __webpack_require__(/*! ./protected_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js\");\nconst public_section_1 = __webpack_require__(/*! ./public_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/public_section.js\");\nconst statements_1 = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nclass ClassDefinition {\n getMatcher() {\n const body = (0, _combi_1.seq)((0, _combi_1.opt)((0, _combi_1.sta)(statements_1.SetExtendedCheck)), (0, _combi_1.star)((0, _combi_1.sta)(statements_1.TypePools)), (0, _combi_1.opt)((0, _combi_1.sub)(public_section_1.PublicSection)), (0, _combi_1.opt)((0, _combi_1.sub)(protected_section_1.ProtectedSection)), (0, _combi_1.opt)((0, _combi_1.sub)(private_section_1.PrivateSection)), (0, _combi_1.opt)((0, _combi_1.sta)(statements_1.SetExtendedCheck)));\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.ClassDefinition), body, (0, _combi_1.sta)(Statements.EndClass));\n }\n}\nexports.ClassDefinition = ClassDefinition;\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_global.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_global.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassGlobal = void 0;\nconst Structures = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass ClassGlobal {\n getMatcher() {\n return (0, _combi_1.seq)((0, _combi_1.star)((0, _combi_1.sta)(Statements.TypePools)), (0, _combi_1.sub)(Structures.ClassDefinition), (0, _combi_1.sub)(Structures.ClassImplementation));\n }\n}\nexports.ClassGlobal = ClassGlobal;\n//# sourceMappingURL=class_global.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_global.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_implementation.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_implementation.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassImplementation = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass ClassImplementation {\n getMatcher() {\n // the DEFINE statement is allowed between local method implementations, but not global?\n const body = (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sub)(Structures.Define), (0, _combi_1.sta)(Statements.Include), (0, _combi_1.sub)(Structures.Method)));\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.ClassImplementation), body, (0, _combi_1.sta)(Statements.EndClass));\n }\n}\nexports.ClassImplementation = ClassImplementation;\n//# sourceMappingURL=class_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/cleanup.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/cleanup.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Cleanup = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Cleanup {\n getMatcher() {\n const cleanup = (0, _combi_1.seq)((0, _combi_1.sta)(Statements.Cleanup), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)));\n return cleanup;\n }\n}\nexports.Cleanup = Cleanup;\n//# sourceMappingURL=cleanup.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/cleanup.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Constants = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass Constants {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.ConstantBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Include), (0, _combi_1.sub)(Constants))), (0, _combi_1.sta)(Statements.ConstantEnd));\n }\n}\nexports.Constants = Constants;\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/data.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/data.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Data = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst enhancement_1 = __webpack_require__(/*! ./enhancement */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement.js\");\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js\");\nconst types_1 = __webpack_require__(/*! ./types */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js\");\nconst define_1 = __webpack_require__(/*! ./define */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/define.js\");\nclass Data {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.DataBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Data), (0, _combi_1.sub)(Data), (0, _combi_1.sta)(Statements.Include), (0, _combi_1.sta)(Statements.Ranges), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sub)(constants_1.Constants), (0, _combi_1.sta)(Statements.Type), (0, _combi_1.sub)(types_1.Types), (0, _combi_1.sub)(enhancement_1.Enhancement), (0, _combi_1.sub)(define_1.Define), (0, _combi_1.sta)(Statements.IncludeType), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.EnhancementPoint))), (0, _combi_1.sta)(Statements.DataEnd));\n }\n}\nexports.Data = Data;\n//# sourceMappingURL=data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/define.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/define.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Define = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass Define {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Define), (0, _combi_1.star)((0, _combi_1.sta)(_statement_1.MacroContent)), (0, _combi_1.sta)(Statements.EndOfDefinition));\n }\n}\nexports.Define = Define;\n//# sourceMappingURL=define.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/define.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/do.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/do.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Do = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Do {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Do), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndDo));\n }\n}\nexports.Do = Do;\n//# sourceMappingURL=do.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/do.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/else.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/else.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Else = void 0;\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Else {\n getMatcher() {\n const body = (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body));\n const elseif = (0, _combi_1.seq)((0, _combi_1.sta)(Statements.Else), body);\n return elseif;\n }\n}\nexports.Else = Else;\n//# sourceMappingURL=else.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/else.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/elseif.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/elseif.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ElseIf = void 0;\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass ElseIf {\n getMatcher() {\n const body = (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body));\n const elseif = (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ElseIf), body);\n return elseif;\n }\n}\nexports.ElseIf = ElseIf;\n//# sourceMappingURL=elseif.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/elseif.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Enhancement = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Enhancement {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Enhancement), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndEnhancement));\n }\n}\nexports.Enhancement = Enhancement;\n//# sourceMappingURL=enhancement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement_section.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement_section.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EnhancementSection = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass EnhancementSection {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.EnhancementSection), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndEnhancementSection));\n }\n}\nexports.EnhancementSection = EnhancementSection;\n//# sourceMappingURL=enhancement_section.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement_section.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/exec_sql.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/exec_sql.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExecSQL = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass ExecSQL {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.ExecSQL), (0, _combi_1.star)((0, _combi_1.sta)(_statement_1.NativeSQL)), (0, _combi_1.sta)(Statements.EndExec));\n }\n}\nexports.ExecSQL = ExecSQL;\n//# sourceMappingURL=exec_sql.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/exec_sql.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/form.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/form.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Form = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Form {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Form), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndForm));\n }\n}\nexports.Form = Form;\n//# sourceMappingURL=form.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/form.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/function_module.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/function_module.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionModule = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass FunctionModule {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.FunctionModule), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndFunction));\n }\n}\nexports.FunctionModule = FunctionModule;\n//# sourceMappingURL=function_module.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/function_module.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/if.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/if.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.If = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nconst elseif_1 = __webpack_require__(/*! ./elseif */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/elseif.js\");\nconst else_1 = __webpack_require__(/*! ./else */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/else.js\");\nclass If {\n getMatcher() {\n const contents = (0, _combi_1.seq)((0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.star)((0, _combi_1.sub)(elseif_1.ElseIf)), (0, _combi_1.opt)((0, _combi_1.sub)(else_1.Else)));\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.If), contents, (0, _combi_1.sta)(Statements.EndIf));\n }\n}\nexports.If = If;\n//# sourceMappingURL=if.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/if.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js ***! + \*************************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./any */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/any.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at_first */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_first.js\"), exports);\n__exportStar(__webpack_require__(/*! ./at_last */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/at_last.js\"), exports);\n__exportStar(__webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\"), exports);\n__exportStar(__webpack_require__(/*! ./case_type */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./case */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case.js\"), exports);\n__exportStar(__webpack_require__(/*! ./catch_system_exceptions */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch_system_exceptions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./catch */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_data */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_data.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_definition */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_global */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_global.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_implementation */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cleanup */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/cleanup.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constants */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/data.js\"), exports);\n__exportStar(__webpack_require__(/*! ./define */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/define.js\"), exports);\n__exportStar(__webpack_require__(/*! ./do */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/do.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_mesh */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_mesh.js\"), exports);\n__exportStar(__webpack_require__(/*! ./else */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/else.js\"), exports);\n__exportStar(__webpack_require__(/*! ./elseif */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/elseif.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enhancement_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement_section.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enhancement */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/enhancement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./exec_sql */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/exec_sql.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/form.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_module */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/function_module.js\"), exports);\n__exportStar(__webpack_require__(/*! ./if */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/if.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface_global */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface_global.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop_at_screen */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop_at_screen.js\"), exports);\n__exportStar(__webpack_require__(/*! ./loop */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/method.js\"), exports);\n__exportStar(__webpack_require__(/*! ./module */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/module.js\"), exports);\n__exportStar(__webpack_require__(/*! ./normal */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js\"), exports);\n__exportStar(__webpack_require__(/*! ./on_change */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/on_change.js\"), exports);\n__exportStar(__webpack_require__(/*! ./private_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/private_section.js\"), exports);\n__exportStar(__webpack_require__(/*! ./protected_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js\"), exports);\n__exportStar(__webpack_require__(/*! ./provide */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/provide.js\"), exports);\n__exportStar(__webpack_require__(/*! ./public_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/public_section.js\"), exports);\n__exportStar(__webpack_require__(/*! ./section_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/select.js\"), exports);\n__exportStar(__webpack_require__(/*! ./statics */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/statics.js\"), exports);\n__exportStar(__webpack_require__(/*! ./test_injection */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_injection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./test_seam */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_seam.js\"), exports);\n__exportStar(__webpack_require__(/*! ./try */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/try.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_enum */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_enum.js\"), exports);\n__exportStar(__webpack_require__(/*! ./types */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js\"), exports);\n__exportStar(__webpack_require__(/*! ./when_type */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./when */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when.js\"), exports);\n__exportStar(__webpack_require__(/*! ./while */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/while.js\"), exports);\n__exportStar(__webpack_require__(/*! ./with */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/with.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Interface = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst section_section_1 = __webpack_require__(/*! ./section_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js\");\nclass Interface {\n getMatcher() {\n const intf = (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Interface), (0, _combi_1.star)((0, _combi_1.sub)(section_section_1.SectionContents)), (0, _combi_1.sta)(Statements.EndInterface));\n return intf;\n }\n}\nexports.Interface = Interface;\n//# sourceMappingURL=interface.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface_global.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface_global.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InterfaceGlobal = void 0;\nconst Structures = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass InterfaceGlobal {\n getMatcher() {\n return (0, _combi_1.seq)((0, _combi_1.star)((0, _combi_1.sta)(Statements.TypePools)), (0, _combi_1.star)((0, _combi_1.sta)(Statements.InterfaceLoad)), (0, _combi_1.sub)(Structures.Interface));\n }\n}\nexports.InterfaceGlobal = InterfaceGlobal;\n//# sourceMappingURL=interface_global.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/interface_global.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Loop = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nclass Loop {\n getMatcher() {\n const body = (0, _combi_1.alt)((0, _combi_1.sub)(_1.Body), (0, _combi_1.sub)(_1.OnChange));\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Loop), (0, _combi_1.star)(body), (0, _combi_1.sta)(Statements.EndLoop));\n }\n}\nexports.Loop = Loop;\n//# sourceMappingURL=loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop_at_screen.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop_at_screen.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopAtScreen = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nclass LoopAtScreen {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.LoopAtScreen), (0, _combi_1.opt)((0, _combi_1.sub)(_1.Body)), (0, _combi_1.sta)(Statements.EndLoop));\n }\n}\nexports.LoopAtScreen = LoopAtScreen;\n//# sourceMappingURL=loop_at_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop_at_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/method.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/method.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Method = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Method {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.MethodImplementation), (0, _combi_1.opt)((0, _combi_1.alt)((0, _combi_1.sub)(body_1.Body), (0, _combi_1.star)((0, _combi_1.sta)(_statement_1.NativeSQL)))), (0, _combi_1.sta)(Statements.EndMethod));\n }\n}\nexports.Method = Method;\n//# sourceMappingURL=method.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/method.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/module.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/module.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Module = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Module {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndModule));\n }\n}\nexports.Module = Module;\n//# sourceMappingURL=module.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/module.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Normal = void 0;\nconst Structures = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass Normal {\n getMatcher() {\n // note that the sequence of alternatives here influences performance\n return (0, _combi_1.alt)((0, _combi_1.sta)(Statements.Move), (0, _combi_1.sta)(Statements.Call), (0, _combi_1.sta)(Statements.Data), (0, _combi_1.sub)(Structures.If), (0, _combi_1.sta)(Statements.Clear), (0, _combi_1.sta)(Statements.FieldSymbol), (0, _combi_1.sta)(Statements.CreateObject), (0, _combi_1.sta)(Statements.CallFunction), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sub)(Structures.LoopAtScreen), (0, _combi_1.sub)(Structures.Loop), (0, _combi_1.sta)(Statements.Append), (0, _combi_1.sub)(Structures.Try), (0, _combi_1.sta)(Statements.ReadTable), (0, _combi_1.sta)(Statements.Assert), (0, _combi_1.sta)(Statements.Return), (0, _combi_1.sta)(Statements.Select), (0, _combi_1.sta)(Statements.Assign), (0, _combi_1.sta)(Statements.InsertInternal), (0, _combi_1.sta)(Statements.DeleteInternal), (0, _combi_1.sta)(Statements.Concatenate), (0, _combi_1.sub)(Structures.Case), (0, _combi_1.sub)(Structures.CaseType), (0, _combi_1.sub)(Structures.Enhancement), (0, _combi_1.sub)(Structures.EnhancementSection), (0, _combi_1.sta)(Statements.AddCorresponding), (0, _combi_1.sta)(Statements.Add), (0, _combi_1.sta)(Statements.AssignLocalCopy), (0, _combi_1.sta)(Statements.AuthorityCheck), (0, _combi_1.sta)(Statements.Back), (0, _combi_1.sta)(Statements.Break), (0, _combi_1.sta)(Statements.BreakId), (0, _combi_1.sta)(Statements.CallDatabase), (0, _combi_1.sta)(Statements.CallDialog), (0, _combi_1.sta)(Statements.CallKernel), (0, _combi_1.sta)(Statements.CallOLE), (0, _combi_1.sta)(Statements.CallScreen), (0, _combi_1.sta)(Statements.ModifyScreen), (0, _combi_1.sta)(Statements.CallSelectionScreen), (0, _combi_1.sta)(Statements.CallTransaction), (0, _combi_1.sta)(Statements.CallTransformation), (0, _combi_1.sta)(Statements.Check), (0, _combi_1.sta)(Statements.ClassDefinitionLoad), (0, _combi_1.sta)(Statements.CloseCursor), (0, _combi_1.sta)(Statements.CloseDataset), (0, _combi_1.sta)(Statements.Collect), (0, _combi_1.sta)(Statements.Commit), (0, _combi_1.sta)(Statements.Communication), (0, _combi_1.sta)(Statements.Compute), (0, _combi_1.sta)(Statements.CallBadi), (0, _combi_1.sta)(Statements.Condense), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Contexts), (0, _combi_1.sta)(Statements.Continue), (0, _combi_1.sta)(Statements.ConvertText), (0, _combi_1.sta)(Statements.Convert), (0, _combi_1.sta)(Statements.CreateData), (0, _combi_1.sta)(Statements.CreateOLE), (0, _combi_1.sta)(Statements.DeleteCluster), (0, _combi_1.sta)(Statements.DeleteDatabase), (0, _combi_1.sta)(Statements.DeleteDataset), (0, _combi_1.sta)(Statements.DeleteDynpro), (0, _combi_1.sta)(Statements.DeleteMemory), (0, _combi_1.sta)(Statements.DeleteReport), (0, _combi_1.sta)(Statements.DeleteTextpool), (0, _combi_1.sta)(Statements.Demand), (0, _combi_1.sta)(Statements.Describe), (0, _combi_1.sta)(Statements.Detail), (0, _combi_1.sta)(Statements.Divide), (0, _combi_1.sta)(Statements.EditorCall), (0, _combi_1.sta)(Statements.EnhancementPoint), (0, _combi_1.sta)(Statements.Exit), (0, _combi_1.sta)(Statements.ExportDynpro), (0, _combi_1.sta)(Statements.Export), (0, _combi_1.sta)(Statements.Extract), (0, _combi_1.sta)(Statements.FetchNextCursor), (0, _combi_1.sta)(Statements.FieldGroup), (0, _combi_1.sta)(Statements.Fields), (0, _combi_1.sta)(Statements.Find), (0, _combi_1.sta)(Statements.Format), (0, _combi_1.sta)(Statements.FreeMemory), (0, _combi_1.sta)(Statements.FreeObject), (0, _combi_1.sta)(Statements.Free), (0, _combi_1.sta)(Statements.GenerateDynpro), (0, _combi_1.sta)(Statements.GenerateReport), (0, _combi_1.sta)(Statements.GenerateSubroutine), (0, _combi_1.sta)(Statements.GetBadi), (0, _combi_1.sta)(Statements.GetBit), (0, _combi_1.sta)(Statements.GetCursor), (0, _combi_1.sta)(Statements.GetDataset), (0, _combi_1.sta)(Statements.GetLocale), (0, _combi_1.sta)(Statements.GetParameter), (0, _combi_1.sta)(Statements.GetPFStatus), (0, _combi_1.sta)(Statements.GetProperty), (0, _combi_1.sta)(Statements.GetReference), (0, _combi_1.sta)(Statements.GetRunTime), (0, _combi_1.sta)(Statements.GetTime), (0, _combi_1.sta)(Statements.Hide), (0, _combi_1.sta)(Statements.Nodes), (0, _combi_1.sta)(Statements.ImportDynpro), (0, _combi_1.sta)(Statements.ImportNametab), (0, _combi_1.sta)(Statements.MoveCorresponding), (0, _combi_1.sta)(Statements.Import), (0, _combi_1.sta)(Statements.Infotypes), (0, _combi_1.sta)(Statements.Include), // include does not have to be at top level\n (0, _combi_1.sta)(Statements.InsertDatabase), (0, _combi_1.sta)(Statements.InsertReport), (0, _combi_1.sta)(Statements.InsertTextpool), (0, _combi_1.sta)(Statements.InsertFieldGroup), (0, _combi_1.sta)(Statements.InterfaceLoad), (0, _combi_1.sta)(Statements.Leave), (0, _combi_1.sta)(Statements.LoadReport), (0, _combi_1.sta)(Statements.Local), (0, _combi_1.sta)(Statements.With), (0, _combi_1.sta)(Statements.LogPoint), (0, _combi_1.sta)(Statements.Message), (0, _combi_1.sta)(Statements.ModifyLine), (0, _combi_1.sta)(Statements.ModifyDatabase), (0, _combi_1.sta)(Statements.ModifyInternal), (0, _combi_1.sta)(Statements.Multiply), (0, _combi_1.sta)(Statements.NewLine), (0, _combi_1.sta)(Statements.NewPage), (0, _combi_1.sta)(Statements.OpenCursor), (0, _combi_1.sta)(Statements.OpenDataset), (0, _combi_1.sta)(Statements.Overlay), (0, _combi_1.sta)(Statements.Pack), (0, _combi_1.sta)(Statements.Perform), (0, _combi_1.sta)(Statements.FormDefinition), (0, _combi_1.sta)(Statements.Position), (0, _combi_1.sta)(Statements.Put), (0, _combi_1.sta)(Statements.PrintControl), (0, _combi_1.sta)(Statements.RaiseEvent), (0, _combi_1.sta)(Statements.Raise), (0, _combi_1.sta)(Statements.Ranges), (0, _combi_1.sta)(Statements.ReadDataset), (0, _combi_1.sta)(Statements.ReadLine), (0, _combi_1.sta)(Statements.ReadReport), (0, _combi_1.sta)(Statements.ReadTextpool), (0, _combi_1.sta)(Statements.Receive), (0, _combi_1.sta)(Statements.RefreshControl), (0, _combi_1.sta)(Statements.Refresh), (0, _combi_1.sta)(Statements.Reject), (0, _combi_1.sta)(Statements.Replace), (0, _combi_1.sta)(Statements.Reserve), (0, _combi_1.sta)(Statements.Resume), (0, _combi_1.sta)(Statements.Retry), (0, _combi_1.sta)(Statements.Rollback), (0, _combi_1.sta)(Statements.Scan), (0, _combi_1.sta)(Statements.ScrollList), (0, _combi_1.sta)(Statements.Search), (0, _combi_1.sta)(Statements.SetBit), (0, _combi_1.sta)(Statements.SetBlank), (0, _combi_1.sta)(Statements.SetCountry), (0, _combi_1.sta)(Statements.SetCursor), (0, _combi_1.sta)(Statements.SetDataset), (0, _combi_1.sta)(Statements.SetExtendedCheck), (0, _combi_1.sta)(Statements.SetHandler), (0, _combi_1.sta)(Statements.SetLanguage), (0, _combi_1.sta)(Statements.SetLeft), (0, _combi_1.sta)(Statements.SetLocale), (0, _combi_1.sta)(Statements.SetMargin), (0, _combi_1.sta)(Statements.SetParameter), (0, _combi_1.sta)(Statements.SetPFStatus), (0, _combi_1.sta)(Statements.SetProperty), (0, _combi_1.sta)(Statements.SetRunTime), (0, _combi_1.sta)(Statements.SetScreen), (0, _combi_1.sta)(Statements.SetTitlebar), (0, _combi_1.sta)(Statements.SetUserCommand), (0, _combi_1.sta)(Statements.SetUpdateTask), (0, _combi_1.sta)(Statements.Shift), (0, _combi_1.sta)(Statements.Skip), (0, _combi_1.sta)(Statements.SortDataset), (0, _combi_1.sta)(Statements.Sort), (0, _combi_1.sta)(Statements.Static), (0, _combi_1.sta)(Statements.Split), (0, _combi_1.sta)(Statements.Stop), (0, _combi_1.sta)(Statements.Submit), (0, _combi_1.sta)(Statements.Summary), (0, _combi_1.sta)(Statements.SubtractCorresponding), (0, _combi_1.sta)(Statements.Subtract), (0, _combi_1.sta)(Statements.SuppressDialog), (0, _combi_1.sta)(Statements.Supply), (0, _combi_1.sta)(Statements.Sum), (0, _combi_1.sta)(Statements.SyntaxCheck), (0, _combi_1.sta)(Statements.SystemCall), (0, _combi_1.sta)(Statements.Tables), (0, _combi_1.sta)(Statements.Transfer), (0, _combi_1.sta)(Statements.Translate), (0, _combi_1.sta)(Statements.Type), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.Uline), (0, _combi_1.sta)(Statements.Unassign), (0, _combi_1.sta)(Statements.Unpack), (0, _combi_1.sta)(Statements.UpdateDatabase), (0, _combi_1.sta)(Statements.Wait), (0, _combi_1.sta)(Statements.Window), (0, _combi_1.sta)(Statements.Write), (0, _combi_1.sta)(Statements.CommitEntities), (0, _combi_1.sta)(Statements.GetPermissions), (0, _combi_1.sta)(Statements.SetLocks), (0, _combi_1.sta)(Statements.ModifyEntities), (0, _combi_1.sta)(Statements.ReadEntities), (0, _combi_1.sta)(Statements.RollbackEntities), (0, _combi_1.sub)(Structures.Define), (0, _combi_1.sub)(Structures.TestInjection), (0, _combi_1.sub)(Structures.TestSeam), (0, _combi_1.sub)(Structures.TypeMesh), (0, _combi_1.sub)(Structures.Provide), (0, _combi_1.sub)(Structures.CatchSystemExceptions), (0, _combi_1.sub)(Structures.At), (0, _combi_1.sub)(Structures.AtFirst), (0, _combi_1.sub)(Structures.AtLast), (0, _combi_1.sub)(Structures.Constants), (0, _combi_1.sub)(Structures.Types), (0, _combi_1.sub)(Structures.Statics), (0, _combi_1.sub)(Structures.Select), (0, _combi_1.sub)(Structures.Data), (0, _combi_1.sub)(Structures.TypeEnum), (0, _combi_1.sub)(Structures.While), (0, _combi_1.sub)(Structures.With), (0, _combi_1.sub)(Structures.Do), (0, _combi_1.sub)(Structures.ExecSQL));\n }\n}\nexports.Normal = Normal;\n//# sourceMappingURL=normal.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/on_change.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/on_change.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OnChange = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass OnChange {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.OnChange), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndOn));\n }\n}\nexports.OnChange = OnChange;\n//# sourceMappingURL=on_change.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/on_change.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/private_section.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/private_section.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PrivateSection = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst section_section_1 = __webpack_require__(/*! ./section_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js\");\nclass PrivateSection {\n getMatcher() {\n return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.Private), (0, _combi_1.opt)((0, _combi_1.sub)(section_section_1.SectionContents)));\n }\n}\nexports.PrivateSection = PrivateSection;\n//# sourceMappingURL=private_section.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/private_section.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ProtectedSection = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst section_section_1 = __webpack_require__(/*! ./section_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js\");\nclass ProtectedSection {\n getMatcher() {\n return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.Protected), (0, _combi_1.opt)((0, _combi_1.sub)(section_section_1.SectionContents)));\n }\n}\nexports.ProtectedSection = ProtectedSection;\n//# sourceMappingURL=protected_section.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/provide.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/provide.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Provide = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Provide {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Provide), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndProvide));\n }\n}\nexports.Provide = Provide;\n//# sourceMappingURL=provide.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/provide.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/public_section.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/public_section.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PublicSection = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst section_section_1 = __webpack_require__(/*! ./section_section */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js\");\nclass PublicSection {\n getMatcher() {\n return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.Public), (0, _combi_1.opt)((0, _combi_1.sub)(section_section_1.SectionContents)));\n }\n}\nexports.PublicSection = PublicSection;\n//# sourceMappingURL=public_section.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/public_section.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SectionContents = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst types_1 = __webpack_require__(/*! ./types */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js\");\nconst constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js\");\nconst type_enum_1 = __webpack_require__(/*! ./type_enum */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_enum.js\");\nconst class_data_1 = __webpack_require__(/*! ./class_data */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_data.js\");\nconst data_1 = __webpack_require__(/*! ./data */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/data.js\");\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nclass SectionContents {\n getMatcher() {\n return (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.MethodDef), (0, _combi_1.sta)(Statements.InterfaceDef), (0, _combi_1.sta)(Statements.Data), (0, _combi_1.sta)(Statements.ClassData), (0, _combi_1.sta)(Statements.Events), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Aliases), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.InterfaceLoad), (0, _combi_1.sta)(Statements.ClassDefinitionLoad), (0, _combi_1.sub)(types_1.Types), (0, _combi_1.sub)(constants_1.Constants), (0, _combi_1.sub)(type_enum_1.TypeEnum), (0, _combi_1.sub)(_1.TypeMesh), (0, _combi_1.sub)(data_1.Data), (0, _combi_1.sub)(class_data_1.ClassData), (0, _combi_1.sta)(Statements.Type)));\n }\n}\nexports.SectionContents = SectionContents;\n//# sourceMappingURL=section_section.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/section_section.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/select.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/select.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Select = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass Select {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.SelectLoop), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndSelect));\n }\n}\nexports.Select = Select;\n//# sourceMappingURL=select.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/select.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/statics.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/statics.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Statics = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass Statics {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.StaticBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Static), (0, _combi_1.sta)(Statements.IncludeType))), (0, _combi_1.sta)(Statements.StaticEnd));\n }\n}\nexports.Statics = Statics;\n//# sourceMappingURL=statics.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/statics.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_injection.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_injection.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TestInjection = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass TestInjection {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.TestInjection), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndTestInjection));\n }\n}\nexports.TestInjection = TestInjection;\n//# sourceMappingURL=test_injection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_injection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_seam.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_seam.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TestSeam = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass TestSeam {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.TestSeam), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndTestSeam));\n }\n}\nexports.TestSeam = TestSeam;\n//# sourceMappingURL=test_seam.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_seam.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/try.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/try.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Try = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst catch_1 = __webpack_require__(/*! ./catch */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nconst cleanup_1 = __webpack_require__(/*! ./cleanup */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/cleanup.js\");\nclass Try {\n getMatcher() {\n const block = (0, _combi_1.seq)((0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.star)((0, _combi_1.sub)(catch_1.Catch)), (0, _combi_1.opt)((0, _combi_1.sub)(cleanup_1.Cleanup)));\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.Try), block, (0, _combi_1.sta)(Statements.EndTry));\n }\n}\nexports.Try = Try;\n//# sourceMappingURL=try.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/try.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_enum.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_enum.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeEnum = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass TypeEnum {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.TypeEnumBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.TypeEnum), (0, _combi_1.sta)(Statements.Type))), (0, _combi_1.sta)(Statements.TypeEnumEnd));\n }\n}\nexports.TypeEnum = TypeEnum;\n//# sourceMappingURL=type_enum.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_enum.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_mesh.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_mesh.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeMesh = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nclass TypeMesh {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.TypeMeshBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.TypeMesh), (0, _combi_1.sta)(Statements.Type))), (0, _combi_1.sta)(Statements.TypeMeshEnd));\n }\n}\nexports.TypeMesh = TypeMesh;\n//# sourceMappingURL=type_mesh.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_mesh.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Types = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass Types {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.TypeBegin), (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Type), (0, _combi_1.sub)(Types), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sta)(Statements.Include), (0, _combi_1.sta)(Statements.IncludeType))), (0, _combi_1.sta)(Statements.TypeEnd));\n }\n}\nexports.Types = Types;\n//# sourceMappingURL=types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.When = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass When {\n getMatcher() {\n const when = (0, _combi_1.seq)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.When), (0, _combi_1.sta)(Statements.WhenOthers)), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)));\n return when;\n }\n}\nexports.When = When;\n//# sourceMappingURL=when.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when_type.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when_type.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WhenType = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass WhenType {\n getMatcher() {\n const when = (0, _combi_1.seq)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.WhenType), (0, _combi_1.sta)(Statements.WhenOthers)), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)));\n return when;\n }\n}\nexports.WhenType = WhenType;\n//# sourceMappingURL=when_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/when_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/while.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/while.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.While = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass While {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.While), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndWhile));\n }\n}\nexports.While = While;\n//# sourceMappingURL=while.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/while.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/with.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/with.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.With = void 0;\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _combi_1 = __webpack_require__(/*! ./_combi */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js\");\nconst body_1 = __webpack_require__(/*! ./body */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js\");\nclass With {\n getMatcher() {\n return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.WithLoop), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndWith));\n }\n}\nexports.With = With;\n//# sourceMappingURL=with.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/3_structures/structures/with.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RiskLevel = exports.Duration = exports.MethodParameterDirection = exports.AttributeLevel = void 0;\n// Only helper functions to get data from single file, no type information\nvar AttributeLevel;\n(function (AttributeLevel) {\n AttributeLevel[\"Instance\"] = \"instance\";\n AttributeLevel[\"Static\"] = \"static\";\n AttributeLevel[\"Constant\"] = \"constant\";\n})(AttributeLevel || (exports.AttributeLevel = AttributeLevel = {}));\nvar MethodParameterDirection;\n(function (MethodParameterDirection) {\n MethodParameterDirection[\"Importing\"] = \"importing\";\n MethodParameterDirection[\"Exporting\"] = \"exporting\";\n MethodParameterDirection[\"Changing\"] = \"changing\";\n MethodParameterDirection[\"Returning\"] = \"returning\";\n})(MethodParameterDirection || (exports.MethodParameterDirection = MethodParameterDirection = {}));\nvar Duration;\n(function (Duration) {\n Duration[\"short\"] = \"SHORT\";\n Duration[\"medium\"] = \"MEDIUM\";\n Duration[\"long\"] = \"LONG\";\n})(Duration || (exports.Duration = Duration = {}));\nvar RiskLevel;\n(function (RiskLevel) {\n RiskLevel[\"harmless\"] = \"HARMLESS\";\n RiskLevel[\"critical\"] = \"CRITICAL\";\n RiskLevel[\"dangerous\"] = \"DANGEROUS\";\n})(RiskLevel || (exports.RiskLevel = RiskLevel = {}));\n//# sourceMappingURL=_abap_file_information.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Identifier = void 0;\nclass Identifier {\n constructor(token, filename) {\n this.token = token;\n this.filename = filename;\n }\n getName() {\n let name = this.token.getStr();\n // todo, should this be handled in the parser instead?\n if (name.substr(0, 1) === \"!\") {\n name = name.substr(1);\n }\n return name;\n }\n equals(id) {\n // note how the boolean condition is evalulated lazily\n return id.getStart().equals(this.getStart())\n && id.getFilename() === this.getFilename();\n }\n getToken() {\n return this.token;\n }\n getFilename() {\n return this.filename;\n }\n getStart() {\n return this.token.getStart();\n }\n getEnd() {\n return this.token.getEnd();\n }\n}\nexports.Identifier = Identifier;\n//# sourceMappingURL=_identifier.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPFileInformation = void 0;\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _abap_file_information_1 = __webpack_require__(/*! ./_abap_file_information */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js\");\nconst _identifier_1 = __webpack_require__(/*! ./_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst Tokens = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst visibility_1 = __webpack_require__(/*! ./visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nclass ABAPFileInformation {\n constructor(structure, filename) {\n this.forms = [];\n this.implementations = [];\n this.interfaces = [];\n this.classes = [];\n this.filename = filename;\n this.parse(structure);\n }\n listClassImplementations() {\n return this.implementations;\n }\n listInterfaceDefinitions() {\n return this.interfaces;\n }\n getInterfaceDefinitionByName(name) {\n const upper = name.toUpperCase();\n for (const i of this.listInterfaceDefinitions()) {\n if (i.identifier.getName().toUpperCase() === upper) {\n return i;\n }\n }\n return undefined;\n }\n listClassDefinitions() {\n return this.classes;\n }\n getClassDefinitionByName(name) {\n const upper = name.toUpperCase();\n for (const d of this.listClassDefinitions()) {\n if (d.identifier.getName().toUpperCase() === upper) {\n return d;\n }\n }\n return undefined;\n }\n getClassImplementationByName(name) {\n const upper = name.toUpperCase();\n for (const impl of this.listClassImplementations()) {\n if (impl.identifier.getName().toUpperCase() === upper) {\n return impl;\n }\n }\n return undefined;\n }\n listFormDefinitions() {\n return this.forms;\n }\n ///////////////////////\n parse(structure) {\n var _a;\n if (structure === undefined) {\n return;\n }\n this.parseClasses(structure);\n this.parseInterfaces(structure);\n for (const found of structure.findAllStructures(Structures.ClassImplementation)) {\n const methods = [];\n for (const method of found.findAllStructures(Structures.Method)) {\n const methodName = (_a = method.findFirstExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (methodName) {\n methods.push(new _identifier_1.Identifier(methodName, this.filename));\n }\n }\n const name = found.findFirstStatement(Statements.ClassImplementation).findFirstExpression(Expressions.ClassName).getFirstToken();\n this.implementations.push({\n name: name.getStr(),\n identifier: new _identifier_1.Identifier(name, this.filename),\n methods,\n });\n }\n for (const statement of structure.findAllStructures(Structures.Form)) {\n // FORMs can contain a dash in the name\n const pos = statement.findFirstExpression(Expressions.FormName).getFirstToken().getStart();\n const name = statement.findFirstExpression(Expressions.FormName).concatTokens();\n const nameToken = new Tokens.Identifier(pos, name);\n this.forms.push({\n name: nameToken.getStr(),\n identifier: new _identifier_1.Identifier(nameToken, this.filename),\n });\n }\n }\n parseInterfaces(structure) {\n for (const found of structure.findDirectStructures(Structures.Interface)) {\n const i = found.findFirstStatement(Statements.Interface);\n if (i === undefined) {\n throw new Error(\"Interface expected, parseInterfaces\");\n }\n const interfaceName = i.findDirectExpression(Expressions.InterfaceName).getFirstToken();\n const methods = this.parseMethodDefinition(found, visibility_1.Visibility.Public);\n const attributes = this.parseAttributes(found, visibility_1.Visibility.Public);\n const aliases = this.parseAliases(found, visibility_1.Visibility.Public);\n const constants = this.parseConstants(found, visibility_1.Visibility.Public);\n const g = i.findDirectExpression(Expressions.ClassGlobal);\n this.interfaces.push({\n name: interfaceName.getStr(),\n identifier: new _identifier_1.Identifier(interfaceName, this.filename),\n isLocal: g === undefined,\n isGlobal: g !== undefined,\n interfaces: this.getImplementing(found),\n aliases,\n methods,\n constants,\n attributes,\n });\n }\n }\n parseClasses(structure) {\n var _a;\n for (const found of structure.findAllStructures(Structures.ClassDefinition)) {\n const className = found.findFirstStatement(Statements.ClassDefinition).findFirstExpression(Expressions.ClassName).getFirstToken();\n const methods = this.parseMethodDefinition(found.findFirstStructure(Structures.PublicSection), visibility_1.Visibility.Public);\n methods.push(...this.parseMethodDefinition(found.findFirstStructure(Structures.ProtectedSection), visibility_1.Visibility.Protected));\n methods.push(...this.parseMethodDefinition(found.findFirstStructure(Structures.PrivateSection), visibility_1.Visibility.Private));\n const attributes = this.parseAttributes(found.findFirstStructure(Structures.PublicSection), visibility_1.Visibility.Public);\n attributes.push(...this.parseAttributes(found.findFirstStructure(Structures.ProtectedSection), visibility_1.Visibility.Protected));\n attributes.push(...this.parseAttributes(found.findFirstStructure(Structures.PrivateSection), visibility_1.Visibility.Private));\n const aliases = this.parseAliases(found.findFirstStructure(Structures.PublicSection), visibility_1.Visibility.Public);\n aliases.push(...this.parseAliases(found.findFirstStructure(Structures.ProtectedSection), visibility_1.Visibility.Protected));\n aliases.push(...this.parseAliases(found.findFirstStructure(Structures.PrivateSection), visibility_1.Visibility.Private));\n const constants = this.parseConstants(found.findFirstStructure(Structures.PublicSection), visibility_1.Visibility.Public);\n constants.push(...this.parseConstants(found.findFirstStructure(Structures.ProtectedSection), visibility_1.Visibility.Protected));\n constants.push(...this.parseConstants(found.findFirstStructure(Structures.PrivateSection), visibility_1.Visibility.Private));\n const superClassName = (_a = found.findFirstExpression(Expressions.SuperClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr();\n const containsGlobal = found.findFirstExpression(Expressions.ClassGlobal);\n const cdef = found.findFirstStatement(Statements.ClassDefinition);\n const concat = (cdef === null || cdef === void 0 ? void 0 : cdef.concatTokens().toUpperCase()) || \"\";\n let riskLevel;\n if (concat.includes(\"RISK LEVEL CRITICAL\")) {\n riskLevel = _abap_file_information_1.RiskLevel.critical;\n }\n else if (concat.includes(\"RISK LEVEL DANGEROUS\")) {\n riskLevel = _abap_file_information_1.RiskLevel.dangerous;\n }\n else if (concat.includes(\"RISK LEVEL HARMLESS\")) {\n riskLevel = _abap_file_information_1.RiskLevel.harmless;\n }\n let duration;\n if (concat.includes(\"DURATION SHORT\")) {\n duration = _abap_file_information_1.Duration.short;\n }\n else if (concat.includes(\"DURATION LONG\")) {\n duration = _abap_file_information_1.Duration.long;\n }\n else if (concat.includes(\"DURATION MEDIUM\")) {\n duration = _abap_file_information_1.Duration.medium;\n }\n this.classes.push({\n name: className.getStr(),\n identifier: new _identifier_1.Identifier(className, this.filename),\n isLocal: containsGlobal === undefined,\n isGlobal: containsGlobal !== undefined,\n methods,\n superClassName,\n interfaces: this.getImplementing(found),\n isForTesting: concat.includes(\" FOR TESTING\"),\n duration,\n riskLevel,\n isAbstract: (cdef === null || cdef === void 0 ? void 0 : cdef.findDirectTokenByText(\"ABSTRACT\")) !== undefined,\n isSharedMemory: concat.includes(\" SHARED MEMORY ENABLED\"),\n isFinal: found.findFirstExpression(Expressions.ClassFinal) !== undefined,\n aliases,\n attributes,\n constants,\n });\n }\n }\n ///////////////////\n getImplementing(input) {\n const ret = [];\n for (const node of input.findAllStatements(Statements.InterfaceDef)) {\n const abstract = node.findDirectExpression(Expressions.AbstractMethods);\n const abstractMethods = [];\n if (abstract) {\n for (const m of abstract.findDirectExpressions(Expressions.MethodName)) {\n abstractMethods.push(m.concatTokens().toUpperCase());\n }\n }\n const final = node.findDirectExpression(Expressions.FinalMethods);\n const finalMethods = [];\n if (final) {\n for (const m of final.findDirectExpressions(Expressions.MethodName)) {\n finalMethods.push(m.concatTokens().toUpperCase());\n }\n }\n const concat = node.concatTokens().toUpperCase();\n const allAbstract = concat.includes(\" ALL METHODS ABSTRACT\");\n const partial = concat.includes(\" PARTIALLY IMPLEMENTED\");\n const name = node.findFirstExpression(Expressions.InterfaceName).getFirstToken().getStr().toUpperCase();\n ret.push({\n name,\n partial,\n allAbstract,\n abstractMethods,\n finalMethods,\n });\n }\n return ret;\n }\n parseAliases(node, visibility) {\n if (node === undefined) {\n return [];\n }\n const ret = [];\n for (const a of node.findAllStatements(Statements.Aliases)) {\n const name = a.findFirstExpression(Expressions.SimpleName).getFirstToken();\n const comp = a.findFirstExpression(Expressions.Field).getFirstToken();\n ret.push({\n name: name.getStr(),\n identifier: new _identifier_1.Identifier(name, this.filename),\n visibility,\n component: comp.getStr(),\n });\n }\n return ret;\n }\n parseConstants(node, visibility) {\n var _a, _b;\n if (node === undefined) {\n return [];\n }\n const results = [];\n for (const constant of node.findAllStatements(Statements.Constant)) {\n const name = constant.findFirstExpression(Expressions.DefinitionName).getFirstToken();\n const typeName = constant.findFirstExpression(Expressions.TypeName);\n // VALUE `const_value` -> `const_value`\n const literal = (_b = (_a = constant.findFirstExpression(Expressions.Value)) === null || _a === void 0 ? void 0 : _a.getTokens()[1].getStr()) !== null && _b !== void 0 ? _b : \"``\";\n // `const_value` -> const_value\n const value = literal.slice(1, (literal === null || literal === void 0 ? void 0 : literal.length) - 1);\n results.push({\n name: name.getStr(),\n typeName: typeName ? typeName.getFirstToken().getStr() : \"\",\n value: value,\n identifier: new _identifier_1.Identifier(name, this.filename),\n visibility,\n });\n }\n return results;\n }\n parseAttributes(node, visibility) {\n if (node === undefined) {\n return [];\n }\n const contents = node.findFirstStructure(Structures.SectionContents);\n if (contents === undefined) {\n return [];\n }\n const ret = [];\n for (const d of contents.findDirectStatements(Statements.Data)) {\n const name = d.findFirstExpression(Expressions.DefinitionName).getFirstToken();\n ret.push({\n name: name.getStr(),\n identifier: new _identifier_1.Identifier(name, this.filename),\n level: _abap_file_information_1.AttributeLevel.Instance,\n readOnly: d.concatTokens().toUpperCase().includes(\" READ-ONLY\"),\n visibility,\n });\n }\n for (const d of contents.findDirectStatements(Statements.ClassData)) {\n const name = d.findFirstExpression(Expressions.DefinitionName).getFirstToken();\n ret.push({\n name: name.getStr(),\n identifier: new _identifier_1.Identifier(name, this.filename),\n level: _abap_file_information_1.AttributeLevel.Static,\n readOnly: d.concatTokens().toUpperCase().includes(\" READ-ONLY\"),\n visibility,\n });\n }\n for (const d of contents.findDirectStatements(Statements.Constant)) {\n const name = d.findFirstExpression(Expressions.DefinitionName).getFirstToken();\n ret.push({\n name: name.getStr(),\n identifier: new _identifier_1.Identifier(name, this.filename),\n level: _abap_file_information_1.AttributeLevel.Constant,\n readOnly: true,\n visibility,\n });\n }\n return ret;\n }\n parseMethodDefinition(node, visibility) {\n var _a;\n if (node === undefined) {\n return [];\n }\n const methods = [];\n for (const def of node.findAllStatements(Statements.MethodDef)) {\n const methodName = (_a = def.findDirectExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (methodName === undefined) {\n continue;\n }\n const parameters = this.parseMethodParameters(def);\n methods.push({\n name: methodName.getStr(),\n identifier: new _identifier_1.Identifier(methodName, this.filename),\n isRedefinition: def.findDirectExpression(Expressions.Redefinition) !== undefined,\n isForTesting: def.concatTokens().toUpperCase().includes(\" FOR TESTING\"),\n isAbstract: def.findDirectExpression(Expressions.Abstract) !== undefined,\n isEventHandler: def.findDirectExpression(Expressions.EventHandler) !== undefined,\n visibility,\n parameters,\n exceptions: [], // todo\n });\n }\n return methods;\n }\n // todo, refactor this method, it is too long\n parseMethodParameters(node) {\n var _a, _b, _c, _d;\n const ret = [];\n const importing = node.findFirstExpression(Expressions.MethodDefImporting);\n if (importing) {\n for (const param of importing.findAllExpressions(Expressions.MethodParam)) {\n const name = (_a = param.findDirectExpression(Expressions.MethodParamName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (name) {\n ret.push({\n name: name.getStr().replace(\"!\", \"\"),\n identifier: new _identifier_1.Identifier(name, this.filename),\n direction: _abap_file_information_1.MethodParameterDirection.Importing,\n });\n }\n }\n }\n const exporting = node.findFirstExpression(Expressions.MethodDefExporting);\n if (exporting) {\n for (const param of exporting.findAllExpressions(Expressions.MethodParam)) {\n const name = (_b = param.findDirectExpression(Expressions.MethodParamName)) === null || _b === void 0 ? void 0 : _b.getFirstToken();\n if (name) {\n ret.push({\n name: name.getStr().replace(\"!\", \"\"),\n identifier: new _identifier_1.Identifier(name, this.filename),\n direction: _abap_file_information_1.MethodParameterDirection.Exporting,\n });\n }\n }\n }\n const changing = node.findFirstExpression(Expressions.MethodDefChanging);\n if (changing) {\n for (const param of changing.findAllExpressions(Expressions.MethodParam)) {\n const name = (_c = param.findDirectExpression(Expressions.MethodParamName)) === null || _c === void 0 ? void 0 : _c.getFirstToken();\n if (name) {\n ret.push({\n name: name.getStr().replace(\"!\", \"\"),\n identifier: new _identifier_1.Identifier(name, this.filename),\n direction: _abap_file_information_1.MethodParameterDirection.Changing,\n });\n }\n }\n }\n const returning = node.findFirstExpression(Expressions.MethodDefReturning);\n if (returning) {\n const name = (_d = returning.findDirectExpression(Expressions.MethodParamName)) === null || _d === void 0 ? void 0 : _d.getFirstToken();\n if (name) {\n ret.push({\n name: name.getStr().replace(\"!\", \"\"),\n identifier: new _identifier_1.Identifier(name, this.filename),\n direction: _abap_file_information_1.MethodParameterDirection.Returning,\n });\n }\n }\n return ret;\n }\n}\nexports.ABAPFileInformation = ABAPFileInformation;\n//# sourceMappingURL=abap_file_information.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Visibility = void 0;\nvar Visibility;\n(function (Visibility) {\n Visibility[Visibility[\"Private\"] = 1] = \"Private\";\n Visibility[Visibility[\"Protected\"] = 2] = \"Protected\";\n Visibility[Visibility[\"Public\"] = 3] = \"Public\";\n})(Visibility || (exports.Visibility = Visibility = {}));\n//# sourceMappingURL=visibility.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BuiltIn = exports.BuiltInMethod = void 0;\n/* eslint-disable max-len */\nconst _typed_identifier_1 = __webpack_require__(/*! ../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst version_1 = __webpack_require__(/*! ../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass BuiltInMethod extends _identifier_1.Identifier {\n constructor(token, filename, method, row) {\n super(token, filename);\n this.method = method;\n this.row = row;\n }\n getRequiredParameters() {\n const ret = [];\n for (const i in this.method.mandatory) {\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), i);\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.mandatory[i]));\n }\n return ret;\n }\n getOptional() {\n throw new Error(\"BuiltInMethod->Method not implemented.\");\n }\n getAll() {\n throw new Error(\"BuiltInMethod->getAll, Method not implemented.\");\n }\n getImporting() {\n const ret = [];\n for (const i in this.method.mandatory) {\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), i);\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.mandatory[i]));\n }\n for (const i in this.method.optional) {\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), i);\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.optional[i]));\n }\n return ret;\n }\n getDefaultImporting() {\n if (this.method.mandatory === undefined) {\n return undefined;\n }\n const keys = Object.keys(this.method.mandatory);\n if (keys.length === 1) {\n return keys[0].toUpperCase();\n }\n return undefined;\n }\n getExporting() {\n return [];\n }\n getRaising() {\n return [];\n }\n getChanging() {\n return [];\n }\n getReturning() {\n const id = new tokens_1.Identifier(new position_1.Position(this.row, 1), \"ret\");\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, this.method.return);\n }\n getExceptions() {\n return [];\n }\n getVisibility() {\n return visibility_1.Visibility.Public;\n }\n isRedefinition() {\n return false;\n }\n isAbstract() {\n return false;\n }\n isStatic() {\n return false;\n }\n isEventHandler() {\n return false;\n }\n getParameters() {\n return this;\n }\n getParameterDefault(_parameter) {\n return undefined;\n }\n}\nexports.BuiltInMethod = BuiltInMethod;\nclass BuiltIn {\n constructor() {\n this.row = 1;\n }\n buildDefinition(method, row) {\n const token = new tokens_1.Identifier(new position_1.Position(row, 1), method.name);\n return new BuiltInMethod(token, BuiltIn.filename, method, row);\n }\n searchBuiltin(name) {\n if (name === undefined) {\n return undefined;\n }\n // todo, optimize, use hash map\n const index = BuiltIn.methods.findIndex(a => a.name === name.toUpperCase());\n if (index < 0) {\n return undefined;\n }\n return this.buildDefinition(BuiltIn.methods[index], index);\n }\n isPredicate(name) {\n if (name === undefined) {\n return undefined;\n }\n // todo, optimize, use hash map\n const index = BuiltIn.methods.findIndex(a => a.name === name.toUpperCase());\n if (index < 0) {\n return undefined;\n }\n return BuiltIn.methods[index].predicate;\n }\n getTypes() {\n const ret = this.buildSY();\n const id = new tokens_1.Identifier(new position_1.Position(1, 1), \"abap_bool\");\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.CharacterType(1, { qualifiedName: \"ABAP_BOOL\", ddicName: \"ABAP_BOOL\" })));\n return ret;\n }\n get(extras) {\n const ret = this.buildSY();\n ret.push(this.buildVariable(\"screen\")); // todo, add structure, or alternatively make native Statements\n ret.push(this.buildConstant(\"%_BACKSPACE\"));\n ret.push(this.buildConstant(\"%_CHARSIZE\"));\n ret.push(this.buildConstant(\"%_CR_LF\"));\n ret.push(this.buildConstant(\"%_ENDIAN\"));\n ret.push(this.buildConstant(\"%_FORMFEED\"));\n ret.push(this.buildConstant(\"%_HORIZONTAL_TAB\"));\n ret.push(this.buildConstant(\"%_MAXCHAR\"));\n ret.push(this.buildConstant(\"%_MINCHAR\"));\n ret.push(this.buildConstant(\"%_NEWLINE\"));\n ret.push(this.buildConstant(\"%_VERTICAL_TAB\"));\n ret.push(this.buildConstant(\"abap_false\", new basic_1.CharacterType(1, { qualifiedName: \"ABAP_BOOL\", ddicName: \"ABAP_BOOL\" }), \"' '\"));\n ret.push(this.buildConstant(\"abap_true\", new basic_1.CharacterType(1, { qualifiedName: \"ABAP_BOOL\", ddicName: \"ABAP_BOOL\" }), \"'X'\"));\n ret.push(this.buildConstant(\"abap_undefined\", new basic_1.CharacterType(1, { qualifiedName: \"ABAP_BOOL\", ddicName: \"ABAP_BOOL\" }), \"'-'\"));\n ret.push(this.buildConstant(\"abap_off\", new basic_1.CharacterType(1, { qualifiedName: \"ABAP_BOOL\", ddicName: \"ABAP_BOOL\" }), \"' '\"));\n ret.push(this.buildConstant(\"abap_on\", new basic_1.CharacterType(1, { qualifiedName: \"ABAP_BOOL\", ddicName: \"ABAP_BOOL\" }), \"'X'\"));\n ret.push(this.buildConstant(\"col_background\", basic_1.IntegerType.get(), \"0\"));\n ret.push(this.buildConstant(\"col_heading\", basic_1.IntegerType.get(), \"1\"));\n ret.push(this.buildConstant(\"col_key\", basic_1.IntegerType.get(), \"4\"));\n ret.push(this.buildConstant(\"col_negative\", basic_1.IntegerType.get(), \"6\"));\n ret.push(this.buildConstant(\"col_group\", basic_1.IntegerType.get(), \"7\"));\n ret.push(this.buildConstant(\"col_normal\", basic_1.IntegerType.get(), \"2\"));\n ret.push(this.buildConstant(\"col_positive\", basic_1.IntegerType.get(), \"5\"));\n ret.push(this.buildConstant(\"col_total\", basic_1.IntegerType.get(), \"3\"));\n ret.push(this.buildConstant(\"space\", new basic_1.CharacterType(1, { derivedFromConstant: true }), \"' '\"));\n for (const e of extras) {\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), e);\n ret.push(new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.VoidType(e), [\"read_only\" /* IdentifierMeta.ReadOnly */, \"built-in\" /* IdentifierMeta.BuiltIn */], \"'?'\"));\n }\n return ret;\n }\n /////////////////////////////\n buildSY() {\n const components = [];\n // NOTE: fields must be in correct sequence for the syntax check\n components.push({ name: \"index\", type: basic_1.IntegerType.get() });\n components.push({ name: \"pagno\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tabix\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tfill\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tlopc\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tmaxl\", type: basic_1.IntegerType.get() });\n components.push({ name: \"toccu\", type: basic_1.IntegerType.get() });\n components.push({ name: \"ttabc\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tstis\", type: basic_1.IntegerType.get() });\n components.push({ name: \"ttabi\", type: basic_1.IntegerType.get() });\n components.push({ name: \"dbcnt\", type: basic_1.IntegerType.get() });\n components.push({ name: \"fdpos\", type: basic_1.IntegerType.get() });\n components.push({ name: \"colno\", type: basic_1.IntegerType.get() });\n components.push({ name: \"linct\", type: basic_1.IntegerType.get() });\n components.push({ name: \"linno\", type: basic_1.IntegerType.get() });\n components.push({ name: \"linsz\", type: basic_1.IntegerType.get() });\n components.push({ name: \"pagct\", type: basic_1.IntegerType.get() });\n components.push({ name: \"macol\", type: basic_1.IntegerType.get() });\n components.push({ name: \"marow\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tleng\", type: basic_1.IntegerType.get() });\n components.push({ name: \"sfoff\", type: basic_1.IntegerType.get() });\n components.push({ name: \"willi\", type: basic_1.IntegerType.get() });\n components.push({ name: \"lilli\", type: basic_1.IntegerType.get() });\n components.push({ name: \"subrc\", type: basic_1.IntegerType.get() });\n components.push({ name: \"fleng\", type: basic_1.IntegerType.get() });\n components.push({ name: \"cucol\", type: basic_1.IntegerType.get() });\n components.push({ name: \"curow\", type: basic_1.IntegerType.get() });\n components.push({ name: \"lsind\", type: basic_1.IntegerType.get() });\n components.push({ name: \"listi\", type: basic_1.IntegerType.get() });\n components.push({ name: \"stepl\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tpagi\", type: basic_1.IntegerType.get() });\n components.push({ name: \"winx1\", type: basic_1.IntegerType.get() });\n components.push({ name: \"winy1\", type: basic_1.IntegerType.get() });\n components.push({ name: \"winx2\", type: basic_1.IntegerType.get() });\n components.push({ name: \"winy2\", type: basic_1.IntegerType.get() });\n components.push({ name: \"winco\", type: basic_1.IntegerType.get() });\n components.push({ name: \"winro\", type: basic_1.IntegerType.get() });\n components.push({ name: \"windi\", type: basic_1.IntegerType.get() });\n components.push({ name: \"srows\", type: basic_1.IntegerType.get() });\n components.push({ name: \"scols\", type: basic_1.IntegerType.get() });\n components.push({ name: \"loopc\", type: basic_1.IntegerType.get() });\n components.push({ name: \"folen\", type: basic_1.IntegerType.get() });\n components.push({ name: \"fodec\", type: basic_1.IntegerType.get() });\n components.push({ name: \"tzone\", type: basic_1.IntegerType.get() });\n components.push({ name: \"dayst\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"ftype\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"appli\", type: new basic_1.HexType(2) });\n components.push({ name: \"fdayw\", type: new basic_1.AnyType() });\n components.push({ name: \"ccurs\", type: new basic_1.PackedType(5, 0) });\n components.push({ name: \"ccurt\", type: new basic_1.PackedType(5, 0) });\n components.push({ name: \"debug\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"ctype\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"input\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-input\" }) });\n components.push({ name: \"langu\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-langu\", conversionExit: \"ISOLA\" }) });\n components.push({ name: \"modno\", type: basic_1.IntegerType.get() });\n components.push({ name: \"batch\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-batch\" }) });\n components.push({ name: \"binpt\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-binpt\" }) });\n components.push({ name: \"calld\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-calld\" }) });\n components.push({ name: \"dynnr\", type: new basic_1.CharacterType(4, { qualifiedName: \"sy-dynnr\" }) });\n components.push({ name: \"dyngr\", type: new basic_1.CharacterType(4, { qualifiedName: \"sy-dyngr\" }) });\n components.push({ name: \"newpa\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"pri40\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"rstrt\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"wtitl\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-wtitl\" }) });\n components.push({ name: \"cpage\", type: basic_1.IntegerType.get() });\n components.push({ name: \"dbnam\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-dbnam\" }) });\n components.push({ name: \"mandt\", type: new basic_1.CharacterType(3, { qualifiedName: \"sy-mandt\" }) });\n components.push({ name: \"prefx\", type: new basic_1.CharacterType(3) });\n components.push({ name: \"fmkey\", type: new basic_1.CharacterType(3) });\n components.push({ name: \"pexpi\", type: new basic_1.NumericType(1) });\n components.push({ name: \"prini\", type: new basic_1.NumericType(1) });\n components.push({ name: \"primm\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"prrel\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"playo\", type: new basic_1.CharacterType(5) });\n components.push({ name: \"prbig\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"playp\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"prnew\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"prlog\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"pdest\", type: new basic_1.CharacterType(4, { qualifiedName: \"sy-pdest\" }) });\n components.push({ name: \"plist\", type: new basic_1.CharacterType(12) });\n components.push({ name: \"pauth\", type: new basic_1.NumericType(2) });\n components.push({ name: \"prdsn\", type: new basic_1.CharacterType(6) });\n components.push({ name: \"pnwpa\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"callr\", type: new basic_1.CharacterType(8, { qualifiedName: \"sy-callr\" }) });\n components.push({ name: \"repi2\", type: new basic_1.CharacterType(40) });\n components.push({ name: \"rtitl\", type: new basic_1.CharacterType(70) });\n components.push({ name: \"prrec\", type: new basic_1.CharacterType(12) });\n components.push({ name: \"prtxt\", type: new basic_1.CharacterType(68) });\n components.push({ name: \"prabt\", type: new basic_1.CharacterType(12) });\n components.push({ name: \"lpass\", type: new basic_1.CharacterType(4) });\n components.push({ name: \"nrpag\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"paart\", type: new basic_1.CharacterType(16) });\n components.push({ name: \"prcop\", type: new basic_1.NumericType(3) });\n components.push({ name: \"batzs\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"bspld\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"brep4\", type: new basic_1.CharacterType(4) });\n components.push({ name: \"batzo\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"batzd\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"batzw\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"batzm\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"ctabl\", type: new basic_1.CharacterType(4) });\n components.push({ name: \"dbsys\", type: new basic_1.CharacterType(10, { qualifiedName: \"sy-dbsys\" }) });\n components.push({ name: \"dcsys\", type: new basic_1.CharacterType(4) });\n components.push({ name: \"macdb\", type: new basic_1.CharacterType(4) });\n components.push({ name: \"sysid\", type: new basic_1.CharacterType(8, { qualifiedName: \"sy-sysid\" }) });\n components.push({ name: \"opsys\", type: new basic_1.CharacterType(10, { qualifiedName: \"sy-opsys\" }) });\n components.push({ name: \"pfkey\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-pfkey\" }) });\n components.push({ name: \"saprl\", type: new basic_1.CharacterType(4, { qualifiedName: \"sy-saprl\" }) });\n components.push({ name: \"tcode\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tcode\" }) });\n components.push({ name: \"ucomm\", type: new basic_1.CharacterType(70, { qualifiedName: \"sy-ucomm\" }) });\n components.push({ name: \"cfwae\", type: new basic_1.CharacterType(5) });\n components.push({ name: \"chwae\", type: new basic_1.CharacterType(5) });\n components.push({ name: \"spono\", type: new basic_1.CharacterType(10, { qualifiedName: \"sy-spono\" }) });\n components.push({ name: \"sponr\", type: new basic_1.NumericType(10) });\n components.push({ name: \"waers\", type: new basic_1.CharacterType(5) });\n components.push({ name: \"cdate\", type: new basic_1.DateType() });\n components.push({ name: \"datum\", type: new basic_1.DateType() });\n components.push({ name: \"slset\", type: new basic_1.CharacterType(14, { qualifiedName: \"sy-slset\" }) });\n components.push({ name: \"subty\", type: new basic_1.HexType(1) });\n components.push({ name: \"subcs\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"group\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"ffile\", type: new basic_1.CharacterType(8) });\n components.push({ name: \"uzeit\", type: new basic_1.TimeType() });\n components.push({ name: \"dsnam\", type: new basic_1.CharacterType(8) });\n components.push({ name: \"tabid\", type: new basic_1.CharacterType(8) });\n components.push({ name: \"tfdsn\", type: new basic_1.CharacterType(8) });\n components.push({ name: \"uname\", type: new basic_1.CharacterType(12, { qualifiedName: \"sy-uname\" }) });\n components.push({ name: \"lstat\", type: new basic_1.CharacterType(16) });\n components.push({ name: \"abcde\", type: new basic_1.CharacterType(26, { qualifiedName: \"sy-abcde\" }) });\n components.push({ name: \"marky\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"sfnam\", type: new basic_1.CharacterType(30) });\n components.push({ name: \"tname\", type: new basic_1.CharacterType(30) });\n components.push({ name: \"msgli\", type: new basic_1.CharacterType(60, { qualifiedName: \"sy-msgli\" }) });\n components.push({ name: \"title\", type: new basic_1.CharacterType(70, { qualifiedName: \"sy-title\" }) });\n components.push({ name: \"entry\", type: new basic_1.CharacterType(72) });\n components.push({ name: \"lisel\", type: new basic_1.CharacterType(255, { qualifiedName: \"sy-lisel\" }) });\n components.push({ name: \"uline\", type: new basic_1.CharacterType(255, { qualifiedName: \"sy-uline\" }) });\n components.push({ name: \"xcode\", type: new basic_1.CharacterType(70) });\n components.push({ name: \"cprog\", type: new basic_1.CharacterType(40, { qualifiedName: \"sy-cprog\" }) });\n components.push({ name: \"xprog\", type: new basic_1.CharacterType(40) });\n components.push({ name: \"xform\", type: new basic_1.CharacterType(30) });\n components.push({ name: \"ldbpg\", type: new basic_1.CharacterType(40, { qualifiedName: \"sy-ldbpg\" }) });\n components.push({ name: \"tvar0\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar0\" }) });\n components.push({ name: \"tvar1\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar1\" }) });\n components.push({ name: \"tvar2\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar2\" }) });\n components.push({ name: \"tvar3\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar3\" }) });\n components.push({ name: \"tvar4\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar4\" }) });\n components.push({ name: \"tvar5\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar5\" }) });\n components.push({ name: \"tvar6\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar6\" }) });\n components.push({ name: \"tvar7\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar7\" }) });\n components.push({ name: \"tvar8\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar8\" }) });\n components.push({ name: \"tvar9\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-tvar9\" }) });\n components.push({ name: \"msgid\", type: new basic_1.CharacterType(20, { qualifiedName: \"sy-msgid\" }) });\n components.push({ name: \"msgty\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-msgty\" }) });\n components.push({ name: \"msgno\", type: new basic_1.NumericType(3, \"sy-msgno\") });\n components.push({ name: \"msgv1\", type: new basic_1.CharacterType(50, { qualifiedName: \"sy-msgv1\" }) });\n components.push({ name: \"msgv2\", type: new basic_1.CharacterType(50, { qualifiedName: \"sy-msgv2\" }) });\n components.push({ name: \"msgv3\", type: new basic_1.CharacterType(50, { qualifiedName: \"sy-msgv3\" }) });\n components.push({ name: \"msgv4\", type: new basic_1.CharacterType(50, { qualifiedName: \"sy-msgv4\" }) });\n components.push({ name: \"oncom\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"vline\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-vline\" }) });\n components.push({ name: \"winsl\", type: new basic_1.CharacterType(79) });\n components.push({ name: \"staco\", type: basic_1.IntegerType.get() });\n components.push({ name: \"staro\", type: basic_1.IntegerType.get() });\n components.push({ name: \"datar\", type: new basic_1.CharacterType(1, { qualifiedName: \"sy-datar\" }) });\n components.push({ name: \"host\", type: new basic_1.CharacterType(32, { qualifiedName: \"sy-host\" }) });\n components.push({ name: \"locdb\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"locop\", type: new basic_1.CharacterType(1) });\n components.push({ name: \"datlo\", type: new basic_1.DateType() });\n components.push({ name: \"timlo\", type: new basic_1.TimeType() });\n components.push({ name: \"zonlo\", type: new basic_1.CharacterType(6, { qualifiedName: \"sy-zonlo\" }) });\n const type = new basic_1.StructureType(components);\n const id1 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), \"sy\");\n const sy = new _typed_identifier_1.TypedIdentifier(id1, BuiltIn.filename, type, [\"read_only\" /* IdentifierMeta.ReadOnly */, \"built-in\" /* IdentifierMeta.BuiltIn */]);\n const id2 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), \"syst\");\n const syst = new _typed_identifier_1.TypedIdentifier(id2, BuiltIn.filename, type, [\"read_only\" /* IdentifierMeta.ReadOnly */, \"built-in\" /* IdentifierMeta.BuiltIn */]);\n // https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abennews-610-system.htm\n const id3 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), \"sy-repid\");\n const syrepid = new _typed_identifier_1.TypedIdentifier(id3, BuiltIn.filename, new basic_1.CharacterType(40, { qualifiedName: \"sy-repid\" }), [\"read_only\" /* IdentifierMeta.ReadOnly */, \"built-in\" /* IdentifierMeta.BuiltIn */]);\n return [sy, syst, syrepid];\n }\n buildConstant(name, type, value) {\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), name);\n if (type === undefined) {\n type = new basic_1.VoidType(name);\n }\n if (value === undefined) {\n value = \"'?'\";\n }\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, type, [\"read_only\" /* IdentifierMeta.ReadOnly */, \"built-in\" /* IdentifierMeta.BuiltIn */], value);\n }\n buildVariable(name) {\n const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), name);\n return new _typed_identifier_1.TypedIdentifier(id, BuiltIn.filename, new basic_1.VoidType(name), [\"built-in\" /* IdentifierMeta.BuiltIn */]);\n }\n}\nexports.BuiltIn = BuiltIn;\nBuiltIn.filename = \"_builtin.prog.abap\";\n// todo: \"pcre\" vs \"regex\", only one of these parameters are allowed\n// todo: \"pcre\", only possible from 755\nBuiltIn.methods = [\n {\n name: \"ABS\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"ACOS\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"ASIN\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"ATAN\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"BIT-SET\",\n mandatory: {\n \"val\": basic_1.IntegerType.get(),\n },\n return: new basic_1.XStringType(),\n version: version_1.Version.v702,\n },\n {\n name: \"BOOLC\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"BOOLX\",\n mandatory: {\n \"bool\": basic_1.CLikeType.get(),\n },\n optional: {\n \"bit\": basic_1.IntegerType.get(),\n },\n return: new basic_1.XStringType(),\n version: version_1.Version.v702,\n },\n {\n name: \"CEIL\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"CHAR_OFF\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n \"add\": basic_1.IntegerType.get(),\n },\n optional: {\n \"off\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"CHARLEN\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"CMAX\",\n mandatory: {\n \"val1\": basic_1.CLikeType.get(),\n \"val2\": basic_1.CLikeType.get(),\n },\n optional: {\n \"val3\": basic_1.CLikeType.get(),\n \"val4\": basic_1.CLikeType.get(),\n \"val5\": basic_1.CLikeType.get(),\n \"val6\": basic_1.CLikeType.get(),\n \"val7\": basic_1.CLikeType.get(),\n \"val9\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"CMIN\",\n mandatory: {\n \"val1\": basic_1.CLikeType.get(),\n \"val2\": basic_1.CLikeType.get(),\n },\n optional: {\n \"val3\": basic_1.CLikeType.get(),\n \"val4\": basic_1.CLikeType.get(),\n \"val5\": basic_1.CLikeType.get(),\n \"val6\": basic_1.CLikeType.get(),\n \"val7\": basic_1.CLikeType.get(),\n \"val9\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"CONCAT_LINES_OF\",\n mandatory: {\n \"table\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false, keyType: basic_1.TableKeyType.default }),\n },\n optional: {\n \"sep\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"CONDENSE\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"del\": basic_1.CLikeType.get(),\n \"from\": basic_1.CLikeType.get(),\n \"to\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"CONTAINS\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"start\": basic_1.CLikeType.get(),\n \"end\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: new basic_1.CharacterType(1),\n predicate: true,\n version: version_1.Version.v702,\n },\n {\n name: \"CONTAINS_ANY_NOT_OF\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"start\": basic_1.CLikeType.get(),\n \"end\": basic_1.CLikeType.get(),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n predicate: true,\n return: new basic_1.CharacterType(1), version: version_1.Version.v702,\n },\n {\n name: \"CONTAINS_ANY_OF\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"start\": basic_1.CLikeType.get(),\n \"end\": basic_1.CLikeType.get(),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: new basic_1.CharacterType(1),\n predicate: true,\n version: version_1.Version.v702,\n },\n {\n name: \"COS\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"COSH\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"COUNT\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"COUNT_ANY_NOT_OF\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"COUNT_ANY_OF\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"DBMAXLEN\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"DISTANCE\",\n mandatory: {\n \"val1\": basic_1.CLikeType.get(),\n \"val2\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"ESCAPE\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n \"format\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"EXP\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"FIND\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"FIND_ANY_NOT_OF\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"FIND_ANY_OF\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"FIND_END\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"FLOOR\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"FRAC\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"FROM_MIXED\",\n mandatory: {\n \"val\": basic_1.CLikeType.get()\n },\n optional: {\n \"case\": new basic_1.CharacterType(1),\n \"sep\": basic_1.IntegerType.get(),\n \"min\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"INSERT\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n \"sub\": basic_1.CLikeType.get(),\n },\n optional: {\n \"off\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"IPOW\",\n mandatory: {\n \"base\": new basic_1.FloatType(),\n \"exp\": new basic_1.FloatType(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v740sp02,\n },\n {\n name: \"LINE_EXISTS\",\n mandatory: {\n \"val\": new basic_1.AnyType(),\n },\n return: new basic_1.CharacterType(1),\n predicate: true,\n version: version_1.Version.v740sp02,\n },\n {\n name: \"LINE_INDEX\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v740sp02,\n },\n {\n name: \"LINES\",\n mandatory: {\n \"val\": new basic_1.TableType(new basic_1.AnyType(), { withHeader: false, keyType: basic_1.TableKeyType.default }),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"LOG\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"LOG10\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"MATCH\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n }, optional: {\n \"case\": new basic_1.CharacterType(1),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"MATCHES\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"case\": new basic_1.CharacterType(1),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n },\n return: new basic_1.CharacterType(1),\n predicate: true,\n version: version_1.Version.v702,\n },\n {\n name: \"NMAX\",\n mandatory: {\n \"val1\": basic_1.CLikeType.get(),\n \"val2\": basic_1.CLikeType.get(),\n },\n optional: {\n \"val3\": basic_1.CLikeType.get(),\n \"val4\": basic_1.CLikeType.get(),\n \"val5\": basic_1.CLikeType.get(),\n \"val6\": basic_1.CLikeType.get(),\n \"val7\": basic_1.CLikeType.get(),\n \"val8\": basic_1.CLikeType.get(),\n \"val9\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"NMIN\",\n mandatory: {\n \"val1\": basic_1.CLikeType.get(),\n \"val2\": basic_1.CLikeType.get(),\n },\n optional: {\n \"val3\": basic_1.CLikeType.get(),\n \"val4\": basic_1.CLikeType.get(),\n \"val5\": basic_1.CLikeType.get(),\n \"val6\": basic_1.CLikeType.get(),\n \"val7\": basic_1.CLikeType.get(),\n \"val8\": basic_1.CLikeType.get(),\n \"val9\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"NUMOFCHAR\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"REPEAT\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n \"occ\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"REPLACE\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n \"with\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"RESCALE\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n optional: {\n \"dec\": basic_1.IntegerType.get(),\n \"prec\": basic_1.IntegerType.get(),\n \"mode\": basic_1.IntegerType.get(),\n },\n return: new basic_1.FloatType(),\n version: version_1.Version.v702,\n },\n {\n name: \"REVERSE\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"ROUND\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n optional: {\n \"dec\": basic_1.IntegerType.get(),\n \"prec\": basic_1.IntegerType.get(),\n \"mode\": basic_1.IntegerType.get(),\n },\n return: basic_1.IntegerType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SEGMENT\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n \"index\": basic_1.IntegerType.get(),\n },\n optional: {\n \"sep\": basic_1.CLikeType.get(),\n \"space\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SHIFT_LEFT\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"places\": basic_1.IntegerType.get(),\n \"circular\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SHIFT_RIGHT\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"places\": basic_1.IntegerType.get(),\n \"circular\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SIGN\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"SIN\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"SINH\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"SQRT\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"STRLEN\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"SUBSTRING\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"off\": basic_1.IntegerType.get(),\n \"len\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SUBSTRING_AFTER\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SUBSTRING_BEFORE\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SUBSTRING_FROM\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"SUBSTRING_TO\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"sub\": basic_1.CLikeType.get(),\n \"regex\": basic_1.CLikeType.get(),\n \"pcre\": basic_1.CLikeType.get(),\n \"case\": new basic_1.CharacterType(1),\n \"len\": basic_1.IntegerType.get(),\n \"occ\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"TAN\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"TANH\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: new basic_1.FloatType(),\n },\n {\n name: \"TO_LOWER\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"TO_MIXED\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n optional: {\n \"case\": new basic_1.CharacterType(1),\n \"sep\": basic_1.CLikeType.get(),\n \"min\": basic_1.IntegerType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"TO_UPPER\",\n mandatory: { \"val\": basic_1.CLikeType.get() },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"TRANSLATE\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n \"from\": basic_1.CLikeType.get(),\n \"to\": basic_1.CLikeType.get(),\n },\n return: basic_1.StringType.get(),\n version: version_1.Version.v702,\n },\n {\n name: \"TRUNC\",\n mandatory: {\n \"val\": new basic_1.FloatType(),\n },\n return: basic_1.IntegerType.get(),\n },\n {\n name: \"UTCLONG_ADD\",\n mandatory: {\n \"val\": new basic_1.UTCLongType(),\n },\n optional: {\n \"days\": basic_1.IntegerType.get(),\n \"hour\": basic_1.IntegerType.get(),\n \"minutes\": basic_1.IntegerType.get(),\n \"seconds\": new basic_1.FloatType(),\n },\n return: new basic_1.UTCLongType(),\n version: version_1.Version.v754,\n },\n {\n name: \"UTCLONG_CURRENT\",\n return: new basic_1.UTCLongType(),\n version: version_1.Version.v754,\n },\n {\n name: \"UTCLONG_DIFF\",\n mandatory: {\n \"high\": new basic_1.UTCLongType(),\n \"low\": new basic_1.UTCLongType(),\n },\n return: new basic_1.FloatType(),\n version: version_1.Version.v754,\n },\n {\n name: \"XSDBOOL\",\n mandatory: {\n \"val\": basic_1.CLikeType.get(),\n },\n return: new basic_1.CharacterType(1),\n version: version_1.Version.v740sp08,\n },\n {\n name: \"XSTRLEN\",\n mandatory: {\n \"val\": new basic_1.XSequenceType(),\n },\n return: basic_1.IntegerType.get(),\n },\n];\n//# sourceMappingURL=_builtin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_current_scope.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/_current_scope.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CurrentScope = void 0;\nconst _builtin_1 = __webpack_require__(/*! ./_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst ddic_1 = __webpack_require__(/*! ../../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst spaghetti_scope_1 = __webpack_require__(/*! ./spaghetti_scope */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/spaghetti_scope.js\");\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst _scope_type_1 = __webpack_require__(/*! ./_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst _reference_1 = __webpack_require__(/*! ./_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst syntax_1 = __webpack_require__(/*! ./syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nclass CurrentScope {\n static buildDefault(reg, obj) {\n const s = new CurrentScope(reg, obj);\n s.push(_scope_type_1.ScopeType.BuiltIn, _scope_type_1.ScopeType.BuiltIn, new position_1.Position(1, 1), _builtin_1.BuiltIn.filename);\n this.addBuiltIn(s, reg.getConfig().getSyntaxSetttings().globalConstants);\n let name = _scope_type_1.ScopeType.Global;\n if (obj) {\n name = name + \"_\" + obj.getName();\n }\n s.push(_scope_type_1.ScopeType.Global, name, new position_1.Position(1, 1), name);\n return s;\n }\n static addBuiltIn(s, extras) {\n const b = new _builtin_1.BuiltIn();\n const builtin = b.get(extras);\n s.addList(builtin);\n for (const t of b.getTypes()) {\n s.addType(t);\n }\n }\n constructor(reg, obj) {\n this.current = undefined;\n this.parentObj = obj;\n this.reg = reg;\n }\n ///////////////////////////\n getVersion() {\n return this.reg.getConfig().getVersion();\n }\n getRegistry() {\n return this.reg;\n }\n addType(type) {\n if (type === undefined) {\n return;\n }\n this.addTypeNamed(type.getName(), type);\n }\n addTypeNamed(name, type) {\n if (type === undefined) {\n return;\n }\n if (this.current === undefined) {\n return;\n }\n const upper = name.toUpperCase();\n if (this.current.getData().types[upper] !== undefined) {\n throw new Error(`Type name \"${name}\" already defined`);\n }\n this.current.getData().types[upper] = type;\n }\n addExtraLikeType(type) {\n if (type === undefined) {\n return;\n }\n this.addExtraLikeTypeNamed(type.getName(), type);\n }\n addExtraLikeTypeNamed(name, type) {\n if (type === undefined) {\n return;\n }\n if (this.current === undefined) {\n return;\n }\n const upper = name.toUpperCase();\n if (this.current.getData().extraLikeTypes[upper] !== undefined) {\n throw new Error(`Type name \"${name}\" already defined`);\n }\n this.current.getData().extraLikeTypes[upper] = type;\n }\n addClassDefinition(c) {\n if (this.current === undefined) {\n return;\n }\n const name = c.getName().toUpperCase();\n if (this.current.getData().cdefs[name] !== undefined) {\n throw new Error(`Class \"${name}\" already defined`);\n }\n this.current.getData().cdefs[name] = c;\n }\n addFormDefinitions(f) {\n if (this.current === undefined) {\n return;\n }\n this.current.getData().forms.push(...f);\n }\n addInterfaceDefinition(i) {\n var _a;\n (_a = this.current) === null || _a === void 0 ? void 0 : _a.getData().idefs.push(i);\n }\n addNamedIdentifier(name, identifier) {\n if (this.current === undefined) {\n return;\n }\n const upper = name.toUpperCase();\n if (this.current.getData().vars[upper] !== undefined) {\n throw new Error(`Variable name \"${name}\" already defined`);\n }\n this.current.getData().vars[upper] = identifier;\n }\n addIdentifier(identifier) {\n if (identifier === undefined) {\n return;\n }\n this.addNamedIdentifier(identifier.getName(), identifier);\n }\n addDeferred(token) {\n var _a;\n if (token === undefined) {\n return;\n }\n (_a = this.current) === null || _a === void 0 ? void 0 : _a.getData().deferred.push(token);\n }\n addListPrefix(identifiers, prefix) {\n for (const id of identifiers) {\n this.addNamedIdentifier(prefix + id.getName(), id);\n }\n }\n addList(identifiers) {\n for (const id of identifiers) {\n this.addIdentifier(id);\n }\n }\n addReference(usage, referencing, type, filename, extra) {\n var _a, _b;\n if (usage === undefined || type === undefined) {\n return;\n }\n const position = new _identifier_1.Identifier(usage, filename);\n if (Array.isArray(type)) {\n for (const t of type) {\n (_a = this.current) === null || _a === void 0 ? void 0 : _a.getData().references.push({ position, resolved: referencing, referenceType: t, extra });\n }\n }\n else {\n (_b = this.current) === null || _b === void 0 ? void 0 : _b.getData().references.push({ position, resolved: referencing, referenceType: type, extra });\n }\n }\n addSQLConversion(fieldName, message, token) {\n var _a;\n (_a = this.current) === null || _a === void 0 ? void 0 : _a.getData().sqlConversion.push({ fieldName, message, token });\n }\n ///////////////////////////\n findFunctionModule(name) {\n if (name === undefined) {\n return undefined;\n }\n for (const fugr of this.reg.getObjectsByType(\"FUGR\")) {\n const func = fugr.getModule(name);\n if (func !== undefined) {\n return func;\n }\n }\n return undefined;\n }\n findObjectDefinition(name) {\n if (name === undefined) {\n return undefined;\n }\n const clas = this.findClassDefinition(name);\n if (clas) {\n return clas;\n }\n const intf = this.findInterfaceDefinition(name);\n if (intf) {\n return intf;\n }\n return undefined;\n }\n isBadiDef(name) {\n const upper = name.toUpperCase();\n for (const enhs of this.reg.getObjectsByType(\"ENHS\")) {\n for (const def of enhs.listBadiDefinitions()) {\n if (def.name.toUpperCase() === upper) {\n return true;\n }\n }\n }\n return false;\n }\n // todo, found + type can be removed from method output?\n existsObject(name) {\n var _a, _b, _c;\n if (name === undefined) {\n return { found: false };\n }\n let prefixRTTI = \"\";\n if (this.parentObj.getType() === \"PROG\") {\n prefixRTTI = \"\\\\PROGRAM=\" + this.parentObj.getName();\n }\n else if (this.parentObj.getType() === \"CLAS\") {\n prefixRTTI = \"\\\\CLASS-POOL=\" + this.parentObj.getName();\n }\n const findLocalClass = (_a = this.current) === null || _a === void 0 ? void 0 : _a.findClassDefinition(name);\n if (findLocalClass) {\n if (findLocalClass.isGlobal() === true) {\n prefixRTTI = \"\";\n }\n return { found: true, id: findLocalClass, type: _reference_1.ReferenceType.ObjectOrientedReference, ooType: \"CLAS\", RTTIName: prefixRTTI + \"\\\\CLASS=\" + findLocalClass.getName() };\n }\n const globalClas = this.reg.getObject(\"CLAS\", name);\n if (globalClas) {\n return { found: true, id: globalClas.getIdentifier(), type: _reference_1.ReferenceType.ObjectOrientedReference, ooType: \"CLAS\", RTTIName: \"\\\\CLASS=\" + globalClas.getName() };\n }\n const findLocalInterface = (_b = this.current) === null || _b === void 0 ? void 0 : _b.findInterfaceDefinition(name);\n if (findLocalInterface) {\n if (findLocalInterface.isGlobal() === true) {\n prefixRTTI = \"\";\n }\n return { found: true, id: findLocalInterface, type: _reference_1.ReferenceType.ObjectOrientedReference, ooType: \"INTF\", RTTIName: prefixRTTI + \"\\\\INTERFACE=\" + findLocalInterface.getName() };\n }\n const globalIntf = this.reg.getObject(\"INTF\", name);\n if (globalIntf) {\n return { found: true, id: globalIntf.getIdentifier(), type: _reference_1.ReferenceType.ObjectOrientedReference, ooType: \"INTF\", RTTIName: \"\\\\INTERFACE=\" + globalIntf.getName() };\n }\n const def = (_c = this.current) === null || _c === void 0 ? void 0 : _c.findDeferred(name);\n if (def !== undefined) {\n return { found: true, id: def };\n }\n return { found: false };\n }\n ///////////////////////////\n /** Lookup class in local and global scope */\n findClassDefinition(name) {\n var _a;\n if (name === undefined) {\n return undefined;\n }\n const clocal = (_a = this.current) === null || _a === void 0 ? void 0 : _a.findClassDefinition(name);\n if (clocal) {\n return clocal;\n }\n const cglobal = this.reg.getObject(\"CLAS\", name);\n if (cglobal) {\n return cglobal.getDefinition();\n }\n return undefined;\n }\n findTypePoolConstant(name) {\n var _a;\n if (name === undefined || name.includes(\"_\") === undefined) {\n return undefined;\n }\n const typePoolName = name.split(\"_\")[0];\n if (typePoolName.length <= 2 || typePoolName.length > 5) {\n return undefined;\n }\n const typePool = this.reg.getObject(\"TYPE\", typePoolName);\n if (typePool === undefined) {\n return undefined;\n }\n const spag = (_a = new syntax_1.SyntaxLogic(this.reg, typePool).run().spaghetti.getFirstChild()) === null || _a === void 0 ? void 0 : _a.getFirstChild();\n const found = spag === null || spag === void 0 ? void 0 : spag.findVariable(name);\n return found;\n }\n findTypePoolType(name) {\n var _a;\n if (name.includes(\"_\") === undefined) {\n return undefined;\n }\n const typePoolName = name.split(\"_\")[0];\n if (typePoolName.length <= 2 || typePoolName.length > 5) {\n return undefined;\n }\n if (new ddic_1.DDIC(this.reg).lookupNoVoid(name) !== undefined) {\n // this is tricky, it should not do recursion when parsing the type pool itself,\n // think about DTEL ABAP_ENCOD vs TYPE ABAP\n return undefined;\n }\n const typePool = this.reg.getObject(\"TYPE\", typePoolName);\n if (typePool === undefined) {\n return undefined;\n }\n const spag = (_a = new syntax_1.SyntaxLogic(this.reg, typePool).run().spaghetti.getFirstChild()) === null || _a === void 0 ? void 0 : _a.getFirstChild();\n const found = spag === null || spag === void 0 ? void 0 : spag.findType(name);\n return found;\n }\n /** Lookup interface in local and global scope */\n findInterfaceDefinition(name) {\n var _a;\n if (name === undefined) {\n return undefined;\n }\n const ilocal = (_a = this.current) === null || _a === void 0 ? void 0 : _a.findInterfaceDefinition(name);\n if (ilocal) {\n return ilocal;\n }\n const iglobal = this.reg.getObject(\"INTF\", name);\n if (iglobal) {\n return iglobal.getDefinition();\n }\n return undefined;\n }\n findFormDefinition(name) {\n var _a;\n return (_a = this.current) === null || _a === void 0 ? void 0 : _a.findFormDefinition(name);\n }\n findType(name) {\n var _a;\n if (name === undefined) {\n return undefined;\n }\n return (_a = this.current) === null || _a === void 0 ? void 0 : _a.findType(name);\n }\n findExtraLikeType(name) {\n var _a;\n if (name === undefined) {\n return undefined;\n }\n return (_a = this.current) === null || _a === void 0 ? void 0 : _a.findExtraLikeType(name);\n }\n findVariable(name) {\n var _a;\n if (name === undefined) {\n return undefined;\n }\n const found = (_a = this.current) === null || _a === void 0 ? void 0 : _a.findVariable(name);\n if (found) {\n return found;\n }\n return this.findTypePoolConstant(name);\n }\n ///////////////////////////\n getDDIC() {\n return new ddic_1.DDIC(this.reg);\n }\n getDDICReferences() {\n return this.reg.getDDICReferences();\n }\n getMSAGReferences() {\n return this.reg.getMSAGReferences();\n }\n getParentObj() {\n return this.parentObj;\n }\n getName() {\n if (this.current === undefined) {\n throw new Error(\"error, getName\");\n }\n return this.current.getIdentifier().sname;\n }\n getType() {\n if (this.current === undefined) {\n throw new Error(\"error, getType\");\n }\n return this.current.getIdentifier().stype;\n }\n push(stype, sname, start, filename) {\n const identifier = { stype, sname, start, filename, end: undefined };\n if (this.current === undefined) {\n // the top node\n this.current = new spaghetti_scope_1.SpaghettiScopeNode(identifier, undefined);\n }\n else {\n const parent = this.current;\n this.current = new spaghetti_scope_1.SpaghettiScopeNode(identifier, parent);\n parent.addChild(this.current);\n }\n }\n isOO() {\n let curr = this.current;\n while (curr !== undefined) {\n const stype = curr.getIdentifier().stype;\n if (stype === _scope_type_1.ScopeType.ClassDefinition\n || stype === _scope_type_1.ScopeType.ClassImplementation\n || stype === _scope_type_1.ScopeType.Interface) {\n return true;\n }\n curr = curr.getParent();\n }\n return false;\n }\n isTypePool() {\n var _a;\n return ((_a = this.current) === null || _a === void 0 ? void 0 : _a.getIdentifier().filename.endsWith(\".type.abap\")) === true || false;\n }\n setAllowHeaderUse(name) {\n // workaround for SELECT FOR ALL ENTRIES\n this.allowHeaderUse = name;\n }\n isAllowHeaderUse(name) {\n var _a;\n return name.toUpperCase() === ((_a = this.allowHeaderUse) === null || _a === void 0 ? void 0 : _a.toUpperCase());\n }\n pop(end) {\n this.allowHeaderUse = undefined;\n if (this.current === undefined) {\n throw new Error(\"something wrong, top scope popped\");\n }\n this.current.setEnd(end);\n const current = this.current;\n this.current = this.current.getParent();\n return new spaghetti_scope_1.SpaghettiScope(current);\n }\n}\nexports.CurrentScope = CurrentScope;\n//# sourceMappingURL=_current_scope.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/_current_scope.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ObjectOriented = void 0;\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\n// todo, think some of the public methods can be made private\nclass ObjectOriented {\n constructor(scope) {\n this.scope = scope;\n }\n fromInterfaceByName(name, ignore) {\n const idef = this.scope.findInterfaceDefinition(name);\n if (idef === undefined || ignore.includes(name.toUpperCase())) {\n return [];\n }\n const ret = [name.toUpperCase()];\n for (const t of idef.getTypeDefinitions().getAll()) {\n const n = name + \"~\" + t.type.getName();\n this.scope.addTypeNamed(n, t.type);\n }\n this.scope.addListPrefix(idef.getAttributes().getConstants(), name + \"~\");\n this.scope.addListPrefix(idef.getAttributes().getStatic(), name + \"~\");\n this.scope.addListPrefix(idef.getAttributes().getInstance(), name + \"~\");\n for (const i of idef.getImplementing()) {\n if (ignore.includes(i.name.toUpperCase())) {\n continue;\n }\n ret.push(...this.fromInterfaceByName(i.name, ignore));\n ignore.push(i.name.toUpperCase());\n ret.push(i.name.toUpperCase());\n }\n return ret;\n }\n addAliasedAttributes(classDefinition) {\n for (const alias of classDefinition.getAliases().getAll()) {\n const comp = alias.getComponent();\n const idef = this.scope.findInterfaceDefinition(comp.split(\"~\")[0]);\n if (idef) {\n const found = idef.getAttributes().findByName(comp.split(\"~\")[1]);\n if (found) {\n this.scope.addNamedIdentifier(alias.getName(), found);\n }\n }\n }\n const superName = classDefinition.getSuperClass();\n if (superName !== undefined) {\n const def = this.scope.findClassDefinition(superName);\n if (def) {\n this.addAliasedAttributes(def);\n }\n }\n }\n addAliasedTypes(aliases) {\n for (const alias of aliases.getAll()) {\n const comp = alias.getComponent();\n const idef = this.scope.findInterfaceDefinition(comp.split(\"~\")[0]);\n if (idef) {\n const found = idef.getTypeDefinitions().getByName(comp.split(\"~\")[1]);\n if (found) {\n this.scope.addTypeNamed(alias.getName(), found);\n }\n }\n }\n }\n findMethodInInterface(interfaceName, methodName) {\n const idef = this.scope.findInterfaceDefinition(interfaceName);\n if (idef) {\n const methods = idef.getMethodDefinitions().getAll();\n for (const method of methods) {\n if (method.getName().toUpperCase() === methodName.toUpperCase()) {\n return { method, def: idef };\n }\n }\n return this.findMethodViaAlias(methodName, idef);\n }\n return undefined;\n }\n findMethodViaAlias(methodName, def) {\n for (const a of def.getAliases().getAll()) {\n if (a.getName().toUpperCase() === methodName.toUpperCase()) {\n const comp = a.getComponent();\n const res = this.findMethodInInterface(comp.split(\"~\")[0], comp.split(\"~\")[1]);\n if (res) {\n return res;\n }\n }\n }\n return undefined;\n }\n findClassName(node) {\n if (!(node.get() instanceof Statements.ClassImplementation\n || node.get() instanceof Statements.ClassDefinition)) {\n throw new Error(\"findClassName, unexpected node type\");\n }\n const className = node.findFirstExpression(Expressions.ClassName);\n if (className === undefined) {\n throw new Error(\"findClassName, unexpected node type\");\n }\n return className.getFirstToken().getStr();\n }\n findInterfaces(cd) {\n var _a;\n const ret = [...cd.getImplementing()];\n for (const r of ret) {\n const nested = (_a = this.scope.findInterfaceDefinition(r.name)) === null || _a === void 0 ? void 0 : _a.getImplementing();\n if (nested) {\n ret.push(...nested);\n }\n }\n const sup = cd.getSuperClass();\n if (sup) {\n try {\n ret.push(...this.findInterfaces(this.findSuperDefinition(sup)));\n }\n catch (_b) {\n // ignore errors, they will show up as variable not found anyhow\n }\n }\n return ret;\n }\n searchEvent(def, name) {\n var _a;\n if (def === undefined || name === undefined) {\n return undefined;\n }\n const found = def.getEvents().find(e => e.getName().toUpperCase() === (name === null || name === void 0 ? void 0 : name.toUpperCase()));\n if (found) {\n return found;\n }\n for (const a of ((_a = def.getAliases()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\n if (a.getName().toUpperCase() === name.toUpperCase()) {\n const comp = a.getComponent();\n const res = this.searchEvent(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\n if (res) {\n return res;\n }\n }\n }\n const sup = def.getSuperClass();\n if (sup) {\n return this.searchEvent(this.findSuperDefinition(sup), name);\n }\n return undefined;\n }\n // search in via super class, interfaces and aliases\n searchAttributeName(def, name) {\n var _a;\n if (def === undefined || name === undefined) {\n return undefined;\n }\n const upper = name.toUpperCase();\n for (const a of def.getAttributes().getAll()) {\n if (a.getName().toUpperCase() === upper) {\n return a;\n }\n }\n for (const a of ((_a = def.getAliases()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\n if (a.getName().toUpperCase() === upper) {\n const comp = a.getComponent();\n const res = this.searchAttributeName(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\n if (res) {\n return res;\n }\n }\n }\n if (name.includes(\"~\")) {\n const interfaceName = upper.split(\"~\")[0];\n if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName)) {\n return this.searchAttributeName(this.scope.findInterfaceDefinition(interfaceName), name.split(\"~\")[1]);\n }\n }\n const sup = def.getSuperClass();\n if (sup) {\n return this.searchAttributeName(this.findSuperDefinition(sup), name);\n }\n return undefined;\n }\n // search in via super class, interfaces and aliases\n searchTypeName(def, name) {\n if (def === undefined || name === undefined) {\n return undefined;\n }\n const search = def.getTypeDefinitions().getByName(name);\n if (search) {\n return search;\n }\n if (name.includes(\"~\")) {\n const interfaceName = name.split(\"~\")[0];\n if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName.toUpperCase())) {\n return this.searchTypeName(this.scope.findInterfaceDefinition(interfaceName), name.split(\"~\")[1]);\n }\n }\n const sup = def.getSuperClass();\n if (sup) {\n return this.searchTypeName(this.findSuperDefinition(sup), name);\n }\n return undefined;\n }\n // search in via super class, interfaces and aliases\n searchConstantName(def, name) {\n if (def === undefined || name === undefined) {\n return undefined;\n }\n const upper = name.toUpperCase();\n for (const a of def.getAttributes().getConstants()) {\n if (a.getName().toUpperCase() === upper) {\n return a;\n }\n }\n for (const a of def.getAliases().getAll()) {\n if (a.getName().toUpperCase() === upper) {\n const comp = a.getComponent();\n const res = this.searchConstantName(this.scope.findObjectDefinition(comp.split(\"~\")[0]), comp.split(\"~\")[1]);\n if (res) {\n return res;\n }\n }\n }\n if (name.includes(\"~\")) {\n const interfaceName = upper.split(\"~\")[0];\n if (def.getImplementing().some((a) => a.name.toUpperCase() === interfaceName)) {\n return this.searchConstantName(this.scope.findInterfaceDefinition(interfaceName), name.split(\"~\")[1]);\n }\n }\n const sup = def.getSuperClass();\n if (sup) {\n return this.searchConstantName(this.findSuperDefinition(sup), name);\n }\n return undefined;\n }\n // search in via super class, interfaces and aliases\n searchMethodName(def, name) {\n if (def === undefined || name === undefined) {\n return { method: undefined, def: undefined };\n }\n const methodDefinition = this.findMethod(def, name);\n if (methodDefinition) {\n return { method: methodDefinition, def };\n }\n let interfaceName = undefined;\n if (name.includes(\"~\")) {\n interfaceName = name.split(\"~\")[0];\n if (interfaceName && this.findInterfaces(def).some(i => i.name.toUpperCase() === (interfaceName === null || interfaceName === void 0 ? void 0 : interfaceName.toUpperCase())) === false) {\n return { method: undefined, def: undefined };\n }\n }\n // todo, this is not completely correct? hmm, why? visibility?\n if (methodDefinition === undefined && interfaceName) {\n name = name.split(\"~\")[1];\n const found = this.findMethodInInterface(interfaceName, name);\n if (found) {\n return found;\n }\n }\n else if (methodDefinition === undefined) {\n const found = this.findMethodViaAlias(name, def);\n if (found) {\n return found;\n }\n }\n const sup = def.getSuperClass();\n if (methodDefinition === undefined && sup) {\n return this.searchMethodName(this.findSuperDefinition(sup), name);\n }\n return { method: undefined, def: undefined };\n }\n findMethod(def, methodName) {\n for (const method of def.getMethodDefinitions().getAll()) {\n if (method.getName().toUpperCase() === methodName.toUpperCase()) {\n if (method.isRedefinition()) {\n return this.findMethodInSuper(def, methodName);\n }\n else {\n return method;\n }\n }\n }\n return undefined;\n }\n findMethodInSuper(child, methodName) {\n let sup = child.getSuperClass();\n while (sup !== undefined) {\n const cdef = this.findSuperDefinition(sup);\n const found = this.findMethod(cdef, methodName);\n if (found) {\n return found;\n }\n sup = cdef.getSuperClass();\n }\n return undefined;\n }\n findSuperDefinition(name) {\n const csup = this.scope.findClassDefinition(name);\n if (csup === undefined) {\n throw new Error(\"Super class \\\"\" + name + \"\\\" not found or contains errors\");\n }\n return csup;\n }\n fromSuperClassesAndInterfaces(child) {\n const implemented = this.fromSuperClasses(child);\n this.fromInterfaces(child, implemented);\n }\n // returns list of interfaces implemented\n fromSuperClasses(child) {\n let sup = child.getSuperClass();\n const ignore = [];\n while (sup !== undefined) {\n const cdef = this.findSuperDefinition(sup);\n for (const a of cdef.getAttributes().getAll()) {\n if (a.getVisibility() !== visibility_1.Visibility.Private) {\n this.scope.addIdentifier(a);\n // todo, handle scope and instance vs static\n }\n }\n for (const c of cdef.getAttributes().getConstants()) {\n if (c.getVisibility() !== visibility_1.Visibility.Private) {\n this.scope.addIdentifier(c);\n }\n }\n for (const t of cdef.getTypeDefinitions().getAll()) {\n if (t.visibility !== visibility_1.Visibility.Private) {\n this.scope.addType(t.type);\n }\n }\n ignore.push(...this.fromInterfaces(cdef, ignore));\n sup = cdef.getSuperClass();\n }\n return ignore;\n }\n // returns list of interfaces implemented\n fromInterfaces(classDefinition, skip) {\n const ignore = [];\n for (const i of classDefinition.getImplementing()) {\n ignore.push(...this.fromInterfaceByName(i.name, ignore.concat(skip || [])));\n }\n return ignore;\n }\n}\nexports.ObjectOriented = ObjectOriented;\n//# sourceMappingURL=_object_oriented.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_procedural.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/_procedural.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Procedural = void 0;\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst types_1 = __webpack_require__(/*! ../types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst _current_scope_1 = __webpack_require__(/*! ./_current_scope */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_current_scope.js\");\nconst _scope_type_1 = __webpack_require__(/*! ./_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst objects_1 = __webpack_require__(/*! ../../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst ddic_1 = __webpack_require__(/*! ../../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ./_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst _reference_1 = __webpack_require__(/*! ./_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Procedural {\n constructor(reg, scope) {\n this.scope = scope;\n this.reg = reg;\n }\n addAllFormDefinitions(file, obj) {\n const structure = file.getStructure();\n if (structure) {\n const dummy = _current_scope_1.CurrentScope.buildDefault(this.reg, obj);\n for (const found of structure.findAllStructures(Structures.Form)) {\n this.scope.addFormDefinitions([new types_1.FormDefinition(found, file.getFilename(), dummy)]);\n }\n }\n const stru = file.getStructure();\n if (stru === undefined) {\n return;\n }\n const includes = stru.findAllStatements(Statements.Include);\n for (const node of includes) {\n const found = this.findInclude(node, obj);\n if (found) {\n this.addAllFormDefinitions(found, obj);\n }\n }\n }\n findInclude(node, obj) {\n // assumption: no cyclic includes, includes not found are reported by rule \"check_include\"\n // todo: how to make sure code is not duplicated here and in rule \"check_include\" / include graph?\n const expr = node.findFirstExpression(Expressions.IncludeName);\n if (expr === undefined) {\n return undefined;\n }\n const name = expr.getFirstToken().getStr();\n // look in the current function group\n if (obj instanceof objects_1.FunctionGroup) {\n const incl = obj.getInclude(name);\n if (incl !== undefined) {\n return incl;\n }\n }\n const prog = this.reg.getObject(\"PROG\", name);\n if (prog !== undefined) {\n return prog.getABAPFiles()[0];\n }\n // todo, this is slow, try determining the FUGR name from the include name\n for (const fugr of this.reg.getObjectsByType(\"FUGR\")) {\n if (fugr instanceof objects_1.FunctionGroup) {\n const found = fugr.getInclude(name);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n }\n findFunctionScope(obj, node, filename) {\n var _a, _b, _c, _d, _e;\n if (!(obj instanceof objects_1.FunctionGroup)) {\n throw new Error(\"findFunctionScope, expected function group input\");\n }\n const nameToken = node.findFirstExpression(Expressions.Field).getFirstToken();\n const name = nameToken.getStr();\n this.scope.push(_scope_type_1.ScopeType.FunctionModule, name, node.getFirstToken().getStart(), filename);\n const definition = obj.getModule(name);\n if (definition === undefined) {\n throw new Error(\"Function module definition \\\"\" + name + \"\\\" not found\");\n }\n const ddic = new ddic_1.DDIC(this.reg);\n for (const param of definition.getParameters()) {\n let found = undefined;\n if (param.type === undefined || param.type === \"\") {\n found = new basic_1.AnyType();\n }\n else if (param.type.includes(\"=>\")) {\n // then its a type from global INTF or CLAS\n const [clas, name] = param.type.split(\"=>\");\n const def = this.scope.findObjectDefinition(clas);\n if (def) {\n const type = def.getTypeDefinitions().getByName(name);\n if (type) {\n this.scope.addReference(nameToken, type, _reference_1.ReferenceType.TypeReference, filename);\n found = type.getType();\n }\n }\n }\n if (found === undefined) {\n found = ddic.lookup(param.type).type;\n }\n if (param.direction === types_1.FunctionModuleParameterDirection.tables) {\n if (found instanceof basic_1.TableType) {\n found = new basic_1.TableType(found.getRowType(), { withHeader: true, keyType: basic_1.TableKeyType.default });\n }\n else {\n found = new basic_1.TableType(found, { withHeader: true, keyType: basic_1.TableKeyType.default });\n }\n }\n if ((found instanceof basic_1.UnknownType || found instanceof basic_1.VoidType) && ((_a = param.type) === null || _a === void 0 ? void 0 : _a.includes(\"-\"))) {\n const [name, field] = param.type.split(\"-\");\n const f = ddic.lookupTableOrView(name).type;\n if (f && f instanceof basic_1.StructureType) {\n const c = f.getComponentByName(field);\n if (c) {\n found = c;\n }\n }\n if (found === undefined || found instanceof basic_1.UnknownType || found instanceof basic_1.VoidType) {\n const f = (_b = this.scope.findType(name)) === null || _b === void 0 ? void 0 : _b.getType();\n if (f && f instanceof basic_1.StructureType) {\n const c = f.getComponentByName(field);\n if (c) {\n found = c;\n }\n }\n }\n }\n else if ((found instanceof basic_1.UnknownType || found instanceof basic_1.VoidType) && ((_c = param.type) === null || _c === void 0 ? void 0 : _c.includes(\"=>\"))) {\n const [name, field] = param.type.split(\"=>\");\n const def = this.scope.findObjectDefinition(name);\n const c = new _object_oriented_1.ObjectOriented(this.scope).searchTypeName(def, field);\n if (c) {\n found = c.getType();\n }\n }\n if ((found instanceof basic_1.UnknownType || found instanceof basic_1.VoidType) && param.type) {\n const f = ddic.lookupBuiltinType(param.type);\n if (f) {\n found = f;\n }\n if (found === undefined || found instanceof basic_1.UnknownType || found instanceof basic_1.VoidType) {\n const f = (_d = this.scope.findType(param.type)) === null || _d === void 0 ? void 0 : _d.getType();\n if (f) {\n found = f;\n }\n }\n if (found === undefined || found instanceof basic_1.UnknownType || found instanceof basic_1.VoidType) {\n const f = (_e = this.scope.findTypePoolType(param.type)) === null || _e === void 0 ? void 0 : _e.getType();\n if (f) {\n found = f;\n }\n }\n }\n if (found instanceof basic_1.UnknownType && new ddic_1.DDIC(this.reg).inErrorNamespace(param.type) === false) {\n found = new basic_1.VoidType(param.type);\n }\n const type = new _typed_identifier_1.TypedIdentifier(nameToken, filename, found);\n this.scope.addNamedIdentifier(param.name, type);\n }\n }\n}\nexports.Procedural = Procedural;\n//# sourceMappingURL=_procedural.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/_procedural.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReferenceType = void 0;\nvar ReferenceType;\n(function (ReferenceType) {\n /** for classes and interface references */\n ReferenceType[\"ObjectOrientedReference\"] = \"Object\";\n ReferenceType[\"ObjectOrientedVoidReference\"] = \"Object (Void)\";\n ReferenceType[\"ObjectOrientedUnknownReference\"] = \"Object (Unknown)\";\n ReferenceType[\"TableReference\"] = \"Table\";\n ReferenceType[\"TableVoidReference\"] = \"Table (Void)\";\n ReferenceType[\"MethodReference\"] = \"Method\";\n ReferenceType[\"BuiltinMethodReference\"] = \"Builtin Method\";\n ReferenceType[\"MethodImplementationReference\"] = \"Method Implementation\";\n ReferenceType[\"TypeReference\"] = \"Type\";\n ReferenceType[\"BuiltinTypeReference\"] = \"Builtin Type\";\n ReferenceType[\"VoidType\"] = \"Type (Void)\";\n ReferenceType[\"InferredType\"] = \"Inferred Type\";\n ReferenceType[\"FormReference\"] = \"Form\";\n // FormVoidReference = \"Form (void)\",\n ReferenceType[\"DataReadReference\"] = \"Read From\";\n ReferenceType[\"DataWriteReference\"] = \"Write To\";\n})(ReferenceType || (exports.ReferenceType = ReferenceType = {}));\n//# sourceMappingURL=_reference.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ScopeType = void 0;\nvar ScopeType;\n(function (ScopeType) {\n ScopeType[\"BuiltIn\"] = \"_builtin\";\n ScopeType[\"Dummy\"] = \"_dummy\";\n ScopeType[\"Global\"] = \"_global\";\n ScopeType[\"Program\"] = \"_program\";\n ScopeType[\"TypePool\"] = \"_type_pool\";\n ScopeType[\"FunctionGroup\"] = \"_function_group\";\n ScopeType[\"ClassDefinition\"] = \"class_definition\";\n ScopeType[\"Interface\"] = \"interface\";\n ScopeType[\"ClassImplementation\"] = \"class_implementation\";\n ScopeType[\"Form\"] = \"form\";\n ScopeType[\"FunctionModule\"] = \"function\";\n ScopeType[\"Method\"] = \"method\";\n ScopeType[\"MethodInstance\"] = \"method_instance\";\n ScopeType[\"For\"] = \"for\";\n ScopeType[\"Let\"] = \"let\";\n ScopeType[\"OpenSQL\"] = \"open_sql\";\n})(ScopeType || (exports.ScopeType = ScopeType = {}));\n//# sourceMappingURL=_scope_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeUtils = void 0;\nconst types_1 = __webpack_require__(/*! ../types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst basic_1 = __webpack_require__(/*! ../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst cgeneric_type_1 = __webpack_require__(/*! ../types/basic/cgeneric_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/cgeneric_type.js\");\nclass TypeUtils {\n constructor(scope) {\n this.scope = scope;\n }\n isCharLikeStrict(type) {\n if (type === undefined) {\n return false;\n }\n else if (type instanceof basic_1.StructureType) {\n for (const c of type.getComponents()) {\n if (this.isCharLikeStrict(c.type) === false) {\n return false;\n }\n }\n return true;\n }\n else if (type instanceof basic_1.StringType\n || type instanceof basic_1.AnyType\n || type instanceof basic_1.CharacterType\n || type instanceof basic_1.SimpleType\n || type instanceof cgeneric_type_1.CGenericType\n || type instanceof basic_1.CLikeType\n || type instanceof basic_1.DateType\n || type instanceof basic_1.CSequenceType\n || type instanceof basic_1.NumericGenericType\n || type instanceof basic_1.NumericType\n || type instanceof basic_1.TimeType\n || type instanceof basic_1.UnknownType\n || type instanceof basic_1.VoidType) {\n return true;\n }\n return false;\n }\n isCharLike(type) {\n if (type === undefined) {\n return false;\n }\n else if (type instanceof basic_1.TableType && type.isWithHeader()) {\n return this.isCharLike(type.getRowType());\n }\n else if (type instanceof basic_1.StructureType) {\n for (const c of type.getComponents()) {\n if (this.isCharLike(c.type) === false) {\n return false;\n }\n }\n return true;\n }\n else if (type instanceof basic_1.StringType\n || type instanceof basic_1.CharacterType\n || type instanceof basic_1.VoidType\n || type instanceof basic_1.AnyType\n || type instanceof basic_1.UnknownType\n || type instanceof basic_1.NumericType\n || type instanceof basic_1.IntegerType\n || type instanceof basic_1.Integer8Type\n || type instanceof basic_1.SimpleType\n || type instanceof basic_1.FloatType\n || type instanceof basic_1.FloatingPointType\n || type instanceof basic_1.DecFloatType\n || type instanceof basic_1.DecFloat16Type\n || type instanceof basic_1.DecFloat34Type\n || type instanceof basic_1.NumericGenericType\n || type instanceof basic_1.CSequenceType\n || type instanceof cgeneric_type_1.CGenericType\n || type instanceof basic_1.DateType\n || type instanceof basic_1.CLikeType\n || type instanceof basic_1.PackedType\n || type instanceof basic_1.TimeType) {\n return true;\n }\n return false;\n }\n isHexLike(type) {\n if (type === undefined) {\n return false;\n }\n else if (type instanceof basic_1.StructureType) {\n for (const c of type.getComponents()) {\n if (this.isHexLike(c.type) === false) {\n return false;\n }\n }\n return true;\n }\n else if (type instanceof basic_1.XStringType\n || type instanceof basic_1.HexType\n || type instanceof basic_1.VoidType\n || type instanceof basic_1.XGenericType\n || type instanceof basic_1.XSequenceType\n || type instanceof basic_1.AnyType\n || type instanceof basic_1.UnknownType) {\n return true;\n }\n return false;\n }\n isOOAssignable(source, target) {\n let sid = source.getIdentifier();\n let tid = target.getIdentifier();\n const tname = tid.getName().toUpperCase();\n const sname = sid.getName().toUpperCase();\n if (tname === sname) {\n return true;\n }\n if (!(sid instanceof types_1.ClassDefinition || sid instanceof types_1.InterfaceDefinition)) {\n const found = this.scope.findObjectDefinition(sid.getName());\n if (found) {\n sid = found;\n }\n else {\n return false;\n }\n }\n if (!(tid instanceof types_1.ClassDefinition || tid instanceof types_1.InterfaceDefinition)) {\n const found = this.scope.findObjectDefinition(tid.getName());\n if (found) {\n tid = found;\n }\n else {\n return false;\n }\n }\n if (sid instanceof types_1.ClassDefinition && tid instanceof types_1.ClassDefinition) {\n if (sname === tname) {\n return true;\n }\n const slist = this.listAllSupers(sid);\n if (slist.indexOf(tname) >= 0) {\n return true;\n }\n }\n else if (sid instanceof types_1.ClassDefinition && tid instanceof types_1.InterfaceDefinition) {\n if (sid.getImplementing().some(i => i.name === tname)) {\n return true;\n }\n const slist = this.listAllInterfaces(sid);\n if (slist.indexOf(tname) >= 0) {\n return true;\n }\n }\n else if (sid instanceof types_1.InterfaceDefinition && tid instanceof types_1.InterfaceDefinition) {\n if (sname === tname) {\n return true;\n }\n if (sid.getImplementing().some(i => i.name === tname)) {\n return true;\n }\n const slist = this.listAllInterfaces(sid);\n if (slist.indexOf(tname) >= 0) {\n return true;\n }\n }\n return false;\n }\n listAllInterfaces(cdef) {\n var _a;\n const ret = new Set();\n const stack = [];\n // initialize\n cdef.getImplementing().forEach(i => stack.push(i.name));\n if (cdef instanceof types_1.ClassDefinition) {\n const supers = this.listAllSupers(cdef);\n for (const s of supers) {\n (_a = this.scope.findClassDefinition(s)) === null || _a === void 0 ? void 0 : _a.getImplementing().forEach(i => stack.push(i.name));\n }\n }\n // main loop\n while (stack.length > 0) {\n const intf = stack.pop().toUpperCase();\n ret.add(intf);\n const idef = this.scope.findInterfaceDefinition(intf);\n idef === null || idef === void 0 ? void 0 : idef.getImplementing().forEach(i => stack.push(i.name));\n }\n return Array.from(ret.values());\n }\n listAllSupers(cdef) {\n var _a, _b;\n const ret = [];\n let sup = cdef.getSuperClass();\n while (sup !== undefined) {\n ret.push(sup === null || sup === void 0 ? void 0 : sup.toUpperCase());\n sup = (_b = (_a = this.scope.findClassDefinition(sup)) === null || _a === void 0 ? void 0 : _a.getSuperClass()) === null || _b === void 0 ? void 0 : _b.toUpperCase();\n }\n return ret;\n }\n isCastable(_source, _target) {\n // todo\n return true;\n }\n structureContainsString(structure) {\n for (const c of structure.getComponents()) {\n if (c.type instanceof basic_1.StringType) {\n return true;\n }\n }\n return false;\n }\n structureContainsVoid(structure) {\n for (const c of structure.getComponents()) {\n if (c.type instanceof basic_1.VoidType) {\n return true;\n }\n }\n return false;\n }\n isAssignableStrict(source, target, calculated = false) {\n var _a, _b, _c, _d, _e, _f, _g;\n /*\n console.dir(source);\n console.dir(target);\n console.dir(calculated);\n */\n if (calculated && source instanceof basic_1.StringType && target instanceof basic_1.XStringType) {\n return false;\n }\n if (calculated) {\n return this.isAssignable(source, target);\n }\n if (source instanceof basic_1.CharacterType) {\n if (target instanceof basic_1.CharacterType) {\n if (((_a = source.getAbstractTypeData()) === null || _a === void 0 ? void 0 : _a.derivedFromConstant) === true) {\n return source.getLength() <= target.getLength();\n }\n return source.getLength() === target.getLength();\n }\n else if (target instanceof basic_1.IntegerType) {\n if (((_b = source.getAbstractTypeData()) === null || _b === void 0 ? void 0 : _b.derivedFromConstant) === true) {\n return true;\n }\n return false;\n }\n else if (target instanceof basic_1.StringType) {\n if (((_c = source.getAbstractTypeData()) === null || _c === void 0 ? void 0 : _c.derivedFromConstant) === true) {\n return true;\n }\n return false;\n }\n }\n else if (source instanceof basic_1.HexType) {\n if (target instanceof basic_1.HexType) {\n if (((_d = source.getAbstractTypeData()) === null || _d === void 0 ? void 0 : _d.derivedFromConstant) === true) {\n return source.getLength() <= target.getLength();\n }\n return source.getLength() === target.getLength();\n }\n else if (target instanceof basic_1.XStringType) {\n return false;\n }\n else if (target instanceof basic_1.IntegerType) {\n if (((_e = source.getAbstractTypeData()) === null || _e === void 0 ? void 0 : _e.derivedFromConstant) === true) {\n return true;\n }\n return false;\n }\n }\n else if (source instanceof basic_1.StringType) {\n if (target instanceof basic_1.StructureType && this.structureContainsString(target)) {\n return false;\n }\n else if (target instanceof basic_1.IntegerType) {\n if (((_f = source.getAbstractTypeData()) === null || _f === void 0 ? void 0 : _f.derivedFromConstant) === true) {\n return true;\n }\n return false;\n }\n else if (target instanceof cgeneric_type_1.CGenericType) {\n return false;\n }\n else if (target instanceof basic_1.XSequenceType || target instanceof basic_1.XStringType) {\n if (((_g = source.getAbstractTypeData()) === null || _g === void 0 ? void 0 : _g.derivedFromConstant) === true) {\n return true;\n }\n return false;\n }\n return true;\n }\n else if (source instanceof basic_1.StructureType && target instanceof basic_1.StructureType) {\n const sourceComponents = source.getComponents();\n const targetComponents = target.getComponents();\n if (sourceComponents.length !== targetComponents.length) {\n return false;\n }\n for (let i = 0; i < sourceComponents.length; i++) {\n if (this.isAssignableStrict(sourceComponents[i].type, targetComponents[i].type) === false) {\n return false;\n }\n }\n return true;\n }\n else if (source instanceof basic_1.Integer8Type) {\n if (target instanceof basic_1.IntegerType || target instanceof basic_1.StringType) {\n return false;\n }\n }\n else if (source instanceof basic_1.FloatType) {\n if (target instanceof basic_1.IntegerType) {\n return false;\n }\n }\n else if (source instanceof basic_1.ObjectReferenceType) {\n if (target instanceof basic_1.XSequenceType\n || target instanceof basic_1.IntegerType\n || target instanceof basic_1.XStringType) {\n return false;\n }\n }\n else if (source instanceof basic_1.XStringType) {\n if (target instanceof basic_1.CLikeType\n || target instanceof basic_1.IntegerType\n || target instanceof basic_1.ObjectReferenceType\n || target instanceof basic_1.HexType) {\n return false;\n }\n }\n return this.isAssignable(source, target);\n }\n isAssignable(source, target) {\n /*\n console.dir(source);\n console.dir(target);\n */\n if (target instanceof basic_1.TableType) {\n if (target.isWithHeader()) {\n return this.isAssignable(source, target.getRowType());\n }\n if (source instanceof basic_1.VoidType\n || source instanceof basic_1.AnyType\n || source instanceof basic_1.UnknownType) {\n return true;\n }\n else if (source instanceof basic_1.TableType) {\n const targetRowType = target.getRowType();\n const sourceRowType = source.getRowType();\n if (targetRowType instanceof basic_1.VoidType || targetRowType instanceof basic_1.AnyType || targetRowType instanceof basic_1.UnknownType) {\n return true;\n }\n else if (sourceRowType instanceof basic_1.VoidType || sourceRowType instanceof basic_1.AnyType || sourceRowType instanceof basic_1.UnknownType) {\n return true;\n }\n if (targetRowType instanceof basic_1.StructureType\n && this.structureContainsString(targetRowType)) {\n if (!(sourceRowType instanceof basic_1.StructureType)) {\n return false;\n }\n else if (!(this.structureContainsString(sourceRowType))\n && this.structureContainsVoid(sourceRowType) === false) {\n return false;\n }\n }\n else if (sourceRowType instanceof basic_1.StructureType\n && this.structureContainsString(sourceRowType)) {\n if (!(targetRowType instanceof basic_1.StructureType)) {\n return false;\n }\n else if (!(this.structureContainsString(targetRowType))\n && this.structureContainsVoid(targetRowType) === false) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n else if (target instanceof basic_1.ObjectReferenceType && source instanceof basic_1.ObjectReferenceType) {\n return this.isOOAssignable(source, target);\n }\n else if (target instanceof basic_1.ObjectReferenceType\n || target instanceof basic_1.GenericObjectReferenceType) {\n if (source instanceof basic_1.ObjectReferenceType\n || source instanceof basic_1.GenericObjectReferenceType\n || source instanceof basic_1.VoidType\n || source instanceof basic_1.AnyType\n || source instanceof basic_1.UnknownType) {\n return true;\n }\n return false;\n }\n else if (target instanceof basic_1.DataReference) {\n if (source instanceof basic_1.DataReference\n || source instanceof basic_1.VoidType\n || source instanceof basic_1.AnyType\n || source instanceof basic_1.UnknownType) {\n return true;\n }\n return false;\n }\n else if (target instanceof basic_1.StructureType) {\n if (source instanceof basic_1.TableType && source.isWithHeader()) {\n return this.isAssignable(source.getRowType(), target);\n }\n else if (source instanceof basic_1.VoidType\n || source instanceof basic_1.AnyType\n || source instanceof basic_1.UnknownType) {\n return true;\n }\n else if (source instanceof basic_1.StructureType) {\n if (this.structureContainsString(target) && !this.structureContainsString(source)) {\n return false;\n }\n return true;\n }\n else if (target.containsVoid() === true) {\n return true;\n }\n else if (source instanceof basic_1.IntegerType) {\n return false;\n }\n else if (this.isCharLike(target) && this.isCharLike(source)) {\n return true;\n }\n return false;\n }\n else if (target instanceof basic_1.IntegerType\n || target instanceof basic_1.CharacterType\n || target instanceof basic_1.StringType) {\n if (source instanceof basic_1.TableType && source.isWithHeader() === false) {\n return false;\n }\n else if (source instanceof basic_1.DataReference\n || source instanceof basic_1.ObjectReferenceType\n || source instanceof basic_1.GenericObjectReferenceType) {\n return false;\n }\n return true;\n }\n return true;\n }\n}\nexports.TypeUtils = TypeUtils;\n//# sourceMappingURL=_type_utils.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BasicTypes = void 0;\n/* eslint-disable default-case */\nconst _typed_identifier_1 = __webpack_require__(/*! ../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Types = __webpack_require__(/*! ../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _scope_type_1 = __webpack_require__(/*! ./_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ./_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst class_constant_1 = __webpack_require__(/*! ../types/class_constant */ \"./node_modules/@abaplint/core/build/src/abap/types/class_constant.js\");\nconst identifier_1 = __webpack_require__(/*! ../1_lexer/tokens/identifier */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js\");\nconst _reference_1 = __webpack_require__(/*! ./_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst basic_1 = __webpack_require__(/*! ../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst field_chain_1 = __webpack_require__(/*! ./expressions/field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst types_1 = __webpack_require__(/*! ../types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _builtin_1 = __webpack_require__(/*! ./_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass BasicTypes {\n constructor(filename, scope) {\n this.filename = filename;\n this.scope = scope;\n }\n lookupQualifiedName(name) {\n var _a;\n // argh, todo, rewrite this entire method, more argh, again argh\n if (name === undefined) {\n return undefined;\n }\n const found = this.scope.findType(name);\n if (found) {\n return found;\n }\n if (name.includes(\"=>\")) {\n const split = name.split(\"=>\");\n const ooName = split[0];\n const typeName = split[1];\n const oo = this.scope.findObjectDefinition(ooName);\n if (oo) {\n if (typeName.includes(\"-\")) {\n const split = typeName.split(\"-\");\n const subTypeName = split[0];\n const fieldName = split[1];\n const stru = oo.getTypeDefinitions().getByName(subTypeName);\n const struType = stru === null || stru === void 0 ? void 0 : stru.getType();\n if (stru && struType instanceof basic_1.StructureType) {\n let f = struType.getComponentByName(fieldName);\n if (split[2] && f instanceof basic_1.StructureType) {\n f = f.getComponentByName(split[2]);\n }\n if (f) {\n return new _typed_identifier_1.TypedIdentifier(stru.getToken(), stru.getFilename(), f);\n }\n }\n }\n else {\n const f = oo.getTypeDefinitions().getByName(typeName);\n if (f) {\n return f;\n }\n }\n }\n }\n else if (name.includes(\"-\")) {\n const split = name.split(\"-\");\n const typeName = split[0];\n const fieldName = split[1];\n const type = this.scope.findType(typeName);\n if (type) {\n const stru = type.getType();\n if (stru instanceof basic_1.StructureType) {\n let f = stru.getComponentByName(fieldName);\n if (split[2] && f instanceof basic_1.StructureType) {\n f = f.getComponentByName(split[2]);\n }\n if (f) {\n return new _typed_identifier_1.TypedIdentifier(type.getToken(), type.getFilename(), f);\n }\n }\n }\n }\n const lookup = this.scope.getDDIC().lookupNoVoid(name);\n const id = (_a = lookup === null || lookup === void 0 ? void 0 : lookup.object) === null || _a === void 0 ? void 0 : _a.getIdentifier();\n if (id && (lookup === null || lookup === void 0 ? void 0 : lookup.type)) {\n return new _typed_identifier_1.TypedIdentifier(id.getToken(), id.getFilename(), lookup.type);\n }\n const builtin = this.scope.getDDIC().lookupBuiltinType(name);\n if (builtin) {\n return new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(new position_1.Position(1, 1), name), _builtin_1.BuiltIn.filename, builtin);\n }\n const type = this.scope.findTypePoolType(name);\n if (type) {\n return type;\n }\n return undefined;\n }\n resolveLikeName(node, headerLogic = true) {\n var _a;\n if (node === undefined) {\n return undefined;\n }\n let chain = node.findFirstExpression(Expressions.FieldChain);\n if (chain === undefined) {\n chain = node.findFirstExpression(Expressions.TypeName);\n }\n if (chain === undefined) {\n chain = node.findFirstExpression(Expressions.FieldSub);\n }\n if (chain === undefined) {\n chain = node.findFirstExpression(Expressions.SimpleFieldChain);\n }\n if (chain === undefined) {\n throw new Error(\"resolveLikeName, chain undefined\");\n }\n const fullName = chain.concatTokens();\n let children = [...chain.getChildren()];\n if (children.length === 0) {\n return new Types.UnknownType(\"Type error, could not resolve \\\"\" + fullName + \"\\\", resolveLikeName1\");\n }\n let type = undefined;\n if (children[1] && (children[1].getFirstToken().getStr() === \"=>\" || children[1].getFirstToken().getStr() === \"->\")) {\n type = new field_chain_1.FieldChain().runSyntax(chain, this.scope, this.filename, _reference_1.ReferenceType.TypeReference);\n }\n else {\n const name = children.shift().getFirstToken().getStr();\n let found = this.scope.findVariable(name);\n const full = this.scope.findVariable(fullName); // workaround for eg \"sy-repid\"\n if (full) {\n children = [];\n found = full;\n }\n type = found === null || found === void 0 ? void 0 : found.getType();\n if (found === undefined) {\n found = this.scope.findExtraLikeType(name);\n type = found === null || found === void 0 ? void 0 : found.getType();\n }\n if (found) {\n this.scope.addReference(chain === null || chain === void 0 ? void 0 : chain.getFirstToken(), found, _reference_1.ReferenceType.TypeReference, this.filename);\n }\n if (type === undefined) {\n type = (_a = this.scope.getDDIC().lookupNoVoid(name)) === null || _a === void 0 ? void 0 : _a.type;\n }\n if (type === undefined && this.scope.isOO() === false && this.scope.getDDIC().inErrorNamespace(name) === false) {\n this.scope.addReference(chain.getChildren()[0].getFirstToken(), undefined, _reference_1.ReferenceType.VoidType, this.filename);\n return new Types.VoidType(name);\n }\n while (children.length > 0) {\n const child = children.shift();\n if (child.getFirstToken().getStr() === \"-\") {\n if (type instanceof Types.VoidType) {\n return type;\n }\n }\n else if (child.concatTokens() === \"[]\") {\n if (type instanceof Types.TableType) {\n type = new basic_1.TableType(type.getRowType(), { withHeader: false, keyType: Types.TableKeyType.default });\n }\n }\n else { // field name\n let sub = undefined;\n if (type instanceof Types.TableType) {\n type = type.getRowType();\n }\n if (type instanceof Types.StructureType) {\n sub = type.getComponentByName(child.getFirstToken().getStr());\n }\n if (sub === undefined) {\n return new Types.UnknownType(\"Type error, field not part of structure \" + fullName);\n }\n type = sub;\n }\n }\n if (type instanceof Types.VoidType) {\n return type;\n }\n else if (type instanceof basic_1.TableType\n && type.isWithHeader()\n && headerLogic === true) {\n type = type.getRowType();\n }\n else if (type instanceof Types.TableType\n && type.isWithHeader() === true\n && type.getRowType() instanceof Types.VoidType) {\n return type.getRowType();\n }\n }\n if (!type) {\n return new Types.UnknownType(\"Type error, could not resolve \\\"\" + fullName + \"\\\", resolveLikeName2\");\n }\n return type;\n }\n cloneType(type, qualifiedName) {\n // nested types(containing \"-\") will inherit the qualified names if possible\n // todo, this needs to be extended to all AbstractTypes instead of just CharacterType\n if (type instanceof basic_1.CharacterType\n && qualifiedName\n && qualifiedName.includes(\"-\") === false) {\n type = type.cloneType({ qualifiedName });\n }\n return type;\n }\n resolveTypeName(typeName, length, decimals, qualifiedName) {\n var _a;\n if (typeName === undefined) {\n return undefined;\n }\n const chain = this.resolveTypeChain(typeName);\n if (chain) {\n return this.cloneType(chain, qualifiedName);\n }\n const chainText = typeName.concatTokens().toUpperCase();\n const f = this.scope.getDDIC().lookupBuiltinType(chainText, length, decimals, qualifiedName);\n if (f !== undefined) {\n return f;\n }\n const typ = this.scope.findType(chainText);\n if (typ) {\n const token = typeName.getFirstToken();\n if (chainText.includes(\"~\")) {\n const name = chainText.split(\"~\")[0];\n const idef = this.scope.findInterfaceDefinition(name);\n if (idef) {\n this.scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, this.filename, { ooType: \"INTF\", ooName: name });\n }\n }\n this.scope.addReference(token, typ, _reference_1.ReferenceType.TypeReference, this.filename);\n return typ.getType();\n }\n const type = (_a = this.scope.findTypePoolType(chainText)) === null || _a === void 0 ? void 0 : _a.getType();\n if (type) {\n // this.scope.addReference(typeName.getFirstToken(), type, ReferenceType.TypeReference, this.filename);\n return type;\n }\n const ddic = this.scope.getDDIC().lookup(chainText);\n if (ddic) {\n this.scope.getDDICReferences().addUsing(this.scope.getParentObj(), { object: ddic.object, token: typeName.getFirstToken(), filename: this.filename });\n if (ddic.type instanceof _typed_identifier_1.TypedIdentifier) {\n this.scope.addReference(typeName.getFirstToken(), ddic.type, _reference_1.ReferenceType.TypeReference, this.filename);\n }\n else if (ddic.type instanceof basic_1.VoidType) {\n this.scope.addReference(typeName.getFirstToken(), undefined, _reference_1.ReferenceType.VoidType, this.filename);\n }\n return this.cloneType(ddic.type, qualifiedName);\n }\n return undefined;\n }\n simpleType(node, qualifiedNamePrefix) {\n let nameExpr = node.findFirstExpression(Expressions.NamespaceSimpleName);\n if (nameExpr === undefined) {\n nameExpr = node.findFirstExpression(Expressions.DefinitionName);\n }\n if (nameExpr === undefined) {\n return undefined;\n }\n let name = nameExpr.getFirstToken();\n if (nameExpr.countTokens() > 1) { // workaround for names with dashes\n name = new identifier_1.Identifier(name.getStart(), nameExpr.concatTokens());\n }\n let qualifiedName = undefined;\n if (node.get() instanceof Statements.Type) {\n if (this.scope.isTypePool() === true) {\n qualifiedName = name.getStr();\n }\n else {\n qualifiedName = (qualifiedNamePrefix || \"\") + name.getStr();\n if (this.scope.getType() === _scope_type_1.ScopeType.ClassDefinition\n || this.scope.getType() === _scope_type_1.ScopeType.Interface) {\n qualifiedName = this.scope.getName() + \"=>\" + qualifiedName;\n }\n }\n }\n else if (qualifiedNamePrefix) {\n qualifiedName = qualifiedNamePrefix + qualifiedName;\n }\n const found = this.parseType(node, qualifiedName);\n if (found) {\n return new _typed_identifier_1.TypedIdentifier(name, this.filename, found);\n }\n return undefined;\n }\n parseTable(node, name) {\n var _a, _b, _c, _d;\n const typename = node.findFirstExpression(Expressions.TypeName);\n const text = (_a = node.findFirstExpression(Expressions.TypeTable)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\n if (text === undefined) {\n return undefined;\n }\n let type = undefined;\n if (text.startsWith(\"TYPE STANDARD TABLE \")\n || text.startsWith(\"TYPE TABLE \")\n || text.startsWith(\"LIKE TABLE \")\n || text.startsWith(\"LIKE STANDARD TABLE \")) {\n type = basic_1.TableAccessType.standard;\n }\n else if (text.startsWith(\"TYPE SORTED TABLE \")\n || text.startsWith(\"LIKE SORTED TABLE \")) {\n type = basic_1.TableAccessType.sorted;\n }\n else if (text.startsWith(\"TYPE HASHED TABLE \")\n || text.startsWith(\"LIKE HASHED TABLE \")) {\n type = basic_1.TableAccessType.hashed;\n }\n const typeTableKeys = node.findAllExpressions(expressions_1.TypeTableKey);\n const firstKey = typeTableKeys[0];\n const isNamed = (firstKey === null || firstKey === void 0 ? void 0 : firstKey.findDirectExpression(expressions_1.Field)) !== undefined\n && ((_b = firstKey === null || firstKey === void 0 ? void 0 : firstKey.findDirectExpression(expressions_1.Field)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase()) !== \"PRIMARY_KEY\";\n const primaryKey = {\n name: \"primary_key\",\n type: type || basic_1.TableAccessType.standard,\n isUnique: isNamed ? false : (firstKey === null || firstKey === void 0 ? void 0 : firstKey.concatTokens().toUpperCase().includes(\"WITH UNIQUE \")) === true,\n keyFields: [],\n };\n let start = 1;\n if (isNamed === false) {\n for (const k of (firstKey === null || firstKey === void 0 ? void 0 : firstKey.findDirectExpressions(expressions_1.FieldSub)) || []) {\n primaryKey.keyFields.push(k.concatTokens().toUpperCase());\n }\n }\n else {\n start = 0;\n }\n const secondaryKeys = [];\n for (let i = start; i < typeTableKeys.length; i++) {\n const row = typeTableKeys[i];\n const name = (_c = row.findDirectExpression(expressions_1.Field)) === null || _c === void 0 ? void 0 : _c.concatTokens();\n if (name === undefined) {\n continue;\n }\n const secondary = {\n name: name,\n type: row.findDirectTokenByText(\"SORTED\") ? basic_1.TableAccessType.sorted : basic_1.TableAccessType.hashed,\n isUnique: (row === null || row === void 0 ? void 0 : row.concatTokens().toUpperCase().includes(\"WITH UNIQUE \")) === true,\n keyFields: [],\n };\n for (const k of (row === null || row === void 0 ? void 0 : row.findDirectExpressions(expressions_1.FieldSub)) || []) {\n secondary.keyFields.push(k.concatTokens().toUpperCase());\n }\n secondaryKeys.push(secondary);\n }\n let keyType = Types.TableKeyType.user;\n if (text.includes(\" EMPTY KEY\")) {\n keyType = Types.TableKeyType.empty;\n }\n else if (text.includes(\" DEFAULT KEY\")) {\n keyType = Types.TableKeyType.default;\n }\n const options = {\n withHeader: text.includes(\" WITH HEADER LINE\"),\n keyType: keyType,\n primaryKey: primaryKey,\n secondary: secondaryKeys,\n };\n let found = undefined;\n if (text.startsWith(\"TYPE TABLE OF REF TO \")\n || text.startsWith(\"TYPE STANDARD TABLE OF REF TO \")\n || text.startsWith(\"TYPE SORTED TABLE OF REF TO \")\n || text.startsWith(\"TYPE HASHED TABLE OF REF TO \")) {\n found = this.resolveTypeRef(typename);\n if (found) {\n return new Types.TableType(found, options, name);\n }\n }\n else if (text.startsWith(\"TYPE TABLE OF \")\n || text.startsWith(\"TYPE STANDARD TABLE OF \")\n || text.startsWith(\"TYPE SORTED TABLE OF \")\n || text.startsWith(\"TYPE HASHED TABLE OF \")) {\n found = this.resolveTypeName(typename);\n if (found) {\n return new Types.TableType(found, options, name);\n }\n }\n else if (text.startsWith(\"LIKE TABLE OF \")\n || text.startsWith(\"LIKE STANDARD TABLE OF \")\n || text.startsWith(\"LIKE SORTED TABLE OF \")\n || text.startsWith(\"LIKE HASHED TABLE OF \")) {\n found = this.resolveLikeName(node);\n if (found) {\n return new Types.TableType(found, options, name);\n }\n }\n else if (text === \"TYPE STANDARD TABLE\"\n || text === \"TYPE SORTED TABLE\"\n || text === \"TYPE HASHED TABLE\"\n || text === \"TYPE INDEX TABLE\"\n || text === \"TYPE ANY TABLE\") {\n return new Types.TableType(new Types.AnyType(), options);\n }\n else if (text.startsWith(\"TYPE RANGE OF \")) {\n const sub = node.findFirstExpression(Expressions.TypeName);\n found = this.resolveTypeName(sub);\n if (found === undefined) {\n return new Types.UnknownType(\"TYPE RANGE OF, could not resolve type\");\n }\n const structure = new Types.StructureType([\n { name: \"sign\", type: new Types.CharacterType(1) },\n { name: \"option\", type: new Types.CharacterType(2) },\n { name: \"low\", type: found },\n { name: \"high\", type: found },\n ]);\n options.primaryKey.type = basic_1.TableAccessType.standard;\n return new Types.TableType(structure, options, name);\n }\n else if (text.startsWith(\"LIKE RANGE OF \")) {\n const sub = node.findFirstExpression(Expressions.SimpleFieldChain);\n found = this.resolveLikeName(sub);\n if (found === undefined) {\n return new Types.UnknownType(\"LIKE RANGE OF, could not resolve type\");\n }\n const structure = new Types.StructureType([\n { name: \"sign\", type: new Types.CharacterType(1) },\n { name: \"option\", type: new Types.CharacterType(2) },\n { name: \"low\", type: found },\n { name: \"high\", type: found },\n ], name);\n options.primaryKey.type = basic_1.TableAccessType.standard;\n return new Types.TableType(structure, options);\n }\n else if (typename && (text.startsWith(\"TYPE TABLE FOR CREATE \")\n || text.startsWith(\"TYPE TABLE FOR UPDATE \"))) {\n const name = typename.concatTokens();\n const type = (_d = this.scope.getDDIC().lookupDDLS(name)) === null || _d === void 0 ? void 0 : _d.type;\n if (type) {\n return new Types.TableType(new basic_1.VoidType(\"RapTodo\"), options);\n }\n else if (this.scope.getDDIC().inErrorNamespace(name)) {\n return new Types.UnknownType(`DDLS ${name} not found`);\n }\n else {\n return new Types.VoidType(name);\n }\n }\n // fallback to old style syntax, OCCURS etc\n return this.parseType(node, name);\n }\n parseType(node, qualifiedName) {\n var _a, _b, _c, _d, _e, _f;\n const typeName = node.findFirstExpression(Expressions.TypeName);\n let text = (_a = node.findFirstExpression(Expressions.Type)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\n if (text === undefined) {\n text = (_b = node.findFirstExpression(Expressions.TypeParam)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase();\n }\n if (text === undefined) {\n text = (_c = node.findFirstExpression(Expressions.TypeTable)) === null || _c === void 0 ? void 0 : _c.concatTokens().toUpperCase();\n if ((text === null || text === void 0 ? void 0 : text.startsWith(\"TYPE\")) === false && (text === null || text === void 0 ? void 0 : text.startsWith(\"LIKE\")) === false) {\n text = \"TYPE\";\n }\n }\n if (text === undefined) {\n text = (_d = node.findFirstExpression(Expressions.FormParamType)) === null || _d === void 0 ? void 0 : _d.concatTokens().toUpperCase();\n }\n if (text === undefined\n && node.get() instanceof Statements.Parameter\n && node.findDirectTokenByText(\"LIKE\")) {\n text = \"LIKE \" + (typeName === null || typeName === void 0 ? void 0 : typeName.concatTokens());\n }\n if (text === undefined) {\n text = \"TYPE\";\n }\n let found = undefined;\n if (text.startsWith(\"LIKE LINE OF \")) {\n const name = (_e = node.findFirstExpression(Expressions.FieldChain)) === null || _e === void 0 ? void 0 : _e.concatTokens();\n let e = node.findFirstExpression(Expressions.Type);\n if (e === undefined) {\n e = node.findFirstExpression(Expressions.FormParamType);\n }\n if (e === undefined) {\n e = node.findFirstExpression(Expressions.FieldChain);\n }\n const type = this.resolveLikeName(e, false);\n if (type === undefined) {\n return new Types.UnknownType(\"Type error, could not resolve \\\"\" + name + \"\\\", parseType\");\n }\n else if (type instanceof Types.TableType) {\n return type.getRowType();\n }\n else if (type instanceof Types.VoidType) {\n return type;\n }\n else {\n return new Types.UnknownType(\"Type error, not a table type \" + name);\n }\n }\n else if (text.startsWith(\"LIKE REF TO \")) {\n const name = (_f = node.findFirstExpression(Expressions.FieldChain)) === null || _f === void 0 ? void 0 : _f.concatTokens();\n const type = this.resolveLikeName(node.findFirstExpression(Expressions.Type), false);\n if (type === undefined) {\n return new Types.UnknownType(\"Type error, could not resolve \\\"\" + name + \"\\\", parseType\");\n }\n return new Types.DataReference(type, name);\n }\n else if (text === \"TYPE STANDARD TABLE\"\n || text === \"TYPE SORTED TABLE\"\n || text === \"TYPE HASHED TABLE\"\n || text === \"TYPE INDEX TABLE\"\n || text === \"TYPE ANY TABLE\") {\n return new Types.TableType(new Types.AnyType(), { withHeader: node.concatTokens().toUpperCase().includes(\"WITH HEADER LINE\"), keyType: Types.TableKeyType.default });\n }\n else if (text.startsWith(\"LIKE \")) {\n let sub = node.findFirstExpression(Expressions.Type);\n if (sub === undefined) {\n sub = node.findFirstExpression(Expressions.FormParamType);\n }\n if (sub === undefined) {\n sub = node.findFirstExpression(Expressions.TypeParam);\n }\n if (sub === undefined) {\n sub = node.findFirstExpression(Expressions.FieldChain);\n }\n if (sub === undefined) {\n sub = node.findFirstExpression(Expressions.TypeName);\n }\n found = this.resolveLikeName(sub);\n if (found && this.isOccurs(node)) {\n found = new Types.TableType(found, { withHeader: text.includes(\"WITH HEADER LINE\"), keyType: Types.TableKeyType.default }, qualifiedName);\n }\n }\n else if (text.startsWith(\"TYPE LINE OF \")) {\n const sub = node.findFirstExpression(Expressions.TypeName);\n found = this.resolveTypeName(sub);\n if (found instanceof _typed_identifier_1.TypedIdentifier) {\n found = found.getType();\n }\n if (found instanceof Types.TableType) {\n return found.getRowType();\n }\n else if (found instanceof Types.VoidType) {\n return found;\n }\n else if (found instanceof Types.UnknownType) {\n return new Types.UnknownType(\"TYPE LINE OF, unknown type, \" + found.getError());\n }\n else {\n return new Types.UnknownType(\"TYPE LINE OF, unexpected type, \" + (found === null || found === void 0 ? void 0 : found.constructor.name));\n }\n }\n else if (text.startsWith(\"TYPE REF TO \")) {\n found = this.resolveTypeRef(typeName);\n }\n else if (text.startsWith(\"TYPE\")) {\n found = this.resolveTypeName(typeName, this.findLength(node), this.findDecimals(node), qualifiedName);\n const concat = node.concatTokens().toUpperCase();\n if (found && this.isOccurs(node)) {\n found = new Types.TableType(found, { withHeader: concat.includes(\" WITH HEADER LINE\"), keyType: Types.TableKeyType.default }, qualifiedName);\n }\n else if (found && concat.includes(\" WITH HEADER LINE\")) {\n if (found instanceof Types.VoidType) {\n found = new Types.TableType(found, { withHeader: true, keyType: Types.TableKeyType.default });\n }\n else if (!(found instanceof Types.TableType)) {\n throw new Error(\"WITH HEADER LINE can only be used with internal table\");\n }\n else {\n found = new Types.TableType(found.getRowType(), { withHeader: true, keyType: Types.TableKeyType.default });\n }\n }\n if (found === undefined && typeName === undefined) {\n let length = 1;\n const len = node.findDirectExpression(Expressions.ConstantFieldLength);\n if (len) {\n const int = len.findDirectExpression(Expressions.Integer);\n if (int) {\n length = parseInt(int.concatTokens(), 10);\n }\n }\n found = new Types.CharacterType(length, { qualifiedName: qualifiedName }); // fallback\n if (this.isOccurs(node)) {\n found = new Types.TableType(found, { withHeader: concat.includes(\" WITH HEADER LINE\"), keyType: Types.TableKeyType.default }, qualifiedName);\n }\n }\n }\n return found;\n }\n /////////////////////\n isOccurs(node) {\n var _a;\n if (node.findDirectTokenByText(\"OCCURS\")) {\n return true;\n }\n else if ((_a = node.findFirstExpression(Expressions.TypeTable)) === null || _a === void 0 ? void 0 : _a.findDirectTokenByText(\"OCCURS\")) {\n return true;\n }\n return false;\n }\n // todo, rewrite this method\n resolveTypeChain(expr) {\n var _a;\n const chainText = expr.concatTokens().toUpperCase();\n if (chainText.includes(\"-\")) {\n // workaround for stuff like \"sy-repid\"\n const built = this.scope.findType(chainText);\n if (built) {\n this.scope.addReference(expr.getFirstToken(), built, _reference_1.ReferenceType.TypeReference, this.filename);\n return built.getType();\n }\n }\n else if (chainText.includes(\"=>\") === false && chainText.includes(\"-\") === false) {\n return undefined;\n }\n let className;\n let rest = chainText;\n if (chainText.includes(\"=>\")) {\n const split = chainText.split(\"=>\");\n className = split[0];\n rest = split[1];\n }\n else if (chainText.includes(\"->\")) {\n const split = chainText.split(\"->\");\n className = split[0];\n rest = split[1];\n }\n const subs = rest.split(\"-\");\n let foundType = undefined;\n if (className && chainText.includes(\"=>\")) {\n const split = chainText.split(\"=>\");\n const className = split[0];\n // the prefix might be itself\n if ((this.scope.getType() === _scope_type_1.ScopeType.Interface\n || this.scope.getType() === _scope_type_1.ScopeType.ClassDefinition)\n && this.scope.getName().toUpperCase() === className.toUpperCase()) {\n const foundId = this.scope.findType(subs[0]);\n foundType = foundId === null || foundId === void 0 ? void 0 : foundId.getType();\n if (foundType === undefined) {\n return new Types.UnknownType(\"Could not resolve type \" + chainText);\n }\n this.scope.addReference(expr.getTokens()[2], foundId, _reference_1.ReferenceType.TypeReference, this.filename);\n }\n else {\n // lookup in local and global scope\n const obj = this.scope.findObjectDefinition(className);\n if (obj === undefined && this.scope.getDDIC().inErrorNamespace(className) === false) {\n this.scope.addReference(expr.getFirstToken(), undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, this.filename, { ooName: className.toUpperCase() });\n return new Types.VoidType(className);\n }\n else if (obj === undefined) {\n return new Types.UnknownType(\"Could not resolve top \" + className + \", resolveTypeChain\");\n }\n const type = obj instanceof types_1.ClassDefinition ? \"CLAS\" : \"INTF\";\n this.scope.addReference(expr.getFirstToken(), obj, _reference_1.ReferenceType.ObjectOrientedReference, this.filename, { ooType: type, ooName: className });\n const byName = new _object_oriented_1.ObjectOriented(this.scope).searchTypeName(obj, subs[0]);\n foundType = byName === null || byName === void 0 ? void 0 : byName.getType();\n if (byName === undefined || foundType === undefined) {\n return new Types.UnknownType(subs[0] + \" not found in class or interface\");\n }\n this.scope.addReference(expr.getTokens()[2], byName, _reference_1.ReferenceType.TypeReference, this.filename);\n }\n }\n else if (className && chainText.includes(\"->\")) {\n const varVar = this.scope.findVariable(className);\n const foo = varVar === null || varVar === void 0 ? void 0 : varVar.getType();\n if (foo instanceof basic_1.ObjectReferenceType) {\n const typeName = subs[0];\n let id = foo.getIdentifier();\n if (!(id instanceof types_1.ClassDefinition || id instanceof types_1.InterfaceDefinition)) {\n const found = this.scope.findObjectDefinition(foo.getIdentifierName());\n if (found) {\n id = found;\n }\n else {\n return new Types.UnknownType(foo.getIdentifierName() + \" not found in scope\");\n }\n }\n if (id instanceof types_1.ClassDefinition || id instanceof types_1.InterfaceDefinition) {\n const type = id instanceof types_1.ClassDefinition ? \"CLAS\" : \"INTF\";\n this.scope.addReference(expr.getFirstToken(), id, _reference_1.ReferenceType.ObjectOrientedReference, this.filename, { ooType: type, ooName: id.getName() });\n const byName = new _object_oriented_1.ObjectOriented(this.scope).searchTypeName(id, typeName);\n foundType = byName === null || byName === void 0 ? void 0 : byName.getType();\n if (byName === undefined || foundType === undefined) {\n return new Types.UnknownType(typeName + \" not found in class or interface\");\n }\n this.scope.addReference(expr.getTokens()[2], byName, _reference_1.ReferenceType.TypeReference, this.filename);\n }\n else {\n return new Types.UnknownType(\"Not an object reference, \" + className + \", \" + id.constructor.name);\n }\n }\n else if (foo === undefined) {\n return new Types.UnknownType(className + \" not found in scope\");\n }\n else {\n return new Types.UnknownType(\"Not an object reference, \" + className + \", \" + foo.constructor.name);\n }\n }\n else {\n const found = this.scope.findType(subs[0]);\n foundType = found === null || found === void 0 ? void 0 : found.getType();\n if (foundType === undefined) {\n const typePoolType = (_a = this.scope.findTypePoolType(subs[0])) === null || _a === void 0 ? void 0 : _a.getType();\n if (typePoolType) {\n // this.scope.addReference(typeName.getFirstToken(), typePoolType, ReferenceType.TypeReference, this.filename);\n foundType = typePoolType;\n }\n if (foundType === undefined) {\n const f = this.scope.getDDIC().lookupTableOrView(subs[0]);\n this.scope.getDDICReferences().addUsing(this.scope.getParentObj(), { object: f.object, filename: this.filename, token: expr.getFirstToken() });\n if (f.type instanceof _typed_identifier_1.TypedIdentifier) {\n foundType = f.type.getType();\n }\n else {\n foundType = f.type;\n }\n }\n }\n else {\n this.scope.addReference(expr.getFirstToken(), found, _reference_1.ReferenceType.TypeReference, this.filename);\n }\n if (foundType === undefined && this.scope.getDDIC().inErrorNamespace(subs[0]) === false) {\n this.scope.addReference(expr.getFirstToken(), undefined, _reference_1.ReferenceType.VoidType, this.filename);\n return new Types.VoidType(subs[0]);\n }\n else if (foundType instanceof Types.VoidType) {\n this.scope.addReference(expr.getFirstToken(), undefined, _reference_1.ReferenceType.VoidType, this.filename);\n return foundType;\n }\n else if (foundType === undefined) {\n return new Types.UnknownType(\"Unknown type \" + subs[0]);\n }\n }\n subs.shift();\n while (subs.length > 0) {\n if (foundType instanceof Types.UnknownType\n || foundType instanceof Types.VoidType) {\n return foundType;\n }\n else if (!(foundType instanceof Types.StructureType)) {\n return new Types.UnknownType(\"Not a structured type\");\n }\n foundType = foundType.getComponentByName(subs[0]);\n if (foundType === undefined) {\n return new Types.UnknownType(`Field \"${subs[0]}\" not found in structure`);\n }\n subs.shift();\n }\n return foundType;\n }\n resolveConstantValue(expr) {\n var _a, _b;\n // todo: rewrite this method\n if (!(expr.get() instanceof Expressions.SimpleFieldChain)) {\n throw new Error(\"resolveConstantValue\");\n }\n const firstNode = expr.getFirstChild();\n const firstToken = firstNode.getFirstToken();\n const firstName = firstToken.getStr();\n if (firstNode.get() instanceof Expressions.Field) {\n const found = this.scope.findVariable(firstName);\n const val = found === null || found === void 0 ? void 0 : found.getValue();\n if (typeof val === \"string\") {\n this.scope.addReference(firstToken, found, _reference_1.ReferenceType.DataReadReference, this.filename);\n return val;\n }\n else if ((found === null || found === void 0 ? void 0 : found.getType()) instanceof basic_1.StructureType) {\n this.scope.addReference(firstToken, found, _reference_1.ReferenceType.DataReadReference, this.filename);\n }\n return undefined;\n }\n else if (firstNode.get() instanceof Expressions.ClassName\n && firstName.toLowerCase() === this.scope.getName().toLowerCase()\n && (this.scope.getType() === _scope_type_1.ScopeType.Interface\n || this.scope.getType() === _scope_type_1.ScopeType.ClassDefinition)) {\n const children = expr.getChildren();\n const token = (_a = children[2]) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const found = this.scope.findVariable(token.getStr());\n const val = found === null || found === void 0 ? void 0 : found.getValue();\n if (typeof val === \"string\") {\n this.scope.addReference(firstToken, found, _reference_1.ReferenceType.DataReadReference, this.filename);\n return val;\n }\n return undefined;\n }\n else if (firstNode.get() instanceof Expressions.ClassName) {\n const obj = this.scope.findObjectDefinition(firstName);\n if (obj === undefined) {\n if (this.scope.existsObject(firstName).found === true) {\n return undefined;\n }\n else if (this.scope.getDDIC().inErrorNamespace(firstName) === true) {\n throw new Error(\"resolveConstantValue, not found: \" + firstName);\n }\n else {\n this.scope.addReference(firstNode.getFirstToken(), undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, this.filename, { ooName: firstName.toUpperCase() });\n return undefined;\n }\n }\n const children = expr.getChildren();\n const token = (_b = children[2]) === null || _b === void 0 ? void 0 : _b.getFirstToken();\n const attr = token.getStr();\n const c = new _object_oriented_1.ObjectOriented(this.scope).searchConstantName(obj, attr);\n if (c instanceof class_constant_1.ClassConstant) {\n this.scope.addReference(token, c, _reference_1.ReferenceType.DataReadReference, this.filename);\n const val = c.getValue();\n if (typeof val === \"string\") {\n return val;\n }\n else if (typeof val === \"object\" && children[4]) {\n const name = children[4].getFirstToken().getStr();\n if (val[name] !== undefined) {\n return val[name];\n }\n }\n return undefined;\n }\n throw new Error(\"resolveConstantValue, constant not found \" + attr);\n }\n else {\n throw new Error(\"resolveConstantValue, unexpected structure\");\n }\n }\n resolveTypeRef(chain) {\n var _a;\n if (chain === undefined) {\n return undefined;\n }\n const name = chain.getFirstToken().getStr();\n if (chain.getAllTokens().length === 1) {\n if (name.toUpperCase() === \"OBJECT\") {\n return new Types.GenericObjectReferenceType();\n }\n const search = this.scope.existsObject(name);\n if (search.found === true && search.id) {\n this.scope.addReference(chain.getFirstToken(), search.id, _reference_1.ReferenceType.ObjectOrientedReference, this.filename, { ooType: search.ooType, ooName: name });\n return new Types.ObjectReferenceType(search.id, { qualifiedName: name, RTTIName: search.RTTIName });\n }\n }\n const found = this.resolveTypeName(chain);\n if (found && !(found instanceof Types.UnknownType) && !(found instanceof Types.VoidType)) {\n return new Types.DataReference(found);\n }\n else if (chain.concatTokens().toUpperCase() === \"DATA\") {\n return new Types.DataReference(new Types.AnyType());\n }\n if (this.scope.isBadiDef(name) === true) {\n return new Types.VoidType(name);\n }\n if (((_a = this.scope.getDDIC()) === null || _a === void 0 ? void 0 : _a.inErrorNamespace(name)) === false) {\n // this.scope.addReference(chain.getFirstToken(), undefined, ReferenceType.VoidType, this.filename);\n return new Types.VoidType(name);\n }\n return new Types.UnknownType(\"REF, unable to resolve \" + name);\n }\n findValue(node) {\n const val = node.findFirstExpression(Expressions.Value);\n if (val === undefined) {\n throw new Error(\"VALUE missing in expression\");\n }\n if (val.concatTokens().toUpperCase() === \"VALUE IS INITIAL\") {\n return undefined;\n }\n const constant = val.findFirstExpression(Expressions.Constant);\n if (constant) {\n const conc = val.findFirstExpression(Expressions.ConcatenatedConstant);\n if (conc) {\n const first = conc.getFirstToken().getStr().substring(0, 1);\n let result = \"\";\n for (const token of conc.getAllTokens()) {\n if (token.getStr() === \"&\") {\n continue;\n }\n else {\n result += token.getStr().substring(1, token.getStr().length - 1);\n }\n }\n return first + result + first;\n }\n else {\n return constant.concatTokens();\n }\n }\n const chain = val.findFirstExpression(Expressions.SimpleFieldChain);\n if (chain) {\n return this.resolveConstantValue(chain);\n }\n throw new Error(\"findValue, unexpected\");\n }\n findDecimals(node) {\n var _a, _b;\n const dec = (_b = (_a = node.findDirectExpression(Expressions.Decimals)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Integer)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (dec) {\n return parseInt(dec, 10);\n }\n return undefined;\n }\n findLength(node) {\n const val = node.findFirstExpression(Expressions.Length);\n const flen = node.findFirstExpression(Expressions.ConstantFieldLength);\n if (val && flen) {\n throw new Error(\"Only specify length once\");\n }\n if (flen) {\n const cintExpr = flen.findFirstExpression(Expressions.Integer);\n if (cintExpr) {\n return this.parseInt(cintExpr.concatTokens());\n }\n const cchain = flen.findFirstExpression(Expressions.SimpleFieldChain);\n if (cchain) {\n const val = this.resolveConstantValue(cchain);\n return this.parseInt(val);\n }\n }\n if (val === undefined) {\n return 1;\n }\n const intExpr = val.findFirstExpression(Expressions.Integer);\n if (intExpr) {\n return this.parseInt(intExpr.concatTokens());\n }\n const strExpr = val.findFirstExpression(Expressions.ConstantString);\n if (strExpr) {\n return this.parseInt(strExpr.concatTokens());\n }\n const chain = val.findFirstExpression(Expressions.SimpleFieldChain);\n if (chain) {\n const val = this.resolveConstantValue(chain);\n return this.parseInt(val);\n }\n throw new Error(\"Unexpected, findLength\");\n }\n parseInt(text) {\n if (text === undefined) {\n return undefined;\n }\n if (text.startsWith(\"'\")) {\n text = text.split(\"'\")[1];\n }\n else if (text.startsWith(\"`\")) {\n text = text.split(\"`\")[1];\n }\n return parseInt(text, 10);\n }\n}\nexports.BasicTypes = BasicTypes;\n//# sourceMappingURL=basic_types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_chain.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_chain.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AttributeChain = void 0;\nconst void_type_1 = __webpack_require__(/*! ../../types/basic/void_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js\");\nconst object_reference_type_1 = __webpack_require__(/*! ../../types/basic/object_reference_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/object_reference_type.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst expressions_1 = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass AttributeChain {\n runSyntax(inputContext, node, scope, filename, type) {\n if (inputContext instanceof void_type_1.VoidType) {\n return inputContext;\n }\n else if (!(inputContext instanceof object_reference_type_1.ObjectReferenceType)) {\n throw new Error(\"Not an object reference(AttributeChain)\");\n }\n const children = node.getChildren().slice();\n const first = children[0];\n if (!(first.get() instanceof expressions_1.AttributeName)) {\n throw new Error(\"AttributeChain, unexpected first child\");\n }\n const def = scope.findObjectDefinition(inputContext.getIdentifierName());\n if (def === undefined) {\n throw new Error(\"Definition for \\\"\" + inputContext.getIdentifierName() + \"\\\" not found in scope(AttributeChain)\");\n }\n const nameToken = first.getFirstToken();\n const name = nameToken.getStr();\n const helper = new _object_oriented_1.ObjectOriented(scope);\n let context = helper.searchAttributeName(def, name);\n if (context === undefined) {\n context = helper.searchConstantName(def, name);\n }\n if (context === undefined) {\n throw new Error(\"Attribute or constant \\\"\" + name + \"\\\" not found in \\\"\" + def.getName() + \"\\\"\");\n }\n for (const t of type) {\n scope.addReference(nameToken, context, t, filename);\n }\n // todo, loop, handle ArrowOrDash, ComponentName, TableExpression\n return context.getType();\n }\n}\nexports.AttributeChain = AttributeChain;\n//# sourceMappingURL=attribute_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_name.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_name.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AttributeName = void 0;\nconst void_type_1 = __webpack_require__(/*! ../../types/basic/void_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js\");\nconst structure_type_1 = __webpack_require__(/*! ../../types/basic/structure_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/structure_type.js\");\nconst object_reference_type_1 = __webpack_require__(/*! ../../types/basic/object_reference_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/object_reference_type.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst data_reference_type_1 = __webpack_require__(/*! ../../types/basic/data_reference_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/data_reference_type.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass AttributeName {\n runSyntax(context, node, scope, filename, type) {\n if (context instanceof void_type_1.VoidType) {\n return context;\n }\n const helper = new _object_oriented_1.ObjectOriented(scope);\n let ret = undefined;\n if (context instanceof object_reference_type_1.ObjectReferenceType) {\n const def = scope.findObjectDefinition(context.getIdentifierName());\n if (def === undefined) {\n throw new Error(\"Definition for \\\"\" + context.getIdentifierName() + \"\\\" not found in scope(AttributeName)\");\n }\n const token = node.getFirstToken();\n const name = token.getStr();\n let found = helper.searchAttributeName(def, name);\n if (found === undefined) {\n found = helper.searchConstantName(def, name);\n }\n if (found === undefined) {\n throw new Error(\"Attribute or constant \\\"\" + name + \"\\\" not found in \\\"\" + def.getName() + \"\\\"\");\n }\n if (type) {\n scope.addReference(token, found, type, filename);\n }\n if (found && name.includes(\"~\")) {\n const idef = scope.findInterfaceDefinition(name.split(\"~\")[0]);\n if (idef) {\n scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n }\n ret = found.getType();\n }\n else if (context instanceof data_reference_type_1.DataReference) {\n const sub = context.getType();\n const name = node.getFirstToken().getStr();\n if (name === \"*\" || sub instanceof void_type_1.VoidType || sub instanceof basic_1.AnyType) {\n return sub;\n }\n if (!(sub instanceof structure_type_1.StructureType)) {\n throw new Error(\"Data reference not structured\");\n }\n ret = sub.getComponentByName(name);\n if (ret === undefined) {\n throw new Error(\"Component \\\"\" + name + \"\\\" not found in data reference structure\");\n }\n }\n else {\n throw new Error(\"Not an object reference, attribute name\");\n }\n return ret;\n }\n}\nexports.AttributeName = AttributeName;\n//# sourceMappingURL=attribute_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cast.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cast.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Cast = void 0;\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nclass Cast {\n runSyntax(node, scope, targetType, filename) {\n const sourceNode = node.findDirectExpression(Expressions.Source);\n if (sourceNode === undefined) {\n throw new Error(\"Cast, source node not found\");\n }\n const sourceType = new source_1.Source().runSyntax(sourceNode, scope, filename);\n let tt = undefined;\n const typeExpression = node.findDirectExpression(Expressions.TypeNameOrInfer);\n const typeName = typeExpression === null || typeExpression === void 0 ? void 0 : typeExpression.concatTokens();\n if (typeName === undefined) {\n throw new Error(\"Cast, child TypeNameOrInfer not found\");\n }\n else if (typeName === \"#\" && targetType) {\n tt = targetType;\n }\n else if (typeName === \"#\") {\n throw new Error(\"Cast, todo, infer type\");\n }\n if (tt === undefined && typeExpression) {\n const basic = new basic_types_1.BasicTypes(filename, scope);\n tt = basic.parseType(typeExpression);\n if (tt === undefined || tt instanceof basic_1.VoidType || tt instanceof basic_1.UnknownType) {\n const found = scope.findObjectDefinition(typeName);\n if (found) {\n tt = new basic_1.ObjectReferenceType(found, { qualifiedName: typeName });\n }\n }\n else {\n tt = new basic_1.DataReference(tt, typeName);\n }\n if (tt === undefined && scope.getDDIC().inErrorNamespace(typeName) === false) {\n tt = new basic_1.VoidType(typeName);\n }\n else if (typeName.toUpperCase() === \"OBJECT\") {\n return new basic_1.GenericObjectReferenceType();\n }\n else if (tt === undefined) {\n // todo, this should be an UnknownType instead?\n throw new Error(\"Type \\\"\" + typeName + \"\\\" not found in scope, Cast\");\n }\n }\n new source_1.Source().addIfInferred(node, scope, filename, tt);\n if (new _type_utils_1.TypeUtils(scope).isCastable(sourceType, tt) === false) {\n throw new Error(\"Cast, incompatible types\");\n }\n return tt;\n }\n}\nexports.Cast = Cast;\n//# sourceMappingURL=cast.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cast.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/compare.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/compare.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Compare = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst method_call_chain_1 = __webpack_require__(/*! ./method_call_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_chain.js\");\nconst source_field_symbol_1 = __webpack_require__(/*! ./source_field_symbol */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field_symbol.js\");\nclass Compare {\n runSyntax(node, scope, filename) {\n for (const t of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(t, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.SourceFieldSymbol)) {\n new source_field_symbol_1.SourceFieldSymbol().runSyntax(t, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.MethodCallChain)) {\n new method_call_chain_1.MethodCallChain().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Compare = Compare;\n//# sourceMappingURL=compare.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/compare.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_chain.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_chain.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentChain = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst void_type_1 = __webpack_require__(/*! ../../types/basic/void_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js\");\nconst structure_type_1 = __webpack_require__(/*! ../../types/basic/structure_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/structure_type.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst types_1 = __webpack_require__(/*! ../../types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nclass ComponentChain {\n runSyntax(context, node, scope, filename) {\n if (context === undefined) {\n return undefined;\n }\n const children = node.getChildren();\n for (let i = 0; i < children.length; i++) {\n if (context instanceof void_type_1.VoidType || context instanceof basic_1.UnknownType) {\n return context;\n }\n const child = children[i];\n if (i === 0 && child.concatTokens().toUpperCase() === \"TABLE_LINE\") {\n continue;\n }\n else if (child.get() instanceof Expressions.ArrowOrDash) {\n const concat = child.concatTokens();\n if (concat === \"-\") {\n if (!(context instanceof structure_type_1.StructureType)) {\n throw new Error(\"ComponentChain, not a structure\");\n }\n }\n else if (concat === \"=>\") {\n if (!(context instanceof basic_1.ObjectReferenceType)) {\n throw new Error(\"ComponentChain, not a reference\");\n }\n }\n else if (concat === \"->\") {\n if (!(context instanceof basic_1.ObjectReferenceType) && !(context instanceof basic_1.DataReference)) {\n throw new Error(\"ComponentChain, not a reference\");\n }\n }\n }\n else if (child.get() instanceof Expressions.ComponentName) {\n const name = child.concatTokens();\n if (context instanceof basic_1.DataReference) {\n context = context.getType();\n if (name === \"*\") {\n continue;\n }\n }\n if (context instanceof structure_type_1.StructureType) {\n context = context.getComponentByName(name);\n if (context === undefined) {\n throw new Error(\"Component \\\"\" + name + \"\\\" not found in structure\");\n }\n }\n else if (context instanceof basic_1.ObjectReferenceType) {\n const id = context.getIdentifier();\n const def = scope.findObjectDefinition(id.getName());\n if (def === undefined) {\n throw new Error(id.getName() + \" not found in scope\");\n }\n const helper = new _object_oriented_1.ObjectOriented(scope);\n const found = helper.searchAttributeName(def, name);\n context = found === null || found === void 0 ? void 0 : found.getType();\n if (context === undefined) {\n throw new Error(\"Attribute \\\"\" + name + \"\\\" not found\");\n }\n else {\n const extra = {\n ooName: id.getName(),\n ooType: id instanceof types_1.ClassDefinition ? \"CLAS\" : \"INTF\"\n };\n scope.addReference(child.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, filename, extra);\n }\n }\n else {\n throw new Error(\"ComponentChain, not a structure, \" + (context === null || context === void 0 ? void 0 : context.constructor.name));\n }\n }\n }\n return context;\n }\n}\nexports.ComponentChain = ComponentChain;\n//# sourceMappingURL=component_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCompare = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst component_chain_1 = __webpack_require__(/*! ./component_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_chain.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass ComponentCompare {\n runSyntax(node, scope, filename, type) {\n const chain = node.findDirectExpression(Expressions.ComponentChainSimple);\n if (chain === undefined) {\n throw new Error(\"ComponentCompare, chain not found\");\n }\n new component_chain_1.ComponentChain().runSyntax(type, chain, scope, filename);\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.ComponentCompare = ComponentCompare;\n//# sourceMappingURL=component_compare.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare_simple.js": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare_simple.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCompareSimple = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst component_chain_1 = __webpack_require__(/*! ./component_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_chain.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass ComponentCompareSimple {\n runSyntax(node, scope, filename, rowType) {\n let targetType = undefined;\n for (const c of node.getChildren()) {\n if (c instanceof nodes_1.ExpressionNode) {\n if (c.get() instanceof Expressions.ComponentChainSimple) {\n targetType = new component_chain_1.ComponentChain().runSyntax(rowType, c, scope, filename);\n }\n else if (c.get() instanceof Expressions.Dynamic) {\n targetType = undefined;\n }\n else if (c.get() instanceof Expressions.Source) {\n new source_1.Source().runSyntax(c, scope, filename, targetType);\n }\n else {\n throw \"ComponentCompareSimple, unexpected node\";\n }\n }\n }\n }\n}\nexports.ComponentCompareSimple = ComponentCompareSimple;\n//# sourceMappingURL=component_compare_simple.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare_simple.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_cond.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_cond.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentCond = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst component_compare_1 = __webpack_require__(/*! ./component_compare */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare.js\");\nclass ComponentCond {\n runSyntax(node, scope, filename, type) {\n for (const t of node.findDirectExpressions(Expressions.ComponentCondSub)) {\n const c = t.findDirectExpression(Expressions.ComponentCond);\n if (c) {\n new ComponentCond().runSyntax(c, scope, filename, type);\n }\n }\n for (const t of node.findDirectExpressions(Expressions.ComponentCompare)) {\n new component_compare_1.ComponentCompare().runSyntax(t, scope, filename, type);\n }\n }\n}\nexports.ComponentCond = ComponentCond;\n//# sourceMappingURL=component_cond.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_cond.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_name.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_name.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ComponentName = void 0;\nconst Basic = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass ComponentName {\n runSyntax(context, node) {\n if (context instanceof Basic.VoidType) {\n return context;\n }\n const name = node.getFirstToken().getStr();\n if (context instanceof Basic.StructureType) {\n const ret = context.getComponentByName(name);\n if (ret === undefined) {\n throw new Error(\"Component \\\"\" + name + \"\\\" not found in structure\");\n }\n return ret;\n }\n if (context instanceof Basic.TableType && context.isWithHeader() === true) {\n const rowType = context.getRowType();\n if (rowType instanceof Basic.VoidType) {\n return context;\n }\n else if (name.toUpperCase() === \"TABLE_LINE\") {\n return rowType;\n }\n else if (rowType instanceof Basic.StructureType) {\n const ret = rowType.getComponentByName(name);\n if (ret === undefined) {\n throw new Error(\"Component \\\"\" + name + \"\\\" not found in structure\");\n }\n return ret;\n }\n }\n throw new Error(\"Not a structure, ComponentName, \\\"\" + name + \"\\\"\");\n }\n}\nexports.ComponentName = ComponentName;\n//# sourceMappingURL=component_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Cond = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst compare_1 = __webpack_require__(/*! ./compare */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/compare.js\");\nclass Cond {\n runSyntax(node, scope, filename) {\n if (node === undefined) {\n throw new Error(\"Cond, expected node input\");\n }\n for (const t of node.findDirectExpressions(Expressions.CondSub)) {\n const c = t.findDirectExpression(Expressions.Cond);\n if (c) {\n new Cond().runSyntax(c, scope, filename);\n }\n }\n for (const t of node.findDirectExpressions(Expressions.Compare)) {\n new compare_1.Compare().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Cond = Cond;\n//# sourceMappingURL=cond.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond_body.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond_body.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CondBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst let_1 = __webpack_require__(/*! ./let */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js\");\nconst cond_1 = __webpack_require__(/*! ./cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nclass CondBody {\n runSyntax(node, scope, filename) {\n if (node === undefined) {\n return undefined;\n }\n let scoped = false;\n const l = node.findDirectExpression(Expressions.Let);\n if (l) {\n scoped = new let_1.Let().runSyntax(l, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(s, scope, filename);\n }\n let type = undefined;\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n if (type === undefined) {\n type = new source_1.Source().runSyntax(s, scope, filename);\n }\n else {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n if (scoped === true) {\n scope.pop(node.getLastToken().getEnd());\n }\n return type;\n }\n}\nexports.CondBody = CondBody;\n//# sourceMappingURL=cond_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/constant.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/constant.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Constant = void 0;\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Constant {\n runSyntax(node) {\n // todo: ConcatenatedConstant is not used?\n if (node.findDirectExpression(expressions_1.Integer)) {\n return basic_1.IntegerType.get();\n }\n else if (node.getFirstToken().getStr().startsWith(\"'\")) {\n let len = node.getFirstToken().getStr().length - 2;\n if (len <= 0) {\n len = 1;\n }\n return new basic_1.CharacterType(len, { derivedFromConstant: true });\n }\n else if (node.getFirstToken().getStr().startsWith(\"`\")) {\n return basic_1.StringType.get({ derivedFromConstant: true });\n }\n else {\n return basic_1.StringType.get();\n }\n }\n}\nexports.Constant = Constant;\n//# sourceMappingURL=constant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/constant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/conv_body.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/conv_body.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConvBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst let_1 = __webpack_require__(/*! ./let */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js\");\nclass ConvBody {\n runSyntax(node, scope, filename) {\n if (node === undefined) {\n return;\n }\n let scoped = false;\n const l = node.findDirectExpression(Expressions.Let);\n if (l) {\n scoped = new let_1.Let().runSyntax(l, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n if (scoped === true) {\n scope.pop(node.getLastToken().getEnd());\n }\n }\n}\nexports.ConvBody = ConvBody;\n//# sourceMappingURL=conv_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/conv_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/corresponding_body.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/corresponding_body.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CorrespondingBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass CorrespondingBody {\n runSyntax(node, scope, filename, targetType) {\n if (node === undefined) {\n return targetType;\n }\n let type = undefined;\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n if (type === undefined) {\n type = new source_1.Source().runSyntax(s, scope, filename);\n }\n else {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n return targetType ? targetType : type;\n }\n}\nexports.CorrespondingBody = CorrespondingBody;\n//# sourceMappingURL=corresponding_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/corresponding_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/data_definition.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/data_definition.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataDefinition = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst type_table_1 = __webpack_require__(/*! ./type_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table.js\");\nclass DataDefinition {\n runSyntax(node, scope, filename) {\n const tt = node.findFirstExpression(Expressions.TypeTable);\n if (tt) {\n return new type_table_1.TypeTable().runSyntax(node, scope, filename);\n }\n const valueNode = node.findFirstExpression(Expressions.Value);\n let value = undefined;\n if (valueNode) {\n value = new basic_types_1.BasicTypes(filename, scope).findValue(node);\n }\n const bfound = new basic_types_1.BasicTypes(filename, scope).simpleType(node);\n if (bfound) {\n if (value) {\n return new _typed_identifier_1.TypedIdentifier(bfound.getToken(), filename, bfound.getType(), bfound.getMeta(), value);\n }\n else {\n return bfound;\n }\n }\n const name = node.findFirstExpression(Expressions.DefinitionName);\n if (name) {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new basic_1.UnknownType(\"DataDefinition, fallback\"));\n }\n return undefined;\n }\n}\nexports.DataDefinition = DataDefinition;\n//# sourceMappingURL=data_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/data_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DatabaseTable = void 0;\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass DatabaseTable {\n runSyntax(node, scope, filename) {\n const token = node.getFirstToken();\n const name = token.getStr();\n if (name === \"(\") {\n // dynamic\n return undefined;\n }\n const found = scope.getDDIC().lookupTableOrView2(name);\n if (found === undefined && scope.getDDIC().inErrorNamespace(name) === true) {\n throw new Error(\"Database table or view \\\"\" + name + \"\\\" not found\");\n }\n else if (found === undefined) {\n scope.addReference(token, undefined, _reference_1.ReferenceType.TableVoidReference, filename);\n }\n else {\n scope.addReference(token, found.getIdentifier(), _reference_1.ReferenceType.TableReference, filename);\n scope.getDDICReferences().addUsing(scope.getParentObj(), { object: found, token: token, filename: filename });\n }\n return found;\n }\n}\nexports.DatabaseTable = DatabaseTable;\n//# sourceMappingURL=database_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/default.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/default.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Default = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Default {\n runSyntax(node, scope, filename) {\n const chain = node.findDirectExpression(Expressions.FieldChain);\n if (chain) {\n new field_chain_1.FieldChain().runSyntax(chain, scope, filename, _reference_1.ReferenceType.DataReadReference);\n }\n }\n}\nexports.Default = Default;\n//# sourceMappingURL=default.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/default.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dereference.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dereference.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Dereference = void 0;\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass Dereference {\n runSyntax(type) {\n if (type instanceof basic_1.VoidType\n || type instanceof basic_1.AnyType\n || type === undefined\n || type instanceof basic_1.UnknownType) {\n return type;\n }\n if (!(type instanceof basic_1.DataReference)) {\n throw new Error(\"Not a data reference, cannot be dereferenced\");\n }\n return type.getType();\n }\n}\nexports.Dereference = Dereference;\n//# sourceMappingURL=dereference.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dereference.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Dynamic = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Dynamic {\n runSyntax(node, scope, filename) {\n const chain = node.findDirectExpression(Expressions.FieldChain);\n if (chain) {\n new field_chain_1.FieldChain().runSyntax(chain, scope, filename, _reference_1.ReferenceType.DataReadReference);\n }\n }\n}\nexports.Dynamic = Dynamic;\n//# sourceMappingURL=dynamic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_assignment.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_assignment.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldAssignment = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass FieldAssignment {\n runSyntax(node, scope, filename, targetType) {\n const fieldSub = node.findDirectExpression(Expressions.FieldSub);\n if (fieldSub === undefined) {\n throw new Error(\"FieldAssignment, FieldSub node not found\");\n }\n const s = node.findDirectExpression(Expressions.Source);\n if (s === undefined) {\n throw new Error(\"FieldAssignment, Source node not found\");\n }\n let type = undefined;\n if (targetType instanceof basic_1.StructureType) {\n let context = targetType;\n for (const c of fieldSub.getChildren()) {\n const text = c.concatTokens();\n if (text !== \"-\" && context instanceof basic_1.StructureType) {\n context = context.getComponentByName(text);\n if (context === undefined && targetType.containsVoid() === false) {\n throw new Error(`field ${text} does not exist in structure`);\n }\n }\n }\n type = context;\n }\n else if (targetType instanceof basic_1.VoidType) {\n type = targetType;\n }\n new source_1.Source().runSyntax(s, scope, filename, type);\n }\n}\nexports.FieldAssignment = FieldAssignment;\n//# sourceMappingURL=field_assignment.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_assignment.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldChain = void 0;\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst component_name_1 = __webpack_require__(/*! ./component_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_name.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_name.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst field_offset_1 = __webpack_require__(/*! ./field_offset */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_offset.js\");\nconst field_length_1 = __webpack_require__(/*! ./field_length */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_length.js\");\nconst table_expression_1 = __webpack_require__(/*! ./table_expression */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/table_expression.js\");\nconst expressions_1 = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst dereference_1 = __webpack_require__(/*! ./dereference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dereference.js\");\nconst source_field_symbol_1 = __webpack_require__(/*! ./source_field_symbol */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field_symbol.js\");\nconst source_field_1 = __webpack_require__(/*! ./source_field */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field.js\");\nclass FieldChain {\n runSyntax(node, scope, filename, refType) {\n const concat = node.concatTokens();\n if (concat.includes(\"-\")) {\n // workaround for names with dashes\n const found = scope.findVariable(concat);\n if (found) {\n if (refType) {\n scope.addReference(node.getFirstToken(), found, refType, filename);\n }\n return found.getType();\n }\n }\n const children = node.getChildren().slice();\n let contextName = children[0].concatTokens();\n let context = this.findTop(children.shift(), scope, filename, refType);\n while (children.length > 0) {\n contextName += children[0].concatTokens();\n const current = children.shift();\n if (current === undefined) {\n break;\n }\n if (current.get() instanceof tokens_1.DashW) {\n throw new Error(\"Ending with dash\");\n }\n else if (current.get() instanceof tokens_1.Dash) {\n if (context instanceof basic_1.UnknownType) {\n throw new Error(\"Not a structure, type unknown, FieldChain\");\n }\n else if (!(context instanceof basic_1.StructureType)\n && !(context instanceof basic_1.TableType && context.isWithHeader())\n && !(context instanceof basic_1.VoidType)) {\n if (context instanceof basic_1.TableType && context.isWithHeader() === false) {\n if (scope.isAllowHeaderUse(contextName.substring(0, contextName.length - 1))) {\n // FOR ALL ENTRIES workaround\n context = context.getRowType();\n if (!(context instanceof basic_1.StructureType) && !(context instanceof basic_1.VoidType)) {\n context = new basic_1.StructureType([{ name: \"TABLE_LINE\", type: context }]);\n }\n }\n else {\n throw new Error(\"Table without header, cannot access fields, \" + contextName);\n }\n }\n else {\n throw new Error(\"Not a structure, FieldChain\");\n }\n }\n }\n else if (current.get() instanceof tokens_1.InstanceArrow) {\n if (!(context instanceof basic_1.ObjectReferenceType)\n && !(context instanceof basic_1.DataReference)\n && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Not an object reference, field chain\");\n }\n }\n else if (current.get() instanceof expressions_1.Dereference) {\n context = new dereference_1.Dereference().runSyntax(context);\n }\n else if (current.get() instanceof Expressions.ComponentName) {\n if (context instanceof basic_1.TableType && context.isWithHeader()) {\n context = context.getRowType();\n }\n context = new component_name_1.ComponentName().runSyntax(context, current);\n }\n else if (current instanceof nodes_1.ExpressionNode\n && current.get() instanceof Expressions.TableExpression) {\n if (!(context instanceof basic_1.TableType) && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Table expression, expected table\");\n }\n new table_expression_1.TableExpression().runSyntax(current, scope, filename);\n if (!(context instanceof basic_1.VoidType)) {\n context = context.getRowType();\n }\n }\n else if (current.get() instanceof Expressions.AttributeName) {\n context = new attribute_name_1.AttributeName().runSyntax(context, current, scope, filename, refType);\n }\n else if (current.get() instanceof Expressions.FieldOffset && current instanceof nodes_1.ExpressionNode) {\n const offset = new field_offset_1.FieldOffset().runSyntax(current, scope, filename);\n if (offset) {\n if (context instanceof basic_1.CharacterType) {\n context = new basic_1.CharacterType(context.getLength() - offset);\n }\n else if (context instanceof basic_1.HexType) {\n context = new basic_1.HexType(context.getLength() - offset);\n }\n }\n }\n else if (current.get() instanceof Expressions.FieldLength && current instanceof nodes_1.ExpressionNode) {\n const length = new field_length_1.FieldLength().runSyntax(current, scope, filename);\n if (length) {\n if (context instanceof basic_1.CharacterType) {\n context = new basic_1.CharacterType(length);\n }\n else if (context instanceof basic_1.HexType) {\n context = new basic_1.HexType(length);\n }\n }\n }\n }\n return context;\n }\n ////////////////\n findTop(node, scope, filename, type) {\n if (node === undefined) {\n return undefined;\n }\n if (node instanceof nodes_1.ExpressionNode\n && node.get() instanceof Expressions.SourceFieldSymbol) {\n return new source_field_symbol_1.SourceFieldSymbol().runSyntax(node, scope, filename);\n }\n else if (node instanceof nodes_1.ExpressionNode\n && node.get() instanceof Expressions.SourceField) {\n return new source_field_1.SourceField().runSyntax(node, scope, filename, type);\n }\n else if (node.get() instanceof Expressions.ClassName) {\n const classTok = node.getFirstToken();\n const classNam = classTok.getStr();\n if (classNam.toUpperCase() === \"OBJECT\") {\n return new basic_1.GenericObjectReferenceType();\n }\n const found = scope.existsObject(classNam);\n if (found.found === true && found.id) {\n scope.addReference(classTok, found.id, found.type, filename);\n return new basic_1.ObjectReferenceType(found.id);\n }\n else if (scope.getDDIC().inErrorNamespace(classNam) === false) {\n scope.addReference(classTok, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, { ooName: classNam.toUpperCase() });\n return new basic_1.VoidType(classNam);\n }\n else {\n throw new Error(\"Unknown class \" + classNam);\n }\n }\n return undefined;\n }\n}\nexports.FieldChain = FieldChain;\n//# sourceMappingURL=field_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_length.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_length.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldLength = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nclass FieldLength {\n runSyntax(node, scope, filename) {\n const field = node.findDirectExpression(Expressions.SimpleFieldChain2);\n if (field) {\n new field_chain_1.FieldChain().runSyntax(field, scope, filename, _reference_1.ReferenceType.DataReadReference);\n return undefined;\n }\n else {\n const children = node.getChildren();\n const num = children[children.length - 2];\n if (num.getLastToken().getStr() === \"*\") {\n return undefined;\n }\n return parseInt(num.getLastToken().getStr(), 10);\n }\n }\n}\nexports.FieldLength = FieldLength;\n//# sourceMappingURL=field_length.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_length.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_offset.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_offset.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldOffset = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nclass FieldOffset {\n runSyntax(node, scope, filename) {\n const field = node.findDirectExpression(Expressions.SimpleFieldChain2);\n if (field) {\n new field_chain_1.FieldChain().runSyntax(field, scope, filename, _reference_1.ReferenceType.DataReadReference);\n return undefined;\n }\n else {\n return parseInt(node.getLastToken().getStr(), 10);\n }\n }\n}\nexports.FieldOffset = FieldOffset;\n//# sourceMappingURL=field_offset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_offset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/filter_body.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/filter_body.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FilterBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass FilterBody {\n runSyntax(node, scope, filename, targetType) {\n if (node === undefined) {\n return targetType;\n }\n let type = undefined;\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n if (type === undefined) {\n type = new source_1.Source().runSyntax(s, scope, filename);\n }\n else {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n return type ? type : targetType;\n }\n}\nexports.FilterBody = FilterBody;\n//# sourceMappingURL=filter_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/filter_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/for.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/for.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.For = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_field_definition_1 = __webpack_require__(/*! ./inline_field_definition */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_field_definition.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst inline_loop_definition_1 = __webpack_require__(/*! ./inline_loop_definition */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_loop_definition.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst component_cond_1 = __webpack_require__(/*! ./component_cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_cond.js\");\nconst cond_1 = __webpack_require__(/*! ./cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst let_1 = __webpack_require__(/*! ./let */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js\");\nclass For {\n runSyntax(node, scope, filename) {\n var _a;\n let scoped = false;\n const inlineLoop = node.findDirectExpressions(Expressions.InlineLoopDefinition);\n const inlineField = node.findDirectExpressions(Expressions.InlineFieldDefinition);\n const groupsToken = (_a = node.findExpressionAfterToken(\"GROUPS\")) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const lett = node.findDirectExpression(Expressions.Let);\n const addScope = inlineLoop.length > 0\n || inlineField.length > 0\n || lett !== undefined\n || groupsToken !== undefined;\n if (addScope) {\n // this scope is popped in parent expressions\n scope.push(_scope_type_1.ScopeType.For, \"FOR\", node.getFirstToken().getStart(), filename);\n scoped = true;\n }\n for (const s of inlineLoop) {\n new inline_loop_definition_1.InlineLoopDefinition().runSyntax(s, scope, filename);\n }\n for (const f of inlineField) {\n new inline_field_definition_1.InlineFieldDefinition().runSyntax(f, scope, filename);\n }\n if (groupsToken !== undefined) {\n const type = new basic_1.VoidType(\"todoGroupBy\");\n const identifier = new _typed_identifier_1.TypedIdentifier(groupsToken, filename, type, [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(groupsToken, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.ComponentCond)) {\n new component_cond_1.ComponentCond().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(s, scope, filename);\n }\n if (lett) {\n new let_1.Let().runSyntax(lett, scope, filename, true);\n }\n return scoped;\n }\n}\nexports.For = For;\n//# sourceMappingURL=for.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/for.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/form_param.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/form_param.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormParam = void 0;\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nclass FormParam {\n runSyntax(node, scope, filename) {\n var _a, _b, _c;\n const nameToken = (_a = node.findFirstExpression(expressions_1.FormParamName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (node.findDirectTokenByText(\"STRUCTURE\") && nameToken) {\n // STRUCTURES typing\n const typeName = (_b = node.findDirectExpression(expressions_1.SimpleFieldChain)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr();\n let type = undefined;\n if (typeName) {\n type = (_c = scope.findType(typeName)) === null || _c === void 0 ? void 0 : _c.getType();\n if (type === undefined) {\n type = scope.getDDIC().lookupTableOrView(typeName).type;\n }\n }\n else {\n type = new basic_1.UnknownType(\"todo, FORM STRUCTURES typing\");\n }\n return new _typed_identifier_1.TypedIdentifier(nameToken, filename, type, [\"form_parameter\" /* IdentifierMeta.FormParameter */]);\n }\n if (node.getChildren().length === 1 && nameToken) {\n // untyped FORM parameter\n return new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.AnyType(), [\"form_parameter\" /* IdentifierMeta.FormParameter */]);\n }\n const bfound = new basic_types_1.BasicTypes(filename, scope).parseType(node);\n if (nameToken && bfound) {\n return new _typed_identifier_1.TypedIdentifier(nameToken, filename, bfound, [\"form_parameter\" /* IdentifierMeta.FormParameter */]);\n }\n if (nameToken) {\n return new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.UnknownType(\"FormParam, todo\"), [\"form_parameter\" /* IdentifierMeta.FormParameter */]);\n }\n throw new Error(\"FormParam, unexpected node\");\n }\n}\nexports.FormParam = FormParam;\n//# sourceMappingURL=form_param.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/form_param.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FSTarget = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_fs_1 = __webpack_require__(/*! ./inline_fs */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_fs.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass FSTarget {\n runSyntax(node, scope, filename, type) {\n const inlinefs = node === null || node === void 0 ? void 0 : node.findDirectExpression(Expressions.InlineFS);\n if (inlinefs) {\n new inline_fs_1.InlineFS().runSyntax(inlinefs, scope, filename, type);\n }\n const target = node === null || node === void 0 ? void 0 : node.findDirectExpression(Expressions.TargetFieldSymbol);\n if (target) {\n const token = target.getFirstToken();\n const found = scope.findVariable(token.getStr());\n if (found === undefined) {\n throw new Error(`\"${token.getStr()}\" not found, FSTarget`);\n }\n scope.addReference(token, found, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n }\n}\nexports.FSTarget = FSTarget;\n//# sourceMappingURL=fstarget.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineData = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass InlineData {\n runSyntax(node, scope, filename, type) {\n var _a;\n const token = (_a = node.findFirstExpression(Expressions.TargetField)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (token && type) {\n const identifier = new _typed_identifier_1.TypedIdentifier(token, filename, type, [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n else if (token) {\n const message = \"InlineData, could not determine type for \\\"\" + token.getStr() + \"\\\"\";\n const identifier = new _typed_identifier_1.TypedIdentifier(token, filename, new basic_1.UnknownType(message), [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n }\n}\nexports.InlineData = InlineData;\n//# sourceMappingURL=inline_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_field_definition.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_field_definition.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineFieldDefinition = void 0;\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass InlineFieldDefinition {\n runSyntax(node, scope, filename, targetType) {\n var _a;\n let type = undefined;\n const field = (_a = node.findDirectExpression(Expressions.Field)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (field === undefined) {\n return undefined;\n }\n const source = node.findDirectExpression(Expressions.Source);\n if (source) {\n type = new source_1.Source().runSyntax(source, scope, filename);\n }\n const typeName = node.findDirectExpression(Expressions.TypeName);\n if (typeName) {\n type = new basic_types_1.BasicTypes(filename, scope).parseType(typeName);\n }\n if (targetType !== undefined) {\n type = targetType;\n }\n if (type === undefined) {\n type = new unknown_type_1.UnknownType(\"InlineFieldDefinition, fallback\");\n }\n const name = field.getStr();\n if (scope.findVariable(name) !== undefined) {\n throw new Error(`Variable ${name} already defined`);\n }\n const identifier = new _typed_identifier_1.TypedIdentifier(field, filename, type, [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addReference(field, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n scope.addIdentifier(identifier);\n return type;\n }\n}\nexports.InlineFieldDefinition = InlineFieldDefinition;\n//# sourceMappingURL=inline_field_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_field_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_fs.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_fs.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineFS = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass InlineFS {\n runSyntax(node, scope, filename, type) {\n var _a;\n const token = (_a = node.findFirstExpression(Expressions.TargetFieldSymbol)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (token && type) {\n const identifier = new _typed_identifier_1.TypedIdentifier(token, filename, type, [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n else if (token) {\n const message = \"InlineFS, could not determine type for \\\"\" + token.getStr() + \"\\\"\";\n const identifier = new _typed_identifier_1.TypedIdentifier(token, filename, new basic_1.UnknownType(message), [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n }\n}\nexports.InlineFS = InlineFS;\n//# sourceMappingURL=inline_fs.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_fs.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_loop_definition.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_loop_definition.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineLoopDefinition = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass InlineLoopDefinition {\n runSyntax(node, scope, filename) {\n if (node === undefined) {\n return;\n }\n let target = node.findDirectExpression(Expressions.TargetField);\n if (target === undefined) {\n target = node.findDirectExpression(Expressions.TargetFieldSymbol);\n }\n const source = node.findDirectExpression(Expressions.Source);\n if (source && target) {\n const sourceType = new source_1.Source().runSyntax(source, scope, filename);\n let rowType = undefined;\n if (sourceType instanceof basic_1.TableType) {\n rowType = sourceType.getRowType();\n }\n else if (sourceType instanceof basic_1.VoidType) {\n rowType = sourceType;\n }\n else if (sourceType instanceof basic_1.UnknownType) {\n throw new Error(\"Unknown type, \" + sourceType.getError());\n }\n if (rowType === undefined\n && node.concatTokens().toUpperCase().includes(\" IN GROUP \")\n && sourceType !== undefined) {\n rowType = sourceType;\n }\n else if (rowType === undefined) {\n throw new Error(\"InlineLoopDefinition, not a table type\");\n }\n const identifier = new _typed_identifier_1.TypedIdentifier(target.getFirstToken(), filename, rowType, [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addReference(target.getFirstToken(), identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n scope.addReference(target.getFirstToken(), identifier, _reference_1.ReferenceType.DataReadReference, filename);\n scope.addIdentifier(identifier);\n }\n const index = node.findExpressionAfterToken(\"INTO\");\n if (index && index.get() instanceof Expressions.TargetField) {\n const identifier = new _typed_identifier_1.TypedIdentifier(index.getFirstToken(), filename, basic_1.IntegerType.get(), [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addReference(index.getFirstToken(), identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n scope.addIdentifier(identifier);\n }\n }\n}\nexports.InlineLoopDefinition = InlineLoopDefinition;\n//# sourceMappingURL=inline_loop_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_loop_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Let = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_field_definition_1 = __webpack_require__(/*! ./inline_field_definition */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_field_definition.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nclass Let {\n runSyntax(node, scope, filename, skipScope = false) {\n if (node === undefined) {\n return false;\n }\n if (skipScope !== true) {\n scope.push(_scope_type_1.ScopeType.Let, \"LET\", node.getFirstToken().getStart(), filename);\n }\n for (const f of node.findDirectExpressions(Expressions.InlineFieldDefinition)) {\n new inline_field_definition_1.InlineFieldDefinition().runSyntax(f, scope, filename);\n }\n return true;\n }\n}\nexports.Let = Let;\n//# sourceMappingURL=let.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/loop_group_by.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/loop_group_by.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopGroupBy = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst component_compare_1 = __webpack_require__(/*! ./component_compare */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare.js\");\nconst inline_data_1 = __webpack_require__(/*! ./inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst fstarget_1 = __webpack_require__(/*! ./fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst target_1 = __webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass LoopGroupBy {\n runSyntax(node, scope, filename) {\n for (const t of node.findAllExpressions(Expressions.Target)) {\n const inline = t.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.VoidType(\"todoGroupBy\"));\n }\n else {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n for (const t of node.findAllExpressions(Expressions.FSTarget)) {\n new fstarget_1.FSTarget().runSyntax(t, scope, filename, new basic_1.VoidType(\"todoGroupBy\"));\n }\n /*\n const components: IStructureComponent[] = [];\n for (const c of node.findDirectExpressions(Expressions.LoopGroupByComponent)) {\n components.push({name: c.getFirstToken().getStr(), type: new VoidType(\"todoGroupBy\")});\n }\n if (components.length === 0) {\n return;\n }\n */\n // const sourceType = new StructureType(components);\n for (const c of node.findDirectExpressions(Expressions.LoopGroupByComponent)) {\n for (const t of c.findDirectExpressions(Expressions.ComponentCompareSingle)) {\n new component_compare_1.ComponentCompare().runSyntax(t, scope, filename);\n }\n }\n }\n}\nexports.LoopGroupBy = LoopGroupBy;\n//# sourceMappingURL=loop_group_by.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/loop_group_by.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/message_source.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/message_source.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessageSource = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass MessageSource {\n runSyntax(node, scope, filename) {\n var _a, _b, _c, _d;\n for (const f of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(f, scope, filename);\n }\n if (node.getFirstToken().getStr().toUpperCase() === \"ID\") {\n const id = (_a = node.findExpressionAfterToken(\"ID\")) === null || _a === void 0 ? void 0 : _a.concatTokens();\n const number = (_b = node.findDirectExpression(Expressions.MessageNumber)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if ((id === null || id === void 0 ? void 0 : id.startsWith(\"'\")) && number) {\n const messageClass = id.substring(1, id.length - 1).toUpperCase();\n scope.getMSAGReferences().addUsing(filename, node.getFirstToken(), messageClass, number);\n }\n }\n else {\n const typeAndNumber = (_c = node.findDirectExpression(Expressions.MessageTypeAndNumber)) === null || _c === void 0 ? void 0 : _c.concatTokens();\n const messageNumber = typeAndNumber === null || typeAndNumber === void 0 ? void 0 : typeAndNumber.substring(1);\n const messageClass = (_d = node.findDirectExpression(Expressions.MessageClass)) === null || _d === void 0 ? void 0 : _d.concatTokens().toUpperCase();\n if (messageNumber && messageClass) {\n scope.getMSAGReferences().addUsing(filename, node.getFirstToken(), messageClass, messageNumber);\n }\n }\n }\n}\nexports.MessageSource = MessageSource;\n//# sourceMappingURL=message_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/message_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_body.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_body.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodCallBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_parameters_1 = __webpack_require__(/*! ./method_parameters */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_parameters.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst method_call_param_1 = __webpack_require__(/*! ./method_call_param */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_param.js\");\nclass MethodCallBody {\n runSyntax(node, scope, filename, method) {\n const parameters = node.findDirectExpression(Expressions.MethodParameters);\n if (parameters) {\n new method_parameters_1.MethodParameters().runSyntax(parameters, scope, method, filename);\n }\n const param = node.findDirectExpression(Expressions.MethodCallParam);\n if (param) {\n new method_call_param_1.MethodCallParam().runSyntax(param, scope, method, filename);\n }\n // for PARAMETER-TABLE and EXCEPTION-TABLE\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.MethodCallBody = MethodCallBody;\n//# sourceMappingURL=method_call_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_chain.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_chain.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodCallChain = void 0;\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst new_object_1 = __webpack_require__(/*! ./new_object */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/new_object.js\");\nconst cast_1 = __webpack_require__(/*! ./cast */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cast.js\");\nconst _builtin_1 = __webpack_require__(/*! ../_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst method_call_param_1 = __webpack_require__(/*! ./method_call_param */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_param.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst component_name_1 = __webpack_require__(/*! ./component_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_name.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_name.js\");\nconst class_definition_1 = __webpack_require__(/*! ../../types/class_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/class_definition.js\");\nclass MethodCallChain {\n runSyntax(node, scope, filename, targetType) {\n var _a, _b;\n const helper = new _object_oriented_1.ObjectOriented(scope);\n const children = node.getChildren().slice();\n const first = children.shift();\n if (first === undefined) {\n throw new Error(\"MethodCallChain, first child expected\");\n }\n let context = this.findTop(first, scope, targetType, filename);\n if (first.get() instanceof Expressions.MethodCall) {\n children.unshift(first);\n }\n while (children.length > 0) {\n const current = children.shift();\n if (current === undefined) {\n break;\n }\n if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.MethodCall) {\n // for built-in methods set className to undefined\n const className = context instanceof basic_1.ObjectReferenceType ? context.getIdentifierName() : undefined;\n const methodToken = (_a = current.findDirectExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const methodName = methodToken === null || methodToken === void 0 ? void 0 : methodToken.getStr();\n const def = scope.findObjectDefinition(className);\n // eslint-disable-next-line prefer-const\n let { method, def: foundDef } = helper.searchMethodName(def, methodName);\n if (method === undefined && current === first) {\n method = new _builtin_1.BuiltIn().searchBuiltin(methodName === null || methodName === void 0 ? void 0 : methodName.toUpperCase());\n if (method) {\n scope.addReference(methodToken, method, _reference_1.ReferenceType.BuiltinMethodReference, filename);\n }\n }\n else {\n const extra = {\n ooName: foundDef === null || foundDef === void 0 ? void 0 : foundDef.getName(),\n ooType: foundDef instanceof class_definition_1.ClassDefinition ? \"CLAS\" : \"INTF\"\n };\n scope.addReference(methodToken, method, _reference_1.ReferenceType.MethodReference, filename, extra);\n }\n if (methodName === null || methodName === void 0 ? void 0 : methodName.includes(\"~\")) {\n const name = methodName.split(\"~\")[0];\n const idef = scope.findInterfaceDefinition(name);\n if (idef) {\n scope.addReference(methodToken, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n }\n if (method === undefined && (methodName === null || methodName === void 0 ? void 0 : methodName.toUpperCase()) === \"CONSTRUCTOR\") {\n context = undefined; // todo, this is a workaround, constructors always exists\n }\n else if (method === undefined && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Method \\\"\" + methodName + \"\\\" not found, methodCallChain\");\n }\n else if (method) {\n const ret = (_b = method.getParameters().getReturning()) === null || _b === void 0 ? void 0 : _b.getType();\n context = ret;\n }\n const param = current.findDirectExpression(Expressions.MethodCallParam);\n if (param && method) {\n new method_call_param_1.MethodCallParam().runSyntax(param, scope, method, filename);\n }\n else if (param && context instanceof basic_1.VoidType) {\n new method_call_param_1.MethodCallParam().runSyntax(param, scope, context, filename);\n }\n }\n else if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.ComponentName) {\n context = new component_name_1.ComponentName().runSyntax(context, current);\n }\n else if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.AttributeName) {\n context = new attribute_name_1.AttributeName().runSyntax(context, current, scope, filename);\n }\n }\n return context;\n }\n //////////////////////////////////////\n findTop(first, scope, targetType, filename) {\n var _a;\n if (first.get() instanceof Expressions.ClassName) {\n const token = first.getFirstToken();\n const className = token.getStr();\n const classDefinition = scope.findObjectDefinition(className);\n if (classDefinition === undefined && scope.getDDIC().inErrorNamespace(className) === false) {\n const extra = { ooName: className, ooType: \"Void\" };\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, extra);\n return new basic_1.VoidType(className);\n }\n else if (classDefinition === undefined) {\n throw new Error(\"Class \" + className + \" not found\");\n }\n scope.addReference(first.getFirstToken(), classDefinition, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n return new basic_1.ObjectReferenceType(classDefinition);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.FieldChain) {\n return new field_chain_1.FieldChain().runSyntax(first, scope, filename, _reference_1.ReferenceType.DataReadReference);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.NewObject) {\n return new new_object_1.NewObject().runSyntax(first, scope, targetType, filename);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Cast) {\n return new cast_1.Cast().runSyntax(first, scope, targetType, filename);\n }\n else {\n const meType = (_a = scope.findVariable(\"me\")) === null || _a === void 0 ? void 0 : _a.getType();\n if (meType) {\n return meType;\n }\n }\n return undefined;\n }\n}\nexports.MethodCallChain = MethodCallChain;\n//# sourceMappingURL=method_call_chain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_chain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_param.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_param.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodCallParam = void 0;\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_parameters_1 = __webpack_require__(/*! ./method_parameters */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_parameters.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass MethodCallParam {\n runSyntax(node, scope, method, filename) {\n if (!(node.get() instanceof Expressions.MethodCallParam)) {\n throw new Error(\"MethodCallParam, unexpected input\");\n }\n const children = node.getChildren();\n if (children.length < 2 || children.length > 3) {\n throw new Error(\"MethodCallParam, unexpected child length\");\n }\n const child = children[1];\n if (child.get() instanceof tokens_1.WParenRight || child.get() instanceof tokens_1.WParenRightW) {\n if (!(method instanceof basic_1.VoidType)) {\n const required = method.getParameters().getRequiredParameters();\n if (required.length > 0) {\n throw new Error(\"Parameter \\\"\" + required[0].getName() + \"\\\" must be supplied\");\n }\n }\n }\n else if (child instanceof nodes_1.ExpressionNode\n && (child.get() instanceof Expressions.Source\n || child.get() instanceof Expressions.ConstantString)) {\n if (!(method instanceof basic_1.VoidType) && method.getParameters().getImporting().length === 0) {\n throw new Error(\"Method \\\"\" + method.getName() + \"\\\" has no importing parameters\");\n }\n let targetType = undefined;\n if (!(method instanceof basic_1.VoidType)) {\n const name = method.getParameters().getDefaultImporting();\n if (name === undefined) {\n throw new Error(\"No default importing parameter\");\n }\n for (const i of method.getParameters().getImporting()) {\n if (i.getName().toUpperCase() === name) {\n targetType = i.getType();\n break;\n }\n }\n }\n else {\n targetType = method;\n }\n let sourceType = basic_1.StringType.get();\n if (child.get() instanceof Expressions.Source) {\n sourceType = new source_1.Source().runSyntax(child, scope, filename, targetType);\n }\n const calculated = child.findFirstExpression(Expressions.MethodCallChain) !== undefined\n || child.findFirstExpression(Expressions.StringTemplate) !== undefined\n || child.findFirstExpression(Expressions.ArithOperator) !== undefined;\n if (sourceType === undefined) {\n throw new Error(\"No source type determined, method source\");\n }\n else if (new _type_utils_1.TypeUtils(scope).isAssignableStrict(sourceType, targetType, calculated) === false) {\n throw new Error(\"Method parameter type not compatible\");\n }\n }\n else if (child instanceof nodes_1.ExpressionNode && child.get() instanceof Expressions.ParameterListS) {\n new method_parameters_1.MethodParameters().checkExporting(child, scope, method, filename);\n }\n else if (child.get() instanceof Expressions.MethodParameters) {\n new method_parameters_1.MethodParameters().runSyntax(child, scope, method, filename);\n }\n else {\n // console.dir(child);\n throw new Error(\"MethodCallParam, unexpected child\");\n }\n }\n}\nexports.MethodCallParam = MethodCallParam;\n//# sourceMappingURL=method_call_param.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_param.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_def_returning.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_def_returning.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefReturning = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nclass MethodDefReturning {\n runSyntax(node, scope, filename, meta) {\n const name = node.findDirectExpression(Expressions.MethodParamName);\n if (name === undefined) {\n throw new Error(\"method_parameter.ts, todo, handle pass by value and reference\");\n }\n const type = node.findDirectExpression(Expressions.TypeParam);\n if (type === undefined) {\n throw new Error(\"method_parameter.ts, unexpected structure\");\n }\n let found = new basic_types_1.BasicTypes(filename, scope).parseType(type);\n if ((found === null || found === void 0 ? void 0 : found.isGeneric()) === true) {\n found = new basic_1.UnknownType(\"RETURNING parameter must be fully specified\");\n }\n if (found) {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, found, meta);\n }\n else {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new basic_1.UnknownType(\"method param, todo\"), meta);\n }\n }\n}\nexports.MethodDefReturning = MethodDefReturning;\n//# sourceMappingURL=method_def_returning.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_def_returning.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_param.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_param.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParam = void 0;\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst default_1 = __webpack_require__(/*! ./default */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/default.js\");\nconst cgeneric_type_1 = __webpack_require__(/*! ../../types/basic/cgeneric_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/cgeneric_type.js\");\nclass MethodParam {\n runSyntax(node, scope, filename, meta) {\n const name = node.findDirectExpression(Expressions.MethodParamName);\n if (name === undefined) {\n throw new Error(\"MethodParam, todo, handle pass by value and reference\");\n }\n const type = node.findDirectExpression(Expressions.TypeParam);\n if (type === undefined) {\n throw new Error(\"MethodParam, unexpected structure\");\n }\n const def = type.findDirectExpression(Expressions.Default);\n if (def) {\n try {\n new default_1.Default().runSyntax(def, scope, filename);\n }\n catch (e) {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new basic_1.UnknownType(e.toString()), meta);\n }\n }\n const concat = type.concatTokens().toUpperCase();\n if (concat === \"TYPE C\" || concat.startsWith(\"TYPE C \")) {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new cgeneric_type_1.CGenericType(), meta);\n }\n else if (concat === \"TYPE X\" || concat.startsWith(\"TYPE X \")) {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new basic_1.XGenericType(), meta);\n }\n const found = new basic_types_1.BasicTypes(filename, scope).parseType(type);\n if (found) {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, found, meta);\n }\n else {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new basic_1.UnknownType(\"method param, todo\"), meta);\n }\n }\n}\nexports.MethodParam = MethodParam;\n//# sourceMappingURL=method_param.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_param.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_parameters.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_parameters.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParameters = void 0;\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ./inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst target_1 = __webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass MethodParameters {\n constructor() {\n this.requiredParameters = undefined;\n }\n runSyntax(node, scope, method, filename) {\n var _a;\n if (!(node.get() instanceof Expressions.MethodParameters)) {\n throw new Error(\"MethodParameters, unexpected input\");\n }\n const children = node.getChildren().slice();\n if (method instanceof basic_1.VoidType) {\n this.requiredParameters = new Set();\n }\n else {\n this.requiredParameters = new Set(method.getParameters().getRequiredParameters().map(i => i.getName().toUpperCase()));\n }\n while (children.length > 0) {\n const name = (_a = children.shift()) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr().toUpperCase();\n switch (name) {\n case \"EXPORTING\":\n this.checkExporting(children.shift(), scope, method, filename, false);\n break;\n case \"IMPORTING\":\n this.checkImporting(children.shift(), scope, method, filename);\n break;\n case \"CHANGING\":\n this.checkChanging(children.shift(), scope, method, filename);\n break;\n case \"RECEIVING\":\n this.checkReceiving(children.shift(), scope, method, filename);\n break;\n case \"EXCEPTIONS\":\n children.shift(); // todo, old style exceptions\n break;\n default:\n throw new Error(\"MethodParameters, unexpected token, \" + name);\n }\n }\n this.reportErrors();\n }\n ///////////////////////\n checkReceiving(node, scope, method, filename) {\n var _a;\n const type = method instanceof basic_1.VoidType ? method : (_a = method.getParameters().getReturning()) === null || _a === void 0 ? void 0 : _a.getType();\n if (type === undefined) {\n throw new Error(\"Method does not have a returning parameter\");\n }\n else if (!(node instanceof nodes_1.ExpressionNode)) {\n throw new Error(\"checkReceiving, not an expression node\");\n }\n const target = node.findDirectExpression(Expressions.Target);\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, type);\n }\n else if (target) {\n const targetType = new target_1.Target().runSyntax(target, scope, filename);\n if (targetType && new _type_utils_1.TypeUtils(scope).isAssignable(type, targetType) === false) {\n throw new Error(\"Method returning value not type compatible\");\n }\n }\n }\n checkImporting(node, scope, method, filename) {\n for (const item of this.parameterListT(node, scope, filename)) {\n let parameterType = undefined;\n if (method instanceof basic_1.VoidType) {\n parameterType = method;\n }\n else {\n const parameter = method.getParameters().getExporting().find(p => p.getName().toUpperCase() === item.name);\n if (parameter === undefined) {\n throw new Error(\"Method exporting parameter \\\"\" + item.name + \"\\\" does not exist\");\n }\n parameterType = parameter.getType();\n }\n const inline = item.target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, parameterType);\n }\n else if (item.targetType === undefined) {\n throw new Error(\"Could not determine target type\");\n }\n else if (item.targetType && new _type_utils_1.TypeUtils(scope).isAssignable(parameterType, item.targetType) === false) {\n throw new Error(\"Method parameter type not compatible, \" + item.name);\n }\n }\n }\n checkChanging(node, scope, method, filename) {\n var _a;\n for (const item of this.parameterListT(node, scope, filename)) {\n let parameterType = undefined;\n if (method instanceof basic_1.VoidType) {\n parameterType = method;\n }\n else {\n const parameter = method.getParameters().getChanging().find(p => p.getName().toUpperCase() === item.name);\n if (parameter === undefined) {\n throw new Error(\"Method changing parameter \\\"\" + item.name + \"\\\" does not exist\");\n }\n parameterType = parameter.getType();\n }\n if (item.targetType && new _type_utils_1.TypeUtils(scope).isAssignable(parameterType, item.targetType) === false) {\n throw new Error(\"Method parameter type not compatible, \" + item.name);\n }\n (_a = this.requiredParameters) === null || _a === void 0 ? void 0 : _a.delete(item.name);\n }\n }\n checkExporting(node, scope, method, filename, errors = true) {\n const items = this.parameterListS(node, scope, filename, method);\n if (method instanceof basic_1.VoidType) {\n return;\n }\n const allImporting = method.getParameters().getImporting();\n if (this.requiredParameters === undefined) {\n this.requiredParameters = new Set(method.getParameters().getRequiredParameters().map(i => i.getName().toUpperCase()));\n }\n for (const item of items) {\n const parameter = allImporting.find(p => p.getName().toUpperCase() === item.name);\n const calculated = item.source.findFirstExpression(Expressions.MethodCallChain) !== undefined\n || item.source.findFirstExpression(Expressions.StringTemplate) !== undefined\n || item.source.findFirstExpression(Expressions.ArithOperator) !== undefined;\n if (parameter === undefined) {\n throw new Error(\"Method importing parameter \\\"\" + item.name + \"\\\" does not exist\");\n }\n else if (new _type_utils_1.TypeUtils(scope).isAssignableStrict(item.sourceType, parameter.getType(), calculated) === false) {\n throw new Error(\"Method parameter type not compatible, \" + item.name);\n }\n this.requiredParameters.delete(item.name);\n }\n if (errors === true) {\n this.reportErrors();\n }\n }\n reportErrors() {\n var _a;\n for (const r of ((_a = this.requiredParameters) === null || _a === void 0 ? void 0 : _a.values()) || []) {\n throw new Error(`method parameter \"${r}\" must be supplied`);\n }\n }\n parameterListS(node, scope, filename, method) {\n var _a;\n if (node === undefined) {\n return [];\n }\n else if (!(node.get() instanceof Expressions.ParameterListS)) {\n throw new Error(\"parameterListS, unexpected node\");\n }\n const ret = [];\n for (const c of node.getChildren()) {\n if (!(c.get() instanceof Expressions.ParameterS) || !(c instanceof nodes_1.ExpressionNode)) {\n throw new Error(\"parameterListS, unexpected node, child\");\n }\n const name = (_a = c.findDirectExpression(Expressions.ParameterName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr().toUpperCase();\n if (name === undefined) {\n throw new Error(\"parameterListS, no name determined\");\n }\n const source = c.findDirectExpression(Expressions.Source);\n if (source === undefined) {\n throw new Error(\"parameterListS, no source found\");\n }\n let targetType = undefined;\n if (!(method instanceof basic_1.VoidType)) {\n for (const i of method.getParameters().getImporting()) {\n if (i.getName().toUpperCase() === name) {\n targetType = i.getType();\n }\n }\n }\n let sourceType = new source_1.Source().runSyntax(source, scope, filename, targetType);\n if (sourceType === undefined) {\n if (method instanceof basic_1.VoidType) {\n sourceType = method;\n }\n else {\n throw new Error(\"No source type determined for parameter \" + name + \" input\");\n }\n }\n ret.push({ name, source, sourceType });\n }\n return ret;\n }\n parameterListT(node, scope, filename) {\n var _a;\n if (node === undefined) {\n return [];\n }\n else if (!(node.get() instanceof Expressions.ParameterListT)) {\n throw new Error(\"parameterListT, unexpected node\");\n }\n const ret = [];\n for (const c of node.getChildren()) {\n if (!(c.get() instanceof Expressions.ParameterT) || !(c instanceof nodes_1.ExpressionNode)) {\n throw new Error(\"parameterListT, unexpected node, child\");\n }\n const name = (_a = c.findDirectExpression(Expressions.ParameterName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr().toUpperCase();\n if (name === undefined) {\n throw new Error(\"parameterListT, no name determined\");\n }\n const target = c.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n throw new Error(\"parameterListT, no target found\");\n }\n const targetType = new target_1.Target().runSyntax(target, scope, filename);\n ret.push({ name, target, targetType });\n }\n return ret;\n }\n}\nexports.MethodParameters = MethodParameters;\n//# sourceMappingURL=method_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_source.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_source.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodSource = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst _abstract_type_1 = __webpack_require__(/*! ../../types/basic/_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nconst source_field_symbol_1 = __webpack_require__(/*! ./source_field_symbol */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field_symbol.js\");\nconst source_field_1 = __webpack_require__(/*! ./source_field */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_name.js\");\nconst component_name_1 = __webpack_require__(/*! ./component_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_name.js\");\nconst types_1 = __webpack_require__(/*! ../../types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass MethodSource {\n runSyntax(node, scope, filename) {\n var _a, _b, _c;\n const helper = new _object_oriented_1.ObjectOriented(scope);\n const children = node.getChildren().slice();\n const first = children.shift();\n if (first === undefined) {\n throw new Error(\"MethodSource, first child expected\");\n }\n let context = this.findTop(first, scope, filename);\n if (context === undefined) {\n context = (_a = scope.findVariable(\"me\")) === null || _a === void 0 ? void 0 : _a.getType();\n children.unshift(first);\n }\n if (scope.getVersion() === version_1.Version.Cloud\n && first.get() instanceof Expressions.Dynamic\n && first instanceof nodes_1.ExpressionNode\n && ((_b = children[0]) === null || _b === void 0 ? void 0 : _b.concatTokens()) === \"=>\") {\n const name = (_c = first.findDirectExpression(Expressions.Constant)) === null || _c === void 0 ? void 0 : _c.concatTokens().replace(/'/g, \"\");\n if (name !== undefined && scope.findClassDefinition(name) === undefined) {\n throw new Error(`Class \"${name}\" not found/released`);\n }\n }\n if (context instanceof basic_1.VoidType) {\n // todo, if there are more dynamic with variables, the references for the variables are not added?\n return context;\n }\n while (children.length > 0) {\n const current = children.shift();\n if (current === undefined) {\n break;\n }\n if (current.get() instanceof tokens_1.Dash) {\n if (context instanceof basic_1.UnknownType) {\n throw new Error(\"Not a structure, type unknown, MethodSource\");\n }\n else if (!(context instanceof basic_1.StructureType)) {\n throw new Error(\"Not a structure, MethodSource\");\n }\n }\n else if (current.get() instanceof tokens_1.InstanceArrow\n || current.get() instanceof tokens_1.StaticArrow) {\n // todo, handling static vs instance\n }\n else if (current.get() instanceof Expressions.AttributeName\n || current.get() instanceof Expressions.SourceField) {\n try {\n if (context instanceof _abstract_type_1.AbstractType) {\n const attr = new attribute_name_1.AttributeName().runSyntax(context, current, scope, filename, _reference_1.ReferenceType.DataReadReference);\n context = attr;\n continue;\n }\n }\n catch (_d) {\n // ignore\n }\n // try looking for method name\n const className = context instanceof basic_1.ObjectReferenceType ? context.getIdentifierName() : undefined;\n const methodToken = current.getFirstToken();\n const methodName = methodToken === null || methodToken === void 0 ? void 0 : methodToken.getStr();\n const def = scope.findObjectDefinition(className);\n // eslint-disable-next-line prefer-const\n let { method, def: foundDef } = helper.searchMethodName(def, methodName);\n if (method === undefined && (methodName === null || methodName === void 0 ? void 0 : methodName.toUpperCase()) === \"CONSTRUCTOR\") {\n context = new basic_1.VoidType(\"CONSTRUCTOR\"); // todo, this is a workaround, constructors always exists\n }\n else if (method === undefined && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Method or attribute \\\"\" + methodName + \"\\\" not found, MethodSource\");\n }\n else if (method) {\n const extra = {\n ooName: foundDef === null || foundDef === void 0 ? void 0 : foundDef.getName(),\n ooType: foundDef instanceof types_1.ClassDefinition ? \"CLAS\" : \"INTF\"\n };\n scope.addReference(methodToken, method, _reference_1.ReferenceType.MethodReference, filename, extra);\n context = method;\n }\n }\n else if (current.get() instanceof Expressions.ComponentName && context instanceof _abstract_type_1.AbstractType) {\n if (context instanceof basic_1.TableType && context.isWithHeader()) {\n context = context.getRowType();\n }\n context = new component_name_1.ComponentName().runSyntax(context, current);\n }\n else if (current instanceof nodes_1.ExpressionNode && current.get() instanceof Expressions.Dynamic) {\n new dynamic_1.Dynamic().runSyntax(current, scope, filename);\n context = new basic_1.VoidType(\"Dynamic\");\n }\n }\n if (context instanceof _abstract_type_1.AbstractType && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Not a method, MethodSource\");\n }\n else if (context === undefined) {\n throw new Error(\"Not found, MethodSource\");\n }\n return context;\n }\n //////////////////////////////////////\n findTop(first, scope, filename) {\n if (first.get() instanceof Expressions.ClassName) {\n // todo, refactor this part to new expression handler,\n const token = first.getFirstToken();\n const className = token.getStr();\n const classDefinition = scope.findObjectDefinition(className);\n if (classDefinition === undefined && scope.getDDIC().inErrorNamespace(className) === false) {\n const extra = { ooName: className, ooType: \"Void\" };\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, extra);\n return new basic_1.VoidType(className);\n }\n else if (classDefinition === undefined) {\n throw new Error(\"Class \" + className + \" not found\");\n }\n scope.addReference(first.getFirstToken(), classDefinition, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n return new basic_1.ObjectReferenceType(classDefinition);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.SourceField) {\n try {\n return new source_field_1.SourceField().runSyntax(first, scope, filename, _reference_1.ReferenceType.DataReadReference);\n }\n catch (_a) {\n return undefined;\n }\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.SourceFieldSymbol) {\n return new source_field_symbol_1.SourceFieldSymbol().runSyntax(first, scope, filename);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Dynamic) {\n new dynamic_1.Dynamic().runSyntax(first, scope, filename);\n return new basic_1.VoidType(\"Dynamic\");\n }\n return undefined;\n }\n}\nexports.MethodSource = MethodSource;\n//# sourceMappingURL=method_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/new_object.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/new_object.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NewObject = void 0;\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst method_parameters_1 = __webpack_require__(/*! ./method_parameters */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_parameters.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nclass NewObject {\n runSyntax(node, scope, targetType, filename) {\n let ret = undefined;\n const typeExpr = node.findDirectExpression(Expressions.TypeNameOrInfer);\n const typeToken = typeExpr === null || typeExpr === void 0 ? void 0 : typeExpr.getFirstToken();\n const typeName = typeExpr === null || typeExpr === void 0 ? void 0 : typeExpr.concatTokens();\n if (typeName === undefined) {\n throw new Error(\"NewObject, child TypeNameOrInfer not found\");\n }\n else if (typeName === \"#\" && targetType && targetType instanceof basic_1.ObjectReferenceType) {\n const clas = scope.findClassDefinition(targetType.getIdentifierName());\n if (clas) {\n scope.addReference(typeToken, clas, _reference_1.ReferenceType.InferredType, filename);\n }\n ret = targetType;\n if ((clas === null || clas === void 0 ? void 0 : clas.isAbstract()) === true) {\n throw new Error(clas.getName() + \" is abstract, cannot be instantiated\");\n }\n }\n else if (typeName === \"#\" && targetType) {\n ret = targetType;\n }\n else if (typeName === \"#\") {\n throw new Error(\"NewObject, todo, infer type\");\n }\n if (ret === undefined) {\n const objDefinition = scope.findObjectDefinition(typeName);\n if (objDefinition) {\n scope.addReference(typeToken, objDefinition, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n const objref = new basic_1.ObjectReferenceType(objDefinition);\n const clas = scope.findClassDefinition(objref.getIdentifierName());\n if ((clas === null || clas === void 0 ? void 0 : clas.isAbstract()) === true) {\n throw new Error(clas.getName() + \" is abstract, cannot be instantiated\");\n }\n ret = objref;\n }\n }\n if (ret === undefined) {\n const basic = new basic_types_1.BasicTypes(filename, scope);\n const type = basic.resolveTypeName(typeExpr);\n if (type instanceof basic_1.UnknownType) {\n ret = type;\n }\n else if (type && !(type instanceof basic_1.VoidType)) {\n ret = new basic_1.DataReference(type);\n }\n else if (type instanceof basic_1.VoidType) {\n ret = type;\n }\n else {\n throw new Error(\"Type \\\"\" + typeName + \"\\\" not found in scope, NewObject\");\n }\n }\n if (ret instanceof basic_1.ObjectReferenceType) {\n this.parameters(node, ret, scope, filename);\n }\n else {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename, ret);\n }\n }\n if (ret instanceof basic_1.UnknownType && scope.getDDIC().inErrorNamespace(typeName) === true) {\n throw new Error(\"Class or type \\\"\" + typeName + \"\\\" not found\");\n }\n return ret;\n }\n parameters(node, obj, scope, filename) {\n const name = obj.getIdentifier().getName();\n const def = scope.findObjectDefinition(name);\n const helper = new _object_oriented_1.ObjectOriented(scope);\n // eslint-disable-next-line prefer-const\n let { method } = helper.searchMethodName(def, \"CONSTRUCTOR\");\n const requiredParameters = (method === null || method === void 0 ? void 0 : method.getParameters().getRequiredParameters()) || [];\n const source = node.findDirectExpression(Expressions.Source);\n const parameters = node.findDirectExpression(Expressions.ParameterListS);\n if (source) {\n // single unnamed parameter\n const type = this.defaultImportingType(method);\n if (type === undefined) {\n throw new Error(\"NewObject, no default importing parameter found for constructor, \" + name);\n }\n new source_1.Source().runSyntax(source, scope, filename, type);\n }\n else if (parameters) {\n // parameters with names\n if (method === undefined) {\n throw new Error(\"NewObject, no parameters for constructor found, \" + name);\n }\n new method_parameters_1.MethodParameters().checkExporting(parameters, scope, method, filename);\n }\n else if (requiredParameters.length > 0) {\n throw new Error(`constructor parameter \"${requiredParameters[0].getName()}\" must be supplied` + name);\n }\n }\n defaultImportingType(method) {\n let targetType = undefined;\n if (method === undefined) {\n return undefined;\n }\n const name = method.getParameters().getDefaultImporting();\n for (const i of method.getParameters().getImporting()) {\n if (i.getName().toUpperCase() === name) {\n targetType = i.getType();\n }\n }\n return targetType;\n }\n}\nexports.NewObject = NewObject;\n//# sourceMappingURL=new_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/new_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/raise_with.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/raise_with.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RaiseWith = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass RaiseWith {\n runSyntax(node, scope, filename) {\n for (const f of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(f, scope, filename);\n }\n }\n}\nexports.RaiseWith = RaiseWith;\n//# sourceMappingURL=raise_with.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/raise_with.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_body.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_body.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReduceBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst for_1 = __webpack_require__(/*! ./for */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/for.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst inline_field_definition_1 = __webpack_require__(/*! ./inline_field_definition */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_field_definition.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nconst reduce_next_1 = __webpack_require__(/*! ./reduce_next */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_next.js\");\nconst let_1 = __webpack_require__(/*! ./let */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nclass ReduceBody {\n runSyntax(node, scope, filename, targetType) {\n if (node === undefined) {\n return;\n }\n let scoped = false;\n const letNode = node.findDirectExpression(Expressions.Let);\n if (letNode) {\n scoped = new let_1.Let().runSyntax(letNode, scope, filename);\n }\n let first = undefined;\n for (const i of node.findDirectExpressions(Expressions.InlineFieldDefinition)) {\n if (scoped === false) {\n scope.push(_scope_type_1.ScopeType.Let, \"LET\", node.getFirstToken().getStart(), filename);\n scoped = true;\n }\n const found = new inline_field_definition_1.InlineFieldDefinition().runSyntax(i, scope, filename, targetType);\n if (found && first === undefined) {\n first = found;\n }\n }\n let forScopes = 0;\n for (const forNode of node.findDirectExpressions(Expressions.For) || []) {\n const scoped = new for_1.For().runSyntax(forNode, scope, filename);\n if (scoped === true) {\n forScopes++;\n }\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.ReduceNext)) {\n new reduce_next_1.ReduceNext().runSyntax(s, scope, filename);\n }\n if (scoped === true) {\n scope.pop(node.getLastToken().getEnd());\n }\n for (let i = 0; i < forScopes; i++) {\n scope.pop(node.getLastToken().getEnd());\n }\n if (first) {\n return first;\n }\n else {\n return new unknown_type_1.UnknownType(\"todo, ReduceBody\");\n }\n }\n}\nexports.ReduceBody = ReduceBody;\n//# sourceMappingURL=reduce_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_next.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_next.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReduceNext = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass ReduceNext {\n runSyntax(node, scope, filename) {\n if (node === undefined) {\n return;\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.SimpleTarget)) {\n new target_1.Target().runSyntax(s, scope, filename);\n }\n }\n}\nexports.ReduceNext = ReduceNext;\n//# sourceMappingURL=reduce_next.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_next.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Select = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ./inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst target_1 = __webpack_require__(/*! ./target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst sql_from_1 = __webpack_require__(/*! ./sql_from */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_from.js\");\nconst sql_for_all_entries_1 = __webpack_require__(/*! ./sql_for_all_entries */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_for_all_entries.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst sql_source_1 = __webpack_require__(/*! ./sql_source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_source.js\");\nconst sql_compare_1 = __webpack_require__(/*! ./sql_compare */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_compare.js\");\nclass Select {\n runSyntax(node, scope, filename, skipImplicitInto = false) {\n var _a, _b;\n const token = node.getFirstToken();\n const from = node.findDirectExpression(Expressions.SQLFrom);\n const dbSources = from ? new sql_from_1.SQLFrom().runSyntax(from, scope, filename) : [];\n for (const inline of node.findAllExpressions(Expressions.InlineData)) {\n // todo, for now these are voided\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.VoidType(\"SELECT_todo\"));\n }\n const fae = node.findDirectExpression(Expressions.SQLForAllEntries);\n if (fae) {\n scope.push(_scope_type_1.ScopeType.OpenSQL, \"SELECT\", token.getStart(), filename);\n new sql_for_all_entries_1.SQLForAllEntries().runSyntax(fae, scope, filename);\n }\n for (const t of node.findAllExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n // check implicit into, the target field is implict equal to the table name\n if (skipImplicitInto === false\n && node.findDirectExpression(Expressions.SQLIntoTable) === undefined\n && node.findDirectExpression(Expressions.SQLIntoStructure) === undefined) {\n const fields = (_a = node.findFirstExpression(Expressions.SQLAggregation)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n const c = new RegExp(/^count\\(\\s*\\*\\s*\\)$/, \"i\");\n if (fields === undefined || c.test(fields) === false) {\n const name = (_b = from === null || from === void 0 ? void 0 : from.findDirectExpression(Expressions.SQLFromSource)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (name && scope.findVariable(name) === undefined) {\n throw new Error(`Target variable ${name} not found in scope`);\n }\n }\n }\n // OFFSET\n for (const s of node.findDirectExpressions(Expressions.SQLSource)) {\n new sql_source_1.SQLSource().runSyntax(s, scope, filename);\n }\n for (const up of node.findDirectExpressions(Expressions.SQLUpTo)) {\n for (const s of up.findDirectExpressions(Expressions.SQLSource)) {\n new sql_source_1.SQLSource().runSyntax(s, scope, filename);\n }\n }\n for (const fae of node.findDirectExpressions(Expressions.SQLForAllEntries)) {\n for (const s of fae.findDirectExpressions(Expressions.SQLSource)) {\n new sql_source_1.SQLSource().runSyntax(s, scope, filename);\n }\n }\n for (const s of node.findAllExpressions(Expressions.SQLCompare)) {\n new sql_compare_1.SQLCompare().runSyntax(s, scope, filename, dbSources);\n }\n if (scope.getType() === _scope_type_1.ScopeType.OpenSQL) {\n scope.pop(node.getLastToken().getEnd());\n }\n }\n}\nexports.Select = Select;\n//# sourceMappingURL=select.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select_loop.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select_loop.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectLoop = void 0;\nconst select_1 = __webpack_require__(/*! ./select */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js\");\nclass SelectLoop {\n runSyntax(node, scope, filename) {\n // try using the other Select, they should look very much the same\n new select_1.Select().runSyntax(node, scope, filename);\n }\n}\nexports.SelectLoop = SelectLoop;\n//# sourceMappingURL=select_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Source = void 0;\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_call_chain_1 = __webpack_require__(/*! ./method_call_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_chain.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nconst field_chain_1 = __webpack_require__(/*! ./field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst constant_1 = __webpack_require__(/*! ./constant */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/constant.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst component_chain_1 = __webpack_require__(/*! ./component_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_chain.js\");\nconst string_template_1 = __webpack_require__(/*! ./string_template */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/string_template.js\");\nconst value_body_1 = __webpack_require__(/*! ./value_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/value_body.js\");\nconst cond_1 = __webpack_require__(/*! ./cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nconst reduce_body_1 = __webpack_require__(/*! ./reduce_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/reduce_body.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst switch_body_1 = __webpack_require__(/*! ./switch_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/switch_body.js\");\nconst cond_body_1 = __webpack_require__(/*! ./cond_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond_body.js\");\nconst conv_body_1 = __webpack_require__(/*! ./conv_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/conv_body.js\");\nconst filter_body_1 = __webpack_require__(/*! ./filter_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/filter_body.js\");\nconst corresponding_body_1 = __webpack_require__(/*! ./corresponding_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/corresponding_body.js\");\nconst _builtin_1 = __webpack_require__(/*! ../_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst attribute_chain_1 = __webpack_require__(/*! ./attribute_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_chain.js\");\nconst dereference_1 = __webpack_require__(/*! ./dereference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dereference.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\n/*\n* Type interference, valid scenarios:\n* typed = VALUE #( ... ). right hand side must follow left hand type\n* DATA(bar) = VALUE type( ... ). left gets the type of rigthand\n* typed = VALUE type( ... ). types must match and be compatible???\n************* ERRORS *********\n* VALUE #( ... ). syntax error\n* DATA(bar) = VALUE #( ... ). give error, no type can be derived\n*/\nclass Source {\n runSyntax(node, scope, filename, targetType, writeReference = false) {\n if (node === undefined) {\n return undefined;\n }\n const children = node.getChildren().slice();\n let first = children.shift();\n if (first instanceof nodes_1.TokenNode) {\n const token = first.getFirstToken();\n const tok = token.getStr().toUpperCase();\n switch (tok) {\n case \"(\":\n case \"-\":\n case \"+\":\n case \"BIT\":\n break;\n case \"BOOLC\":\n {\n const method = new _builtin_1.BuiltIn().searchBuiltin(tok);\n scope.addReference(token, method, _reference_1.ReferenceType.BuiltinMethodReference, filename);\n new cond_1.Cond().runSyntax(node.findDirectExpression(Expressions.Cond), scope, filename);\n return basic_1.StringType.get();\n }\n case \"XSDBOOL\":\n {\n const method = new _builtin_1.BuiltIn().searchBuiltin(tok);\n scope.addReference(token, method, _reference_1.ReferenceType.BuiltinMethodReference, filename);\n new cond_1.Cond().runSyntax(node.findDirectExpression(Expressions.Cond), scope, filename);\n return new basic_1.CharacterType(1, { qualifiedName: \"ABAP_BOOL\", ddicName: \"ABAP_BOOL\" });\n }\n case \"REDUCE\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n const bodyType = new reduce_body_1.ReduceBody().runSyntax(node.findDirectExpression(Expressions.ReduceBody), scope, filename, foundType);\n if (foundType === undefined || foundType.isGeneric()) {\n this.addIfInferred(node, scope, filename, bodyType);\n }\n else {\n this.addIfInferred(node, scope, filename, foundType);\n }\n return foundType ? foundType : bodyType;\n }\n case \"SWITCH\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n const bodyType = new switch_body_1.SwitchBody().runSyntax(node.findDirectExpression(Expressions.SwitchBody), scope, filename);\n if (foundType === undefined || foundType.isGeneric()) {\n this.addIfInferred(node, scope, filename, bodyType);\n }\n else {\n this.addIfInferred(node, scope, filename, foundType);\n }\n return foundType ? foundType : bodyType;\n }\n case \"COND\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n const bodyType = new cond_body_1.CondBody().runSyntax(node.findDirectExpression(Expressions.CondBody), scope, filename);\n if (foundType === undefined || foundType.isGeneric()) {\n this.addIfInferred(node, scope, filename, bodyType);\n }\n else {\n this.addIfInferred(node, scope, filename, foundType);\n }\n return foundType ? foundType : bodyType;\n }\n case \"CONV\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n new conv_body_1.ConvBody().runSyntax(node.findDirectExpression(Expressions.ConvBody), scope, filename);\n this.addIfInferred(node, scope, filename, foundType);\n return foundType;\n }\n case \"REF\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n const s = new Source().runSyntax(node.findDirectExpression(Expressions.Source), scope, filename);\n if (foundType === undefined && s) {\n return new basic_1.DataReference(s);\n }\n else {\n return foundType;\n }\n }\n case \"FILTER\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n const bodyType = new filter_body_1.FilterBody().runSyntax(node.findDirectExpression(Expressions.FilterBody), scope, filename, foundType);\n if (foundType === undefined || foundType.isGeneric()) {\n this.addIfInferred(node, scope, filename, bodyType);\n }\n else {\n this.addIfInferred(node, scope, filename, foundType);\n }\n if (foundType && !(foundType instanceof unknown_type_1.UnknownType)) {\n return foundType;\n }\n else {\n return bodyType;\n }\n }\n case \"CORRESPONDING\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n new corresponding_body_1.CorrespondingBody().runSyntax(node.findDirectExpression(Expressions.CorrespondingBody), scope, filename, foundType);\n this.addIfInferred(node, scope, filename, foundType);\n return foundType;\n }\n case \"EXACT\":\n return this.determineType(node, scope, filename, targetType);\n case \"VALUE\":\n {\n const foundType = this.determineType(node, scope, filename, targetType);\n const bodyType = new value_body_1.ValueBody().runSyntax(node.findDirectExpression(Expressions.ValueBody), scope, filename, foundType);\n if (foundType === undefined || foundType.isGeneric()) {\n this.addIfInferred(node, scope, filename, bodyType);\n }\n else {\n this.addIfInferred(node, scope, filename, foundType);\n }\n return foundType ? foundType : bodyType;\n }\n default:\n return new unknown_type_1.UnknownType(\"todo, Source type \" + tok);\n }\n }\n else if (first === undefined || !(first instanceof nodes_1.ExpressionNode)) {\n return undefined;\n }\n let context = new unknown_type_1.UnknownType(\"todo, Source type\");\n const type = [_reference_1.ReferenceType.DataReadReference];\n if (writeReference) {\n type.push(_reference_1.ReferenceType.DataWriteReference);\n }\n while (children.length >= 0) {\n if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.MethodCallChain) {\n context = new method_call_chain_1.MethodCallChain().runSyntax(first, scope, filename, targetType);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.FieldChain) {\n context = new field_chain_1.FieldChain().runSyntax(first, scope, filename, type);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.StringTemplate) {\n context = new string_template_1.StringTemplate().runSyntax(first, scope, filename);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Source) {\n const found = new Source().runSyntax(first, scope, filename);\n context = this.infer(context, found);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Constant) {\n const found = new constant_1.Constant().runSyntax(first);\n context = this.infer(context, found);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.Dereference) {\n context = new dereference_1.Dereference().runSyntax(context);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.ComponentChain) {\n context = new component_chain_1.ComponentChain().runSyntax(context, first, scope, filename);\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.ArithOperator) {\n if (first.concatTokens() === \"**\") {\n context = new basic_1.FloatType();\n }\n }\n else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.AttributeChain) {\n context = new attribute_chain_1.AttributeChain().runSyntax(context, first, scope, filename, type);\n }\n first = children.shift();\n if (first === undefined) {\n break;\n }\n }\n if (node.findDirectTokenByText(\"&&\")) {\n return basic_1.StringType.get();\n }\n return context;\n }\n ////////////////////////////////\n infer(context, found) {\n if (context instanceof basic_1.FloatType && found instanceof basic_1.IntegerType) {\n return context;\n }\n else {\n return found;\n }\n }\n addIfInferred(node, scope, filename, inferredType) {\n const basic = new basic_types_1.BasicTypes(filename, scope);\n const typeExpression = node.findFirstExpression(Expressions.TypeNameOrInfer);\n const typeToken = typeExpression === null || typeExpression === void 0 ? void 0 : typeExpression.getFirstToken();\n const typeName = typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr();\n if (typeName === \"#\" && inferredType && typeToken) {\n const found = basic.lookupQualifiedName(inferredType.getQualifiedName());\n if (found) {\n scope.addReference(typeToken, found, _reference_1.ReferenceType.InferredType, filename);\n }\n else if (inferredType instanceof basic_1.ObjectReferenceType) {\n const def = scope.findObjectDefinition(inferredType.getQualifiedName());\n if (def) {\n const tid = new _typed_identifier_1.TypedIdentifier(typeToken, filename, inferredType);\n scope.addReference(typeToken, tid, _reference_1.ReferenceType.InferredType, filename);\n }\n }\n else if (inferredType instanceof basic_1.CharacterType) {\n // character is bit special it does not have a qualified name eg \"TYPE c LENGTH 6\"\n const tid = new _typed_identifier_1.TypedIdentifier(typeToken, filename, inferredType);\n scope.addReference(typeToken, tid, _reference_1.ReferenceType.InferredType, filename);\n }\n }\n }\n determineType(node, scope, filename, targetType) {\n const basic = new basic_types_1.BasicTypes(filename, scope);\n const typeExpression = node.findFirstExpression(Expressions.TypeNameOrInfer);\n const typeToken = typeExpression === null || typeExpression === void 0 ? void 0 : typeExpression.getFirstToken();\n const typeName = typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr();\n if (typeExpression === undefined) {\n throw new Error(\"determineType, child TypeNameOrInfer not found\");\n }\n else if (typeName === \"#\" && targetType) {\n // const found = basic.lookupQualifiedName(targetType.getQualifiedName());\n /*\n if (found) {\n scope.addReference(typeToken, found, ReferenceType.InferredType, filename);\n }\n */\n return targetType;\n }\n if (typeName !== \"#\" && typeToken) {\n const found = basic.parseType(typeExpression);\n if (found && found instanceof unknown_type_1.UnknownType) {\n if (scope.getDDIC().inErrorNamespace(typeName) === false) {\n scope.addReference(typeToken, undefined, _reference_1.ReferenceType.VoidType, filename);\n return new basic_1.VoidType(typeName);\n }\n else {\n const tid = new _typed_identifier_1.TypedIdentifier(typeToken, filename, found);\n scope.addReference(typeToken, tid, _reference_1.ReferenceType.TypeReference, filename);\n return found;\n }\n }\n else if (found === undefined) {\n throw new Error(\"Type \\\"\" + typeName + \"\\\" not found in scope, VALUE\");\n }\n return found;\n }\n return targetType;\n }\n}\nexports.Source = Source;\n//# sourceMappingURL=source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SourceField = void 0;\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass SourceField {\n runSyntax(node, scope, filename, type) {\n const token = node.getFirstToken();\n const name = token.getStr();\n const found = scope.findVariable(name);\n if (found === undefined) {\n throw new Error(\"\\\"\" + name + \"\\\" not found, findTop\");\n }\n if (type) {\n scope.addReference(token, found, type, filename);\n }\n if (name.includes(\"~\")) {\n const idef = scope.findInterfaceDefinition(name.split(\"~\")[0]);\n if (idef) {\n scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n }\n return found.getType();\n }\n}\nexports.SourceField = SourceField;\n//# sourceMappingURL=source_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field_symbol.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field_symbol.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SourceFieldSymbol = void 0;\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass SourceFieldSymbol {\n runSyntax(node, scope, filename) {\n const token = node.getFirstToken();\n const found = scope.findVariable(token.getStr());\n if (found === undefined) {\n throw new Error(\"\\\"\" + node.getFirstToken().getStr() + \"\\\" not found, SourceFieldSymbol\");\n }\n scope.addReference(token, found, _reference_1.ReferenceType.DataReadReference, filename);\n return found.getType();\n }\n}\nexports.SourceFieldSymbol = SourceFieldSymbol;\n//# sourceMappingURL=source_field_symbol.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source_field_symbol.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_compare.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_compare.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLCompare = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst sql_source_1 = __webpack_require__(/*! ./sql_source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_source.js\");\nclass SQLCompare {\n runSyntax(node, scope, filename, tables) {\n var _a;\n let sourceType;\n let token;\n for (const s of node.findAllExpressions(Expressions.SQLSource)) {\n for (const child of s.getChildren()) {\n if (child instanceof nodes_1.ExpressionNode) {\n token = child.getFirstToken();\n break;\n }\n }\n sourceType = new sql_source_1.SQLSource().runSyntax(s, scope, filename);\n }\n const fieldName = (_a = node.findDirectExpression(Expressions.SQLFieldName)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (fieldName && sourceType && token) {\n // check compatibility for rule sql_value_conversion\n const targetType = this.findType(fieldName, tables, scope);\n let message = \"\";\n if (sourceType instanceof basic_1.IntegerType\n && targetType instanceof basic_1.CharacterType) {\n message = \"Integer to CHAR conversion\";\n }\n else if (sourceType instanceof basic_1.IntegerType\n && targetType instanceof basic_1.NumericType) {\n message = \"Integer to NUMC conversion\";\n }\n else if (sourceType instanceof basic_1.NumericType\n && targetType instanceof basic_1.IntegerType) {\n message = \"NUMC to Integer conversion\";\n }\n else if (sourceType instanceof basic_1.CharacterType\n && targetType instanceof basic_1.IntegerType) {\n message = \"CHAR to Integer conversion\";\n }\n else if (sourceType instanceof basic_1.CharacterType\n && targetType instanceof basic_1.CharacterType\n && sourceType.getLength() > targetType.getLength()) {\n message = \"Source field longer than database field, CHAR -> CHAR\";\n }\n else if (sourceType instanceof basic_1.NumericType\n && targetType instanceof basic_1.NumericType\n && sourceType.getLength() > targetType.getLength()) {\n message = \"Source field longer than database field, NUMC -> NUMC\";\n }\n if (message !== \"\") {\n scope.addSQLConversion(fieldName, message, token);\n }\n }\n }\n findType(fieldName, tables, scope) {\n for (const t of tables) {\n const type = t === null || t === void 0 ? void 0 : t.parseType(scope.getRegistry());\n if (type instanceof basic_1.StructureType) {\n return type.getComponentByName(fieldName);\n }\n }\n return undefined;\n }\n}\nexports.SQLCompare = SQLCompare;\n//# sourceMappingURL=sql_compare.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_compare.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_for_all_entries.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_for_all_entries.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLForAllEntries = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass SQLForAllEntries {\n runSyntax(node, scope, filename) {\n let s = node.findFirstExpression(Expressions.Source);\n if (s === undefined) {\n s = node.findFirstExpression(Expressions.SimpleSource3);\n }\n if (s) {\n const type = new source_1.Source().runSyntax(s, scope, filename);\n if (type instanceof basic_1.VoidType) {\n return;\n }\n if (!(type instanceof basic_1.TableType)) {\n throw new Error(\"FAE parameter must be table type\");\n }\n const name = s.concatTokens().replace(\"[]\", \"\");\n scope.setAllowHeaderUse(name);\n }\n }\n}\nexports.SQLForAllEntries = SQLForAllEntries;\n//# sourceMappingURL=sql_for_all_entries.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_for_all_entries.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_from.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_from.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLFrom = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst dynamic_1 = __webpack_require__(/*! ./dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst database_table_1 = __webpack_require__(/*! ./database_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js\");\nclass SQLFrom {\n runSyntax(node, scope, filename) {\n const ret = [];\n const fromList = node.findAllExpressions(Expressions.SQLFromSource);\n for (const from of fromList) {\n for (const d of from.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n const dbtab = from.findFirstExpression(Expressions.DatabaseTable);\n if (dbtab !== undefined) {\n ret.push(new database_table_1.DatabaseTable().runSyntax(dbtab, scope, filename));\n }\n }\n return ret;\n }\n}\nexports.SQLFrom = SQLFrom;\n//# sourceMappingURL=sql_from.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_from.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_source.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_source.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLSource = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass SQLSource {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n return new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {\n return new source_1.Source().runSyntax(s, scope, filename);\n }\n return undefined;\n }\n}\nexports.SQLSource = SQLSource;\n//# sourceMappingURL=sql_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/sql_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/string_template.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/string_template.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StringTemplate = void 0;\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass StringTemplate {\n runSyntax(node, scope, filename) {\n const typeUtils = new _type_utils_1.TypeUtils(scope);\n const ret = basic_1.StringType.get();\n for (const templateSource of node.findAllExpressions(Expressions.StringTemplateSource)) {\n const s = templateSource.findDirectExpression(Expressions.Source);\n const type = new source_1.Source().runSyntax(s, scope, filename, ret);\n if (type === undefined) {\n throw new Error(\"No target type determined\");\n }\n else if (typeUtils.isCharLike(type) === false && typeUtils.isHexLike(type) === false) {\n throw new Error(\"Not character like, \" + type.constructor.name);\n }\n const format = templateSource.findDirectExpression(Expressions.StringTemplateFormatting);\n const formatConcat = format === null || format === void 0 ? void 0 : format.concatTokens();\n for (const formatSource of (format === null || format === void 0 ? void 0 : format.findAllExpressions(Expressions.Source)) || []) {\n new source_1.Source().runSyntax(formatSource, scope, filename);\n }\n if ((formatConcat === null || formatConcat === void 0 ? void 0 : formatConcat.includes(\"ALPHA = \"))\n && !(type instanceof basic_1.UnknownType)\n && !(type instanceof basic_1.VoidType)\n && !(type instanceof basic_1.StringType)\n && !(type instanceof basic_1.CLikeType)\n && !(type instanceof basic_1.CharacterType)\n && !(type instanceof basic_1.NumericGenericType)\n && !(type instanceof basic_1.NumericType)\n && !(type instanceof basic_1.AnyType)) {\n throw new Error(\"Cannot apply ALPHA to this type\");\n }\n }\n return ret;\n }\n}\nexports.StringTemplate = StringTemplate;\n//# sourceMappingURL=string_template.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/string_template.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/switch_body.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/switch_body.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SwitchBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass SwitchBody {\n runSyntax(node, scope, filename) {\n if (node === undefined) {\n return;\n }\n const thenSource = node.findExpressionAfterToken(\"THEN\");\n if (!((thenSource === null || thenSource === void 0 ? void 0 : thenSource.get()) instanceof Expressions.Source)) {\n throw new Error(\"SwitchBody, unexpected\");\n }\n const type = new source_1.Source().runSyntax(thenSource, scope, filename);\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n if (s === thenSource) {\n continue;\n }\n new source_1.Source().runSyntax(s, scope, filename);\n }\n return type;\n }\n}\nexports.SwitchBody = SwitchBody;\n//# sourceMappingURL=switch_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/switch_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/table_expression.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/table_expression.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TableExpression = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass TableExpression {\n runSyntax(node, scope, filename) {\n if (node === undefined) {\n return;\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.TableExpression = TableExpression;\n//# sourceMappingURL=table_expression.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/table_expression.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Target = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst component_name_1 = __webpack_require__(/*! ./component_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_name.js\");\nconst attribute_name_1 = __webpack_require__(/*! ./attribute_name */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_name.js\");\nconst field_offset_1 = __webpack_require__(/*! ./field_offset */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_offset.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst table_expression_1 = __webpack_require__(/*! ./table_expression */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/table_expression.js\");\nconst expressions_1 = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Target {\n runSyntax(node, scope, filename) {\n const concat = node.concatTokens();\n if (concat.includes(\"-\")) {\n // workaround for names with dashes\n const found = scope.findVariable(concat);\n if (found) {\n scope.addReference(node.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, filename);\n return found.getType();\n }\n }\n const children = node.getChildren().slice();\n const first = children.shift();\n if (first === undefined || !(first instanceof nodes_1.ExpressionNode)) {\n return undefined;\n }\n let context = this.findTop(first, scope, filename);\n if (context === undefined) {\n throw new Error(`\"${first.getFirstToken().getStr()}\" not found, Target`);\n }\n while (children.length > 0) {\n const current = children.shift();\n if (current === undefined) {\n break;\n }\n if (current.get() instanceof tokens_1.Dash) {\n if (context instanceof unknown_type_1.UnknownType) {\n throw new Error(\"Not a structure, type unknown, target\");\n }\n else if (!(context instanceof basic_1.StructureType)\n && !(context instanceof basic_1.TableType && context.isWithHeader() && context.getRowType() instanceof basic_1.StructureType)\n && !(context instanceof basic_1.TableType && context.isWithHeader() && context.getRowType() instanceof basic_1.VoidType)\n && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Not a structure, target\");\n }\n }\n else if (current.get() instanceof tokens_1.InstanceArrow) {\n if (!(context instanceof basic_1.ObjectReferenceType)\n && !(context instanceof basic_1.DataReference)\n && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Not an object reference, target\");\n }\n }\n else if (current.get() instanceof expressions_1.Dereference) {\n if (!(context instanceof basic_1.DataReference) && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Not an object reference, target\");\n }\n if (!(context instanceof basic_1.VoidType)) {\n context = context.getType();\n }\n }\n else if (current.get() instanceof Expressions.ComponentName) {\n context = new component_name_1.ComponentName().runSyntax(context, current);\n }\n else if (current.get() instanceof Expressions.TableBody) {\n if (!(context instanceof basic_1.TableType)\n && !(context instanceof basic_1.VoidType)\n && !(context instanceof unknown_type_1.UnknownType)\n && !(context instanceof unknown_type_1.UnknownType)) {\n throw new Error(\"Not a internal table, \\\"[]\\\"\");\n }\n if (context instanceof basic_1.TableType && context.isWithHeader()) {\n context = new basic_1.TableType(context.getRowType(), Object.assign(Object.assign({}, context.getOptions()), { withHeader: false }));\n }\n }\n else if (current instanceof nodes_1.ExpressionNode\n && current.get() instanceof Expressions.TableExpression) {\n if (!(context instanceof basic_1.TableType) && !(context instanceof basic_1.VoidType)) {\n throw new Error(\"Table expression, expected table\");\n }\n new table_expression_1.TableExpression().runSyntax(current, scope, filename);\n if (!(context instanceof basic_1.VoidType)) {\n context = context.getRowType();\n }\n }\n else if (current.get() instanceof Expressions.AttributeName) {\n const type = children.length === 0 ? _reference_1.ReferenceType.DataWriteReference : _reference_1.ReferenceType.DataReadReference;\n context = new attribute_name_1.AttributeName().runSyntax(context, current, scope, filename, type);\n }\n }\n const offset = node.findDirectExpression(Expressions.FieldOffset);\n if (offset) {\n new field_offset_1.FieldOffset().runSyntax(offset, scope, filename);\n }\n return context;\n }\n /////////////////////////////////\n findTop(node, scope, filename) {\n if (node === undefined) {\n return undefined;\n }\n const token = node.getFirstToken();\n const name = token.getStr();\n if (node.get() instanceof Expressions.TargetField\n || node.get() instanceof Expressions.TargetFieldSymbol) {\n const found = scope.findVariable(name);\n if (found) {\n scope.addReference(token, found, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n if (name.includes(\"~\")) {\n const idef = scope.findInterfaceDefinition(name.split(\"~\")[0]);\n if (idef) {\n scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n }\n return found === null || found === void 0 ? void 0 : found.getType();\n }\n else if (node.get() instanceof Expressions.ClassName) {\n const found = scope.findObjectDefinition(name);\n if (found) {\n scope.addReference(token, found, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n return new basic_1.ObjectReferenceType(found);\n }\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, { ooName: name, ooType: \"CLAS\" });\n return new basic_1.VoidType(name);\n }\n else {\n return new unknown_type_1.UnknownType(name + \" unknown, Target\");\n }\n }\n return new unknown_type_1.UnknownType(\"unknown target type\");\n }\n}\nexports.Target = Target;\n//# sourceMappingURL=target.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeTable = void 0;\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst type_table_key_1 = __webpack_require__(/*! ./type_table_key */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table_key.js\");\nclass TypeTable {\n runSyntax(node, scope, filename, qualifiedNamePrefix) {\n // todo, input is currently the statement, but should be the expression?\n let nameExpr = node.findFirstExpression(Expressions.DefinitionName);\n if (nameExpr === undefined) {\n nameExpr = node.findFirstExpression(Expressions.NamespaceSimpleName);\n }\n if (nameExpr === undefined) {\n return undefined;\n }\n const name = nameExpr.getFirstToken();\n let qualifiedName = qualifiedNamePrefix || \"\";\n if (node.getFirstToken().getStr().toUpperCase() === \"TYPES\") {\n qualifiedName = qualifiedName + name.getStr();\n if (scope.getType() === _scope_type_1.ScopeType.ClassDefinition\n || scope.getType() === _scope_type_1.ScopeType.Interface) {\n qualifiedName = scope.getName() + \"=>\" + qualifiedName;\n }\n }\n let type = new basic_types_1.BasicTypes(filename, scope).parseTable(node, qualifiedName);\n if (type === undefined) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new basic_1.UnknownType(\"TableType, fallback\"));\n }\n for (const tt of node.findAllExpressions(Expressions.TypeTableKey)) {\n const error = new type_table_key_1.TypeTableKey().runSyntax(tt, type);\n if (error) {\n type = error;\n }\n }\n return new _typed_identifier_1.TypedIdentifier(name, filename, type);\n }\n}\nexports.TypeTable = TypeTable;\n//# sourceMappingURL=type_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table_key.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table_key.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeTableKey = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass TypeTableKey {\n runSyntax(node, type) {\n if (type instanceof basic_1.TableType) {\n const rowType = type.getRowType();\n if (rowType instanceof basic_1.StructureType) {\n for (const c of node.findAllExpressions(Expressions.FieldSub)) {\n const concat = c.concatTokens().replace(/^!/, \"\");\n if (concat.includes(\"-\") === false // todo, properly check sub fields\n && rowType.getComponentByName(concat) === undefined\n && concat.toUpperCase() !== \"TABLE_LINE\") {\n return new basic_1.UnknownType(`Field ${concat} not part of structure`);\n }\n }\n }\n }\n return undefined;\n }\n}\nexports.TypeTableKey = TypeTableKey;\n//# sourceMappingURL=type_table_key.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table_key.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/value_body.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/value_body.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ValueBody = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst for_1 = __webpack_require__(/*! ./for */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/for.js\");\nconst source_1 = __webpack_require__(/*! ./source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst let_1 = __webpack_require__(/*! ./let */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/let.js\");\nconst field_assignment_1 = __webpack_require__(/*! ./field_assignment */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_assignment.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass ValueBody {\n runSyntax(node, scope, filename, targetType) {\n if (node === undefined) {\n return targetType;\n }\n let letScoped = false;\n const letNode = node.findDirectExpression(Expressions.Let);\n if (letNode) {\n letScoped = new let_1.Let().runSyntax(letNode, scope, filename);\n }\n let forScopes = 0;\n for (const forNode of node.findDirectExpressions(Expressions.For) || []) {\n const scoped = new for_1.For().runSyntax(forNode, scope, filename);\n if (scoped === true) {\n forScopes++;\n }\n }\n for (const s of node.findDirectExpressions(Expressions.FieldAssignment)) {\n new field_assignment_1.FieldAssignment().runSyntax(s, scope, filename, targetType);\n }\n let type = undefined; // todo, this is only correct if there is a single source in the body\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n type = new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const foo of node.findDirectExpressions(Expressions.ValueBodyLine)) {\n if (!(targetType instanceof basic_1.TableType)\n && !(targetType instanceof basic_1.UnknownType)\n && !(targetType instanceof basic_1.AnyType)\n && targetType !== undefined\n && !(targetType instanceof basic_1.VoidType)) {\n throw new Error(\"Value, not a table type\");\n }\n let rowType = targetType;\n if (targetType instanceof basic_1.TableType) {\n rowType = targetType.getRowType();\n }\n for (const l of foo.findDirectExpressions(Expressions.ValueBodyLines)) {\n for (const s of l.findDirectExpressions(Expressions.Source)) {\n // LINES OF ?? todo, pass type,\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n for (const s of foo.findDirectExpressions(Expressions.FieldAssignment)) {\n new field_assignment_1.FieldAssignment().runSyntax(s, scope, filename, rowType);\n }\n for (const s of foo.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename, rowType);\n }\n }\n if (letScoped === true) {\n scope.pop(node.getLastToken().getEnd());\n }\n for (let i = 0; i < forScopes; i++) {\n scope.pop(node.getLastToken().getEnd());\n }\n if ((targetType === null || targetType === void 0 ? void 0 : targetType.isGeneric()) && type) {\n return type;\n }\n return targetType ? targetType : type;\n }\n}\nexports.ValueBody = ValueBody;\n//# sourceMappingURL=value_body.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/value_body.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js ***! + \***********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FindGlobalDefinitions = void 0;\nconst interface_definition_1 = __webpack_require__(/*! ../../types/interface_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/interface_definition.js\");\nconst class_definition_1 = __webpack_require__(/*! ../../types/class_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/class_definition.js\");\nconst _current_scope_1 = __webpack_require__(/*! ../_current_scope */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_current_scope.js\");\nconst Structures = __webpack_require__(/*! ../../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst interface_1 = __webpack_require__(/*! ../../../objects/interface */ \"./node_modules/@abaplint/core/build/src/objects/interface.js\");\nconst class_1 = __webpack_require__(/*! ../../../objects/class */ \"./node_modules/@abaplint/core/build/src/objects/class.js\");\nconst BasicTypes = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst objects_1 = __webpack_require__(/*! ../../../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\n// todo: rewrite all of this to use a graph based deterministic approach instead\n// this makes sure to cache global interface and class definitions in the corresponding object\nclass FindGlobalDefinitions {\n constructor(reg) {\n this.reg = reg;\n }\n run(progress) {\n const MAX_PASSES = 10;\n let lastPass = Number.MAX_SAFE_INTEGER;\n // the setDirty method in the objects clears the definitions\n let candidates = [];\n for (const o of this.reg.getObjects()) {\n if ((o instanceof interface_1.Interface || o instanceof class_1.Class) && o.getDefinition() === undefined) {\n candidates.push(o);\n }\n else if (o instanceof objects_1.DataElement\n || o instanceof objects_1.View\n || o instanceof objects_1.TableType\n || o instanceof objects_1.LockObject\n || o instanceof objects_1.AuthorizationCheckField\n || o instanceof objects_1.Table) {\n o.parseType(this.reg); // make sure the references are set after parsing finishes\n }\n }\n // make sure the sequence is always the same, disregarding the sequence they were added to the registry\n // this will hopefully make it easier to debug\n candidates.sort((a, b) => { return a.getName().localeCompare(b.getName()); });\n for (let i = 1; i <= MAX_PASSES; i++) {\n progress === null || progress === void 0 ? void 0 : progress.set(candidates.length, \"Global OO types, pass \" + i);\n let thisPass = 0;\n const next = [];\n for (const o of candidates) {\n progress === null || progress === void 0 ? void 0 : progress.tickSync(\"Global OO types(pass \" + i + \"), next pass: \" + next.length);\n this.update(o);\n const untypedCount = this.countUntyped(o);\n if (untypedCount > 0) {\n next.push(o);\n }\n thisPass = thisPass + untypedCount;\n }\n candidates = next;\n if (lastPass === thisPass || thisPass === 0) {\n break;\n }\n lastPass = thisPass;\n }\n }\n /////////////////////////////\n countUntyped(obj) {\n const def = obj.getDefinition();\n if (def === undefined) {\n return 1;\n }\n let count = 0;\n for (const t of def.getTypeDefinitions().getAll()) {\n count = count + this.count(t.type.getType());\n }\n for (const a of def.getAttributes().getAll()) {\n count = count + this.count(a.getType());\n }\n for (const a of def.getAttributes().getConstants()) {\n count = count + this.count(a.getType());\n }\n for (const m of def.getMethodDefinitions().getAll()) {\n for (const p of m.getParameters().getAll()) {\n count = count + this.count(p.getType());\n }\n }\n for (const e of def.getEvents() || []) {\n for (const p of e.getParameters()) {\n count = count + this.count(p.getType());\n }\n }\n return count;\n }\n count(type) {\n if (type instanceof BasicTypes.UnknownType || type instanceof BasicTypes.VoidType) {\n return 1;\n }\n else if (type instanceof BasicTypes.TableType) {\n return this.count(type.getRowType());\n }\n else if (type instanceof BasicTypes.DataReference) {\n return this.count(type.getType());\n }\n else if (type instanceof BasicTypes.StructureType) {\n let count = 0;\n for (const c of type.getComponents()) {\n count = count + this.count(c.type);\n }\n return count;\n }\n return 0;\n }\n update(obj) {\n const file = obj.getMainABAPFile();\n const struc = file === null || file === void 0 ? void 0 : file.getStructure();\n if (obj instanceof interface_1.Interface) {\n const found = struc === null || struc === void 0 ? void 0 : struc.findFirstStructure(Structures.Interface);\n if (struc && file && found) {\n try {\n const def = new interface_definition_1.InterfaceDefinition(found, file.getFilename(), _current_scope_1.CurrentScope.buildDefault(this.reg, obj));\n obj.setDefinition(def);\n }\n catch (_a) {\n obj.setDefinition(undefined);\n }\n }\n else {\n obj.setDefinition(undefined);\n }\n }\n else {\n const found = struc === null || struc === void 0 ? void 0 : struc.findFirstStructure(Structures.ClassDefinition);\n if (struc && file && found) {\n try {\n const def = new class_definition_1.ClassDefinition(found, file.getFilename(), _current_scope_1.CurrentScope.buildDefault(this.reg, obj));\n obj.setDefinition(def);\n }\n catch (_b) {\n obj.setDefinition(undefined);\n }\n }\n else {\n obj.setDefinition(undefined);\n }\n }\n }\n}\nexports.FindGlobalDefinitions = FindGlobalDefinitions;\n//# sourceMappingURL=find_global_definitions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/spaghetti_scope.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/spaghetti_scope.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SpaghettiScope = exports.SpaghettiScopeNode = void 0;\nconst _typed_identifier_1 = __webpack_require__(/*! ../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst _reference_1 = __webpack_require__(/*! ./_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass ScopeData {\n constructor() {\n this.data = {\n vars: {},\n cdefs: {},\n idefs: [],\n forms: [],\n types: {},\n extraLikeTypes: {},\n deferred: [],\n references: [],\n sqlConversion: [],\n };\n }\n getData() {\n return this.data;\n }\n}\nclass SpaghettiScopeNode extends ScopeData {\n constructor(identifier, parent) {\n super();\n this.identifier = identifier;\n this.parent = parent;\n this.children = [];\n }\n getParent() {\n return this.parent;\n }\n addChild(node) {\n this.children.push(node);\n }\n getChildren() {\n return this.children;\n }\n getFirstChild() {\n return this.children[0];\n }\n getIdentifier() {\n return this.identifier;\n }\n calcCoverage() {\n if (this.identifier.end === undefined) {\n throw new Error(\"internal error, caclCoverage\");\n }\n return { start: this.identifier.start, end: this.identifier.end };\n }\n setEnd(end) {\n this.identifier.end = end;\n }\n findDeferred(name) {\n let search = this;\n while (search !== undefined) {\n for (const d of search.getData().deferred) {\n if (d.getStr().toUpperCase() === name.toUpperCase()) {\n return new _identifier_1.Identifier(d, search.identifier.filename);\n }\n }\n search = search.getParent();\n }\n return undefined;\n }\n findClassDefinition(name) {\n let search = this;\n const upper = name.toUpperCase();\n while (search !== undefined) {\n const c = search.getData().cdefs[upper];\n if (c !== undefined) {\n return c;\n }\n search = search.getParent();\n }\n return undefined;\n }\n listClassDefinitions() {\n let search = this;\n const ret = [];\n while (search !== undefined) {\n ret.push(...Object.values(search.getData().cdefs));\n search = search.getParent();\n }\n return ret;\n }\n findFormDefinition(name) {\n let search = this;\n const upper = name.toUpperCase();\n while (search !== undefined) {\n for (const form of search.getData().forms) {\n if (form.getName().toUpperCase() === upper) {\n return form;\n }\n }\n search = search.getParent();\n }\n return undefined;\n }\n // todo, can be deleted, not called from anywhere?\n listFormDefinitions() {\n let search = this;\n const ret = [];\n while (search !== undefined) {\n for (const form of search.getData().forms) {\n ret.push(form);\n }\n search = search.getParent();\n }\n return ret;\n }\n // todo, optimize\n findInterfaceDefinition(name) {\n let search = this;\n while (search !== undefined) {\n for (const idef of search.getData().idefs) {\n if (idef.getName().toUpperCase() === name.toUpperCase()) {\n return idef;\n }\n }\n search = search.getParent();\n }\n return undefined;\n }\n findType(name) {\n let search = this;\n const upper = name.toUpperCase();\n while (search !== undefined) {\n const data = search.getData();\n if (data.types[upper]) {\n return data.types[upper];\n }\n search = search.getParent();\n }\n return undefined;\n }\n findExtraLikeType(name) {\n let search = this;\n const upper = name.toUpperCase();\n while (search !== undefined) {\n const data = search.getData();\n if (data.extraLikeTypes[upper]) {\n return data.extraLikeTypes[upper];\n }\n search = search.getParent();\n }\n return undefined;\n }\n findVariable(name) {\n let search = this;\n const upper = name.toUpperCase();\n while (search !== undefined) {\n const data = search.getData();\n if (data.vars[upper]) {\n return data.vars[upper];\n }\n search = search.getParent();\n }\n return undefined;\n }\n findWriteReference(pos) {\n for (const r of this.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.DataWriteReference\n && r.position.getStart().equals(pos)) {\n if (r.resolved instanceof _typed_identifier_1.TypedIdentifier) {\n return r.resolved;\n }\n }\n }\n return undefined;\n }\n findTableReference(pos) {\n for (const r of this.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.TableReference\n && r.position.getStart().equals(pos)\n && r.resolved) {\n return r.resolved.getName();\n }\n }\n return undefined;\n }\n findTableVoidReference(pos) {\n for (const r of this.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.TableVoidReference\n && r.position.getStart().equals(pos)) {\n return true;\n }\n }\n return false;\n }\n // this method is used in the transpiler\n findScopeForVariable(name) {\n let search = this;\n const upper = name.toUpperCase();\n while (search !== undefined) {\n if (search.getData().vars[upper] !== undefined) {\n return search.getIdentifier();\n }\n search = search.getParent();\n }\n return undefined;\n }\n}\nexports.SpaghettiScopeNode = SpaghettiScopeNode;\nclass SpaghettiScope {\n constructor(top) {\n this.node = top;\n }\n // list variable definitions across all nodes\n listDefinitions(filename) {\n const ret = [];\n for (const n of this.allNodes()) {\n if (n.getIdentifier().filename === filename) {\n const vars = n.getData().vars;\n for (const v in vars) {\n if (vars[v].getFilename() === filename) {\n ret.push({ name: v, identifier: vars[v] });\n }\n }\n }\n }\n return ret;\n }\n listReadPositions(filename) {\n const ret = [];\n for (const n of this.allNodes()) {\n if (n.getIdentifier().filename === filename) {\n for (const v of n.getData().references) {\n if (v.referenceType === _reference_1.ReferenceType.DataReadReference && v.position.getFilename() === filename) {\n ret.push(v.position);\n }\n }\n }\n }\n return ret;\n }\n listWritePositions(filename) {\n const ret = [];\n for (const n of this.allNodes()) {\n if (n.getIdentifier().filename === filename) {\n for (const v of n.getData().references) {\n if (v.referenceType === _reference_1.ReferenceType.DataWriteReference && v.position.getFilename() === filename) {\n ret.push(v.position);\n }\n }\n }\n }\n return ret;\n }\n lookupPosition(p, filename) {\n if (p === undefined || filename === undefined) {\n return undefined;\n }\n return this.lookupPositionTraverse(p, filename, this.node);\n }\n getFirstChild() {\n return this.node.getFirstChild();\n }\n getTop() {\n return this.node;\n }\n /////////////////////////////\n allNodes() {\n const ret = [];\n const stack = [this.node];\n while (stack.length > 0) {\n const current = stack.pop();\n ret.push(current);\n stack.push(...current.getChildren());\n }\n return ret;\n }\n lookupPositionTraverse(p, filename, node) {\n const coverage = node.calcCoverage();\n if (node.getIdentifier().filename === filename && p.isBetween(coverage.start, coverage.end) === false) {\n return undefined;\n }\n // possible optimization: binary search the nodes\n for (const c of node.getChildren()) {\n const result = this.lookupPositionTraverse(p, filename, c);\n if (result !== undefined) {\n return result;\n }\n }\n if (node.getIdentifier().filename === filename\n && p.isBetween(coverage.start, coverage.end)) {\n return node;\n }\n return undefined;\n }\n}\nexports.SpaghettiScope = SpaghettiScope;\n//# sourceMappingURL=spaghetti_scope.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/spaghetti_scope.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Add = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Add {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Add = Add;\n//# sourceMappingURL=add.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add_corresponding.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add_corresponding.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AddCorresponding = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass AddCorresponding {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.AddCorresponding = AddCorresponding;\n//# sourceMappingURL=add_corresponding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add_corresponding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/append.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/append.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Append = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\n// todo: issue error for short APPEND if the source is without header line\nclass Append {\n runSyntax(node, scope, filename) {\n let targetType = undefined;\n const target = node.findDirectExpression(Expressions.Target);\n if (target) {\n targetType = new target_1.Target().runSyntax(target, scope, filename);\n }\n const fsTarget = node.findExpressionAfterToken(\"ASSIGNING\");\n if (fsTarget && fsTarget.get() instanceof Expressions.FSTarget) {\n if (!(targetType instanceof basic_1.TableType) && !(targetType instanceof basic_1.VoidType)) {\n throw new Error(\"APPEND to non table type\");\n }\n const rowType = targetType instanceof basic_1.TableType ? targetType.getRowType() : targetType;\n new fstarget_1.FSTarget().runSyntax(fsTarget, scope, filename, rowType);\n }\n const dataTarget = node.findExpressionAfterToken(\"INTO\");\n if (dataTarget && node.concatTokens().toUpperCase().includes(\" REFERENCE INTO DATA(\")) {\n if (!(targetType instanceof basic_1.TableType) && !(targetType instanceof basic_1.VoidType)) {\n throw new Error(\"APPEND to non table type\");\n }\n const rowType = targetType instanceof basic_1.TableType ? targetType.getRowType() : targetType;\n new inline_data_1.InlineData().runSyntax(dataTarget, scope, filename, new basic_1.DataReference(rowType));\n }\n let source = node.findDirectExpression(Expressions.SimpleSource4);\n if (source === undefined) {\n source = node.findDirectExpression(Expressions.Source);\n }\n if (source) {\n if (targetType !== undefined\n && !(targetType instanceof basic_1.TableType)\n && dataTarget !== target\n && !(targetType instanceof basic_1.VoidType)) {\n throw new Error(\"Append, target not a table type\");\n }\n let rowType = undefined;\n if (targetType instanceof basic_1.TableType) {\n rowType = targetType.getRowType();\n }\n else if (targetType instanceof basic_1.VoidType) {\n rowType = targetType;\n }\n new source_1.Source().runSyntax(source, scope, filename, rowType);\n }\n const from = node.findExpressionAfterToken(\"FROM\");\n if (from && from.get() instanceof Expressions.Source) {\n new source_1.Source().runSyntax(from, scope, filename);\n }\n const to = node.findExpressionAfterToken(\"TO\");\n if (to && to.get() instanceof Expressions.Source) {\n new source_1.Source().runSyntax(to, scope, filename);\n }\n }\n}\nexports.Append = Append;\n//# sourceMappingURL=append.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/append.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assert.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assert.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Assert = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst cond_1 = __webpack_require__(/*! ../expressions/cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nclass Assert {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Assert = Assert;\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assert.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assign.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assign.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Assign = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass Assign {\n runSyntax(node, scope, filename) {\n var _a, _b, _c;\n const sources = ((_a = node.findDirectExpression(Expressions.AssignSource)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.Source)) || [];\n const theSource = sources[sources.length - 1];\n let sourceType = new source_1.Source().runSyntax(theSource, scope, filename);\n if (sourceType === undefined || ((_b = node.findDirectExpression(Expressions.AssignSource)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.Dynamic))) {\n sourceType = new basic_1.AnyType();\n }\n for (const d of ((_c = node.findDirectExpression(Expressions.AssignSource)) === null || _c === void 0 ? void 0 : _c.findAllExpressions(Expressions.Dynamic)) || []) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n const target = node.findDirectExpression(Expressions.FSTarget);\n if (target) {\n new fstarget_1.FSTarget().runSyntax(target, scope, filename, sourceType);\n }\n for (const s of node.findAllExpressions(Expressions.Source)) {\n if (s === theSource) {\n continue;\n }\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Assign = Assign;\n//# sourceMappingURL=assign.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assign.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/authority_check.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/authority_check.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AuthorityCheck = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass AuthorityCheck {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.AuthorityCheck = AuthorityCheck;\n//# sourceMappingURL=authority_check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/authority_check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Call = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_call_chain_1 = __webpack_require__(/*! ../expressions/method_call_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_chain.js\");\nconst method_source_1 = __webpack_require__(/*! ../expressions/method_source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_source.js\");\nconst method_call_body_1 = __webpack_require__(/*! ../expressions/method_call_body */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_call_body.js\");\nconst void_type_1 = __webpack_require__(/*! ../../types/basic/void_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js\");\nclass Call {\n runSyntax(node, scope, filename) {\n const chain = node.findDirectExpression(Expressions.MethodCallChain);\n if (chain) {\n new method_call_chain_1.MethodCallChain().runSyntax(chain, scope, filename);\n return;\n }\n const methodSource = node.findDirectExpression(Expressions.MethodSource);\n if (methodSource === undefined) {\n throw new Error(\"Call, child MethodSource not found\");\n }\n const methodDef = new method_source_1.MethodSource().runSyntax(methodSource, scope, filename);\n const body = node.findDirectExpression(Expressions.MethodCallBody);\n if (body) {\n // todo, resolve the method definition above and pass, if possible, in case of dynamic pass void\n new method_call_body_1.MethodCallBody().runSyntax(body, scope, filename, methodDef || new void_type_1.VoidType(\"CallTODO\"));\n }\n }\n}\nexports.Call = Call;\n//# sourceMappingURL=call.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_badi.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_badi.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallBadi = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nclass CallBadi {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findAllExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n for (const d of node.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n }\n}\nexports.CallBadi = CallBadi;\n//# sourceMappingURL=call_badi.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_badi.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_function.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_function.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallFunction = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst field_chain_1 = __webpack_require__(/*! ../expressions/field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallFunction {\n runSyntax(node, scope, filename) {\n // todo, lots of work here, similar to receive.ts\n const name = node.findFirstExpression(Expressions.FunctionName);\n const chain = name === null || name === void 0 ? void 0 : name.findFirstExpression(Expressions.FieldChain);\n if (chain) {\n new field_chain_1.FieldChain().runSyntax(chain, scope, filename, _reference_1.ReferenceType.DataReadReference);\n }\n else if (scope.getVersion() === version_1.Version.Cloud\n && node.findDirectExpression(Expressions.Destination) === undefined) {\n const functionName = name === null || name === void 0 ? void 0 : name.concatTokens().replace(/'/g, \"\");\n if (scope.findFunctionModule(functionName) === undefined) {\n throw new Error(`Function module \"${functionName}\" not found/released`);\n }\n }\n // just recurse\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findAllExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.SimpleSource2)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.CallFunction = CallFunction;\n//# sourceMappingURL=call_function.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_function.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_kernel.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_kernel.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallKernel = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass CallKernel {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.CallKernel = CallKernel;\n//# sourceMappingURL=call_kernel.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_kernel.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transaction.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transaction.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallTransaction = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass CallTransaction {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.CallTransaction = CallTransaction;\n//# sourceMappingURL=call_transaction.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transaction.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transformation.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transformation.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallTransformation = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nclass CallTransformation {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const d of node.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n for (const t of node.findAllExpressions(Expressions.Target)) {\n const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.XStringType());\n }\n else {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n }\n}\nexports.CallTransformation = CallTransformation;\n//# sourceMappingURL=call_transformation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transformation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/case.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/case.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Case = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass Case {\n runSyntax(node, scope, filename) {\n // just recurse\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Case = Case;\n//# sourceMappingURL=case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/catch.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/catch.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Catch = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Catch {\n runSyntax(node, scope, filename) {\n var _a, _b;\n const names = new Set();\n for (const c of node.findDirectExpressions(Expressions.ClassName)) {\n const token = c.getFirstToken();\n const className = token.getStr().toUpperCase();\n const found = scope.existsObject(className);\n if (found.found === true && found.id) {\n scope.addReference(token, found.id, found.type, filename);\n }\n else if (scope.getDDIC().inErrorNamespace(className) === false) {\n const extra = { ooName: className, ooType: \"Void\" };\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, extra);\n }\n else {\n throw new Error(\"CATCH, unknown class \" + className);\n }\n if (names.has(className)) {\n throw new Error(\"Duplicate class name in CATCH: \" + className);\n }\n names.add(className);\n }\n const target = node.findDirectExpression(Expressions.Target);\n const firstClassName = (_a = node.findDirectExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr();\n if (target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData)) {\n const token = (_b = target.findFirstExpression(Expressions.TargetField)) === null || _b === void 0 ? void 0 : _b.getFirstToken();\n const found = scope.existsObject(firstClassName);\n if (token && found.found === true && firstClassName && found.id) {\n const identifier = new _typed_identifier_1.TypedIdentifier(token, filename, new basic_1.ObjectReferenceType(found.id), [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n else if (token && scope.getDDIC().inErrorNamespace(firstClassName) === false) {\n const identifier = new _typed_identifier_1.TypedIdentifier(token, filename, new basic_1.VoidType(firstClassName), [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n else if (token) {\n const message = \"Catch, could not determine type for \\\"\" + token.getStr() + \"\\\"\";\n const identifier = new _typed_identifier_1.TypedIdentifier(token, filename, new unknown_type_1.UnknownType(message), [\"inline\" /* IdentifierMeta.InlineDefinition */]);\n scope.addIdentifier(identifier);\n scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n }\n else if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n }\n}\nexports.Catch = Catch;\n//# sourceMappingURL=catch.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/catch.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/check.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/check.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Check = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst cond_1 = __webpack_require__(/*! ../expressions/cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nclass Check {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Check = Check;\n//# sourceMappingURL=check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_data.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_data.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassData = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst data_definition_1 = __webpack_require__(/*! ../expressions/data_definition */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/data_definition.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nclass ClassData {\n runSyntax(node, scope, filename) {\n const dd = node.findFirstExpression(Expressions.DataDefinition);\n if (dd) {\n const found = new data_definition_1.DataDefinition().runSyntax(dd, scope, filename);\n if (found === undefined) {\n return undefined;\n }\n const meta = [...found.getMeta(), \"static\" /* IdentifierMeta.Static */];\n return new _typed_identifier_1.TypedIdentifier(found.getToken(), filename, found.getType(), meta, found.getValue());\n }\n const fallback = node.findFirstExpression(Expressions.NamespaceSimpleName);\n if (fallback) {\n return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), filename, new unknown_type_1.UnknownType(\"class data, fallback\"));\n }\n return undefined;\n }\n}\nexports.ClassData = ClassData;\n//# sourceMappingURL=class_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_deferred.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_deferred.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDeferred = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ClassDeferred {\n runSyntax(node, scope, _filename) {\n var _a;\n const name = (_a = node.findFirstExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n scope.addDeferred(name);\n }\n}\nexports.ClassDeferred = ClassDeferred;\n//# sourceMappingURL=class_deferred.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_deferred.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_implementation.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_implementation.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassImplementation = void 0;\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst position_1 = __webpack_require__(/*! ../../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _builtin_1 = __webpack_require__(/*! ../_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nclass ClassImplementation {\n runSyntax(node, scope, filename) {\n const helper = new _object_oriented_1.ObjectOriented(scope);\n const className = helper.findClassName(node);\n scope.push(_scope_type_1.ScopeType.ClassImplementation, className, node.getFirstToken().getStart(), filename);\n const classDefinition = scope.findClassDefinition(className);\n if (classDefinition === undefined) {\n throw new Error(\"Class definition for \\\"\" + className + \"\\\" not found\");\n }\n for (const t of classDefinition.getTypeDefinitions().getAll()) {\n scope.addType(t.type);\n }\n const sup = scope.findClassDefinition(classDefinition.getSuperClass());\n if (sup) {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), \"super\"), _builtin_1.BuiltIn.filename, new basic_1.ObjectReferenceType(sup)));\n }\n else {\n // todo: instead of the void type, do proper typing, ie. only empty constructor method\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), \"super\"), _builtin_1.BuiltIn.filename, new basic_1.VoidType(\"noSuper\")));\n }\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), \"me\"), _builtin_1.BuiltIn.filename, new basic_1.ObjectReferenceType(classDefinition)));\n helper.addAliasedAttributes(classDefinition); // todo, this is not correct, take care of instance vs static\n const classAttributes = classDefinition.getAttributes();\n scope.addList(classAttributes.getConstants());\n scope.addList(classAttributes.getStatic());\n for (const i of classAttributes.getInstance()) {\n scope.addExtraLikeType(i);\n }\n helper.fromSuperClassesAndInterfaces(classDefinition);\n }\n}\nexports.ClassImplementation = ClassImplementation;\n//# sourceMappingURL=class_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_local_friends.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_local_friends.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassLocalFriends = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass ClassLocalFriends {\n runSyntax(node, scope, filename) {\n const classNames = node.findAllExpressions(Expressions.ClassName);\n const found = classNames[0];\n if (found) {\n const token = found.getFirstToken();\n const name = token.getStr();\n if (scope.getParentObj().getType() === \"CLAS\"\n && name.toUpperCase() !== scope.getParentObj().getName().toUpperCase()) {\n throw new Error(`Befriending must be ` + scope.getParentObj().getName().toUpperCase());\n }\n const def = scope.findClassDefinition(name);\n if (def) {\n scope.addReference(token, def, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n else {\n throw new Error(`Class ${name.toUpperCase()} not found`);\n }\n }\n for (let i = 1; i < classNames.length; i++) {\n const className = classNames[i].concatTokens();\n // make sure to check also DEFINITION DEFERRED\n const found = scope.existsObject(className);\n if (found.found === false) {\n throw new Error(`Class ${className.toUpperCase()} not found`);\n }\n }\n }\n}\nexports.ClassLocalFriends = ClassLocalFriends;\n//# sourceMappingURL=class_local_friends.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_local_friends.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/clear.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/clear.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Clear = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Clear {\n runSyntax(node, scope, filename) {\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Clear = Clear;\n//# sourceMappingURL=clear.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/clear.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/close_dataset.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/close_dataset.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CloseDataset = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass CloseDataset {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.CloseDataset = CloseDataset;\n//# sourceMappingURL=close_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/close_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/collect.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/collect.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Collect = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Collect {\n runSyntax(node, scope, filename) {\n const source = node.findDirectExpression(Expressions.Source);\n if (source) {\n new source_1.Source().runSyntax(source, scope, filename);\n }\n const target = node.findDirectExpression(Expressions.Target);\n if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n const fs = node.findDirectExpression(Expressions.FSTarget);\n if (fs) {\n new fstarget_1.FSTarget().runSyntax(fs, scope, filename, undefined);\n }\n }\n}\nexports.Collect = Collect;\n//# sourceMappingURL=collect.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/collect.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/commit_entities.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/commit_entities.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CommitEntities = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass CommitEntities {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.VoidType(\"CommitEntities\"));\n }\n else {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n }\n}\nexports.CommitEntities = CommitEntities;\n//# sourceMappingURL=commit_entities.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/commit_entities.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/concatenate.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/concatenate.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Concatenate = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass Concatenate {\n runSyntax(node, scope, filename) {\n const byteMode = node.findDirectTokenByText(\"BYTE\") !== undefined;\n let linesMode = node.findDirectTokenByText(\"LINES\") !== undefined;\n const target = node.findFirstExpression(Expressions.Target);\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n if (byteMode) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.XStringType());\n }\n else {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, basic_1.StringType.get());\n }\n }\n else if (target) {\n const type = new target_1.Target().runSyntax(target, scope, filename);\n const compatible = byteMode ? new _type_utils_1.TypeUtils(scope).isHexLike(type) : new _type_utils_1.TypeUtils(scope).isCharLike(type);\n if (compatible === false) {\n throw new Error(\"Target type not compatible\");\n }\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n const type = new source_1.Source().runSyntax(s, scope, filename);\n if (linesMode) {\n if (!(type instanceof basic_1.UnknownType) && !(type instanceof basic_1.VoidType) && !(type instanceof basic_1.TableType)) {\n throw new Error(\"Source must be an internal table\");\n }\n linesMode = false;\n continue;\n }\n const compatible = byteMode ? new _type_utils_1.TypeUtils(scope).isHexLike(type) : new _type_utils_1.TypeUtils(scope).isCharLike(type);\n if (compatible === false) {\n throw new Error(\"Source type not compatible\");\n }\n }\n }\n}\nexports.Concatenate = Concatenate;\n//# sourceMappingURL=concatenate.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/concatenate.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/condense.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/condense.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Condense = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Condense {\n runSyntax(node, scope, filename) {\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Condense = Condense;\n//# sourceMappingURL=condense.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/condense.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/constant.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/constant.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Constant = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass Constant {\n runSyntax(node, scope, filename) {\n const basic = new basic_types_1.BasicTypes(filename, scope);\n const found = basic.simpleType(node);\n if (found) {\n const val = basic.findValue(node);\n const meta = [\"read_only\" /* IdentifierMeta.ReadOnly */, \"static\" /* IdentifierMeta.Static */];\n return new _typed_identifier_1.TypedIdentifier(found.getToken(), filename, found.getType(), meta, val);\n }\n const fallback = node.findFirstExpression(Expressions.DefinitionName);\n if (fallback) {\n return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), filename, new basic_1.UnknownType(\"constant, fallback\"));\n }\n throw new Error(\"Statement Constant: unexpected structure\");\n }\n}\nexports.Constant = Constant;\n//# sourceMappingURL=constant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/constant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/controls.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/controls.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Controls = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass Controls {\n runSyntax(node, scope, filename) {\n const name = node.findDirectExpression(Expressions.NamespaceSimpleName);\n const token = name === null || name === void 0 ? void 0 : name.getFirstToken();\n if (node.findDirectTokenByText(\"TABSTRIP\") && token) {\n const type = new basic_1.StructureType([{ name: \"ACTIVETAB\", type: new basic_1.CharacterType(132) }]);\n const id = new _typed_identifier_1.TypedIdentifier(token, filename, type);\n scope.addIdentifier(id);\n }\n if (node.findDirectTokenByText(\"TABLEVIEW\") && token) {\n const cols = new basic_1.StructureType([\n { name: \"SCREEN\", type: new basic_1.CharacterType(1) },\n { name: \"INDEX\", type: basic_1.IntegerType.get() },\n { name: \"SELECTED\", type: new basic_1.CharacterType(1) },\n { name: \"VISLENGTH\", type: basic_1.IntegerType.get() },\n { name: \"INVISIBLE\", type: new basic_1.CharacterType(1) },\n ]);\n const type = new basic_1.StructureType([\n { name: \"FIXED_COLS\", type: new basic_1.CharacterType(132) },\n { name: \"LINES\", type: basic_1.IntegerType.get() },\n { name: \"TOP_LINE\", type: basic_1.IntegerType.get() },\n { name: \"CURRENT_LINE\", type: basic_1.IntegerType.get() },\n { name: \"LEFT_COL\", type: basic_1.IntegerType.get() },\n { name: \"LINE_SEL_MODE\", type: new basic_1.CharacterType(1) },\n { name: \"COL_SEL_MODE\", type: new basic_1.CharacterType(1) },\n { name: \"LINE_SELECTOR\", type: new basic_1.CharacterType(1) },\n { name: \"H_GRID\", type: new basic_1.CharacterType(1) },\n { name: \"V_GRID\", type: new basic_1.CharacterType(1) },\n { name: \"COLS\", type: new basic_1.TableType(cols, { withHeader: false, keyType: basic_1.TableKeyType.default }) },\n { name: \"INVISIBLE\", type: new basic_1.CharacterType(1) },\n ]);\n const id = new _typed_identifier_1.TypedIdentifier(token, filename, type);\n scope.addIdentifier(id);\n }\n }\n}\nexports.Controls = Controls;\n//# sourceMappingURL=controls.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/controls.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/convert.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/convert.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Convert = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Convert {\n runSyntax(node, scope, filename) {\n // todo, the source must be of a specific type\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n const timeTarget = node.findExpressionAfterToken(\"TIME\");\n if ((timeTarget === null || timeTarget === void 0 ? void 0 : timeTarget.get()) instanceof Expressions.Target) {\n const inline = timeTarget === null || timeTarget === void 0 ? void 0 : timeTarget.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.TimeType());\n }\n else {\n new target_1.Target().runSyntax(timeTarget, scope, filename);\n }\n }\n const dateTarget = node.findExpressionAfterToken(\"DATE\");\n if ((dateTarget === null || dateTarget === void 0 ? void 0 : dateTarget.get()) instanceof Expressions.Target) {\n const inline = dateTarget === null || dateTarget === void 0 ? void 0 : dateTarget.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.DateType());\n }\n else {\n new target_1.Target().runSyntax(dateTarget, scope, filename);\n }\n }\n const stampTarget = node.findExpressionAfterToken(\"STAMP\");\n if ((stampTarget === null || stampTarget === void 0 ? void 0 : stampTarget.get()) instanceof Expressions.Target) {\n const inline = stampTarget === null || stampTarget === void 0 ? void 0 : stampTarget.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.PackedType(8, 4));\n }\n else {\n new target_1.Target().runSyntax(stampTarget, scope, filename);\n }\n }\n }\n}\nexports.Convert = Convert;\n//# sourceMappingURL=convert.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/convert.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_data.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_data.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CreateData = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nclass CreateData {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(t, scope, filename);\n }\n const type = node.findDirectExpression(Expressions.TypeName);\n if (type) {\n new basic_types_1.BasicTypes(filename, scope).resolveTypeName(type);\n }\n }\n}\nexports.CreateData = CreateData;\n//# sourceMappingURL=create_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_object.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_object.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CreateObject = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst types_1 = __webpack_require__(/*! ../../types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nclass CreateObject {\n runSyntax(node, scope, filename) {\n let cdef = undefined;\n // CREATE OBJECT, TYPE\n const type = node.findExpressionAfterToken(\"TYPE\");\n if (type && type.get() instanceof Expressions.ClassName) {\n const token = type.getFirstToken();\n const name = token.getStr();\n cdef = scope.findClassDefinition(name);\n if (cdef) {\n scope.addReference(token, cdef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n if (cdef.isAbstract() === true) {\n throw new Error(cdef.getName() + \" is abstract, cannot be instantiated\");\n }\n }\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, { ooName: name, ooType: \"CLAS\" });\n }\n else {\n throw new Error(\"TYPE \\\"\" + name + \"\\\" not found\");\n }\n }\n // just recurse\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n let first = true;\n for (const t of node.findAllExpressions(Expressions.Target)) {\n const found = new target_1.Target().runSyntax(t, scope, filename);\n if (first === true) {\n first = false;\n if (found instanceof basic_1.VoidType) {\n continue;\n }\n else if (found instanceof basic_1.UnknownType) {\n throw new Error(\"Target type unknown, \" + t.concatTokens());\n }\n else if (!(found instanceof basic_1.ObjectReferenceType)\n && !(found instanceof basic_1.AnyType)\n && !(found instanceof basic_1.GenericObjectReferenceType)) {\n throw new Error(\"Target must be an object reference, \" + t.concatTokens());\n }\n else if (found instanceof basic_1.GenericObjectReferenceType && type === undefined) {\n throw new Error(\"Generic type, cannot be instantiated\");\n }\n else if (found instanceof basic_1.ObjectReferenceType) {\n const id = found.getIdentifier();\n if (id instanceof types_1.InterfaceDefinition && type === undefined) {\n throw new Error(\"Interface reference, cannot be instantiated\");\n }\n else if (found instanceof basic_1.ObjectReferenceType\n && type === undefined\n && scope.findInterfaceDefinition(found.getQualifiedName())) {\n throw new Error(\"Interface reference, cannot be instantiated\");\n }\n else if (id instanceof types_1.ClassDefinition && cdef === undefined) {\n cdef = id;\n }\n if (type === undefined && id instanceof types_1.ClassDefinition && id.isAbstract() === true) {\n throw new Error(id.getName() + \" is abstract, cannot be instantiated\");\n }\n }\n }\n }\n for (const t of node.findDirectExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(t, scope, filename);\n }\n this.validateParameters(cdef, node, scope);\n }\n validateParameters(cdef, node, scope) {\n var _a, _b, _c;\n if (cdef === undefined) {\n return;\n }\n const methodDef = new _object_oriented_1.ObjectOriented(scope).searchMethodName(cdef, \"CONSTRUCTOR\");\n const methodParameters = (_a = methodDef.method) === null || _a === void 0 ? void 0 : _a.getParameters();\n const allImporting = (methodParameters === null || methodParameters === void 0 ? void 0 : methodParameters.getImporting()) || [];\n const requiredImporting = new Set(methodParameters === null || methodParameters === void 0 ? void 0 : methodParameters.getRequiredParameters().map(i => i.getName().toUpperCase()));\n // todo, validate types\n for (const p of ((_b = node.findDirectExpression(Expressions.ParameterListS)) === null || _b === void 0 ? void 0 : _b.findAllExpressions(Expressions.ParameterS)) || []) {\n const name = (_c = p.findDirectExpression(Expressions.ParameterName)) === null || _c === void 0 ? void 0 : _c.concatTokens().toUpperCase();\n if (name === undefined) {\n continue;\n }\n if ((allImporting === null || allImporting === void 0 ? void 0 : allImporting.some(p => p.getName().toUpperCase() === name)) === false) {\n throw new Error(`constructor parameter \"${name}\" does not exist`);\n }\n requiredImporting.delete(name);\n }\n for (const r of requiredImporting.values()) {\n throw new Error(`constructor parameter \"${r}\" must be supplied`);\n }\n }\n}\nexports.CreateObject = CreateObject;\n//# sourceMappingURL=create_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/data.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/data.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Data = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst data_definition_1 = __webpack_require__(/*! ../expressions/data_definition */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/data_definition.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nclass Data {\n runSyntax(node, scope, filename) {\n const name = node.findFirstExpression(Expressions.DefinitionName);\n const dd = node.findFirstExpression(Expressions.DataDefinition);\n if (dd) {\n const id = new data_definition_1.DataDefinition().runSyntax(dd, scope, filename);\n if ((id === null || id === void 0 ? void 0 : id.getType().isGeneric()) === true\n && (id === null || id === void 0 ? void 0 : id.getType().containsVoid()) === false) {\n throw new Error(\"DATA definition cannot be generic, \" + name);\n }\n return id;\n }\n if (name) {\n return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new unknown_type_1.UnknownType(\"data, fallback\"));\n }\n return undefined;\n }\n}\nexports.Data = Data;\n//# sourceMappingURL=data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_cluster.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_cluster.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteCluster = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass DeleteCluster {\n runSyntax(node, scope, filename) {\n var _a;\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n const databaseName = node.findExpressionAfterToken(\"DATABASE\");\n if (databaseName) {\n const found = (_a = scope.getDDIC()) === null || _a === void 0 ? void 0 : _a.lookupTableOrView(databaseName.concatTokens());\n if (found) {\n scope.getDDICReferences().addUsing(scope.getParentObj(), { object: found.object });\n }\n }\n }\n}\nexports.DeleteCluster = DeleteCluster;\n//# sourceMappingURL=delete_cluster.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_cluster.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_database.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_database.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteDatabase = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst database_table_1 = __webpack_require__(/*! ../expressions/database_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js\");\nclass DeleteDatabase {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const d of node.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n const dbtab = node.findFirstExpression(Expressions.DatabaseTable);\n if (dbtab !== undefined) {\n new database_table_1.DatabaseTable().runSyntax(dbtab, scope, filename);\n }\n }\n}\nexports.DeleteDatabase = DeleteDatabase;\n//# sourceMappingURL=delete_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_internal.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_internal.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteInternal = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst component_compare_1 = __webpack_require__(/*! ../expressions/component_compare */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare.js\");\nconst component_cond_1 = __webpack_require__(/*! ../expressions/component_cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_cond.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass DeleteInternal {\n runSyntax(node, scope, filename) {\n var _a;\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n let targetType = undefined;\n const target = node.findDirectExpression(Expressions.Target);\n if (target) {\n let tabl = undefined;\n if (node.getChildren().length === 5 && node.getChildren()[2].concatTokens().toUpperCase() === \"FROM\") {\n // it might be a database table\n tabl = (_a = scope.getDDIC()) === null || _a === void 0 ? void 0 : _a.lookupTableOrView(target.concatTokens());\n if (tabl) {\n scope.getDDICReferences().addUsing(scope.getParentObj(), { object: tabl.object });\n }\n }\n if (tabl === undefined) {\n targetType = new target_1.Target().runSyntax(target, scope, filename);\n if (targetType instanceof basic_1.TableType) {\n targetType = targetType.getRowType();\n }\n }\n }\n for (const t of node.findDirectExpressions(Expressions.ComponentCompare)) {\n new component_compare_1.ComponentCompare().runSyntax(t, scope, filename, targetType);\n }\n for (const t of node.findDirectExpressions(Expressions.ComponentCond)) {\n new component_cond_1.ComponentCond().runSyntax(t, scope, filename, targetType);\n }\n }\n}\nexports.DeleteInternal = DeleteInternal;\n//# sourceMappingURL=delete_internal.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_internal.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_report.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_report.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DeleteReport = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass DeleteReport {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.DeleteReport = DeleteReport;\n//# sourceMappingURL=delete_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/describe.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/describe.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Describe = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst field_chain_1 = __webpack_require__(/*! ../expressions/field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Describe {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.FieldChain)) {\n new field_chain_1.FieldChain().runSyntax(s, scope, filename, _reference_1.ReferenceType.DataReadReference);\n }\n const linesTarget = node.findExpressionAfterToken(\"LINES\");\n if ((linesTarget === null || linesTarget === void 0 ? void 0 : linesTarget.get()) instanceof Expressions.Target) {\n const inline = linesTarget === null || linesTarget === void 0 ? void 0 : linesTarget.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, basic_1.IntegerType.get());\n }\n else {\n new target_1.Target().runSyntax(linesTarget, scope, filename);\n }\n }\n const typeTarget = node.findExpressionAfterToken(\"TYPE\");\n if ((typeTarget === null || typeTarget === void 0 ? void 0 : typeTarget.get()) instanceof Expressions.Target) {\n const inline = typeTarget === null || typeTarget === void 0 ? void 0 : typeTarget.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.CharacterType(1));\n }\n else {\n new target_1.Target().runSyntax(typeTarget, scope, filename);\n }\n }\n const lengthTarget = node.findExpressionAfterToken(\"LENGTH\");\n if ((lengthTarget === null || lengthTarget === void 0 ? void 0 : lengthTarget.get()) instanceof Expressions.Target) {\n const inline = lengthTarget === null || lengthTarget === void 0 ? void 0 : lengthTarget.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, basic_1.IntegerType.get());\n }\n else {\n new target_1.Target().runSyntax(lengthTarget, scope, filename);\n }\n }\n const componentsTarget = node.findExpressionAfterToken(\"COMPONENTS\");\n if ((componentsTarget === null || componentsTarget === void 0 ? void 0 : componentsTarget.get()) instanceof Expressions.Target) {\n const inline = componentsTarget === null || componentsTarget === void 0 ? void 0 : componentsTarget.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, basic_1.IntegerType.get());\n }\n else {\n new target_1.Target().runSyntax(componentsTarget, scope, filename);\n }\n }\n }\n}\nexports.Describe = Describe;\n//# sourceMappingURL=describe.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/describe.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/divide.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/divide.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Divide = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Divide {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Divide = Divide;\n//# sourceMappingURL=divide.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/divide.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/do.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/do.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Do = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass Do {\n runSyntax(node, scope, filename) {\n // just recurse\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Do = Do;\n//# sourceMappingURL=do.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/do.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/else_if.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/else_if.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ElseIf = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst cond_1 = __webpack_require__(/*! ../expressions/cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nclass ElseIf {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(s, scope, filename);\n }\n }\n}\nexports.ElseIf = ElseIf;\n//# sourceMappingURL=else_if.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/else_if.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/export.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/export.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Export = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Export {\n runSyntax(node, scope, filename) {\n var _a;\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n const databaseName = node.findExpressionAfterToken(\"DATABASE\");\n if (databaseName) {\n const found = (_a = scope.getDDIC()) === null || _a === void 0 ? void 0 : _a.lookupTableOrView(databaseName.concatTokens());\n if (found) {\n scope.getDDICReferences().addUsing(scope.getParentObj(), { object: found.object });\n }\n }\n }\n}\nexports.Export = Export;\n//# sourceMappingURL=export.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/export.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/fieldsymbol.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/fieldsymbol.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldSymbol = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nclass FieldSymbol {\n runSyntax(node, scope, filename) {\n var _a;\n const fsname = (_a = node.findFirstExpression(Expressions.FieldSymbol)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const bfound = new basic_types_1.BasicTypes(filename, scope).parseType(node);\n if (bfound && fsname) {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(fsname, filename, bfound));\n return;\n }\n if (fsname) {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(fsname, filename, new unknown_type_1.UnknownType(\"Fieldsymbol, fallback\")));\n }\n }\n}\nexports.FieldSymbol = FieldSymbol;\n//# sourceMappingURL=fieldsymbol.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/fieldsymbol.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/find.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/find.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Find = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Find {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n const rfound = node.findExpressionAfterToken(\"RESULTS\");\n if (rfound && rfound.get() instanceof Expressions.Target) {\n const sub = new basic_1.StructureType([\n { name: \"OFFSET\", type: basic_1.IntegerType.get() },\n { name: \"LENGTH\", type: basic_1.IntegerType.get() }\n ], \"SUBMATCH_RESULT\", \"SUBMATCH_RESULT\");\n const type = new basic_1.StructureType([\n { name: \"LINE\", type: basic_1.IntegerType.get() },\n { name: \"OFFSET\", type: basic_1.IntegerType.get() },\n { name: \"LENGTH\", type: basic_1.IntegerType.get() },\n { name: \"SUBMATCHES\", type: new basic_1.TableType(sub, { withHeader: false, keyType: basic_1.TableKeyType.default }) },\n ], \"MATCH_RESULT\", \"MATCH_RESULT\");\n if (node.concatTokens().toUpperCase().startsWith(\"FIND FIRST\")) {\n this.inline(rfound, scope, filename, type);\n }\n else {\n this.inline(rfound, scope, filename, new basic_1.TableType(type, { withHeader: false, keyType: basic_1.TableKeyType.default }, \"MATCH_RESULT_TAB\"));\n }\n }\n const ofound = node.findExpressionsAfterToken(\"OFFSET\");\n for (const o of ofound) {\n if (o.get() instanceof Expressions.Target) {\n this.inline(o, scope, filename, basic_1.IntegerType.get());\n }\n }\n const lfound = node.findExpressionAfterToken(\"LINE\");\n if (lfound && lfound.get() instanceof Expressions.Target) {\n this.inline(lfound, scope, filename, basic_1.IntegerType.get());\n }\n const cfound = node.findExpressionAfterToken(\"COUNT\");\n if (cfound && cfound.get() instanceof Expressions.Target) {\n this.inline(cfound, scope, filename, basic_1.IntegerType.get());\n }\n const lnfound = node.findExpressionAfterToken(\"LENGTH\");\n if (lnfound && lnfound.get() instanceof Expressions.Target) {\n this.inline(lnfound, scope, filename, basic_1.IntegerType.get());\n }\n if (node.findDirectTokenByText(\"SUBMATCHES\")) {\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n if (t === rfound || t === lfound || t === cfound || t === lnfound) {\n continue;\n }\n else if (ofound.indexOf(t) >= 0) {\n continue;\n }\n const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, basic_1.StringType.get());\n }\n else {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n }\n }\n /////////////////////\n inline(node, scope, filename, type) {\n const inline = node.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, type);\n }\n else {\n new target_1.Target().runSyntax(node, scope, filename);\n }\n }\n}\nexports.Find = Find;\n//# sourceMappingURL=find.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/find.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/form.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/form.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Form = void 0;\nconst form_definition_1 = __webpack_require__(/*! ../../types/form_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/form_definition.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst expressions_1 = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass Form {\n runSyntax(node, scope, filename) {\n var _a;\n const name = (_a = node.findDirectExpression(expressions_1.FormName)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (name === undefined) {\n throw new Error(\"Form, could not find name\");\n }\n scope.push(_scope_type_1.ScopeType.Form, name, node.getFirstToken().getStart(), filename);\n const form = new form_definition_1.FormDefinition(node, filename, scope);\n scope.addList(form.getUsingParameters());\n scope.addList(form.getChangingParameters());\n scope.addList(form.getTablesParameters());\n }\n}\nexports.Form = Form;\n//# sourceMappingURL=form.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/form.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/format.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/format.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Format = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass Format {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Format = Format;\n//# sourceMappingURL=format.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/format.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_badi.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_badi.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetBadi = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nclass GetBadi {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n for (const d of node.findDirectExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n }\n}\nexports.GetBadi = GetBadi;\n//# sourceMappingURL=get_badi.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_badi.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_bit.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_bit.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetBit = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass GetBit {\n runSyntax(node, scope, filename) {\n let lastType = undefined;\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n lastType = new source_1.Source().runSyntax(s, scope, filename);\n }\n if (lastType && new _type_utils_1.TypeUtils(scope).isHexLike(lastType) === false) {\n throw new Error(\"Input must be byte-like\");\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(t, scope, filename, basic_1.IntegerType.get());\n }\n else {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n }\n}\nexports.GetBit = GetBit;\n//# sourceMappingURL=get_bit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_bit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_cursor.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_cursor.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetCursor = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass GetCursor {\n runSyntax(node, scope, filename) {\n for (const t of node.findAllExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.GetCursor = GetCursor;\n//# sourceMappingURL=get_cursor.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_cursor.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_locale.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_locale.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetLocale = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass GetLocale {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.GetLocale = GetLocale;\n//# sourceMappingURL=get_locale.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_locale.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_parameter.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_parameter.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetParameter = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass GetParameter {\n runSyntax(node, scope, filename) {\n const target = node.findDirectExpression(Expressions.Target);\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.CharacterType(40));\n }\n else if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.GetParameter = GetParameter;\n//# sourceMappingURL=get_parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_reference.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_reference.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetReference = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass GetReference {\n runSyntax(node, scope, filename) {\n const s = node.findDirectExpression(Expressions.Source);\n const type = new source_1.Source().runSyntax(s, scope, filename);\n const target = node.findDirectExpression(Expressions.Target);\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, type ? new basic_1.DataReference(type) : undefined);\n }\n else if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n }\n}\nexports.GetReference = GetReference;\n//# sourceMappingURL=get_reference.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_reference.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_run_time.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_run_time.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetRunTime = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass GetRunTime {\n runSyntax(node, scope, filename) {\n const target = node.findDirectExpression(Expressions.Target);\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, basic_1.IntegerType.get());\n }\n else if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n }\n}\nexports.GetRunTime = GetRunTime;\n//# sourceMappingURL=get_run_time.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_run_time.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_time.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_time.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GetTime = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass GetTime {\n runSyntax(node, scope, filename) {\n const target = node.findDirectExpression(Expressions.Target);\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.PackedType(8, 0));\n }\n else if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n }\n}\nexports.GetTime = GetTime;\n//# sourceMappingURL=get_time.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_time.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/if.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/if.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.If = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst cond_1 = __webpack_require__(/*! ../expressions/cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nclass If {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(s, scope, filename);\n }\n }\n}\nexports.If = If;\n//# sourceMappingURL=if.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/if.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Import = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Import {\n runSyntax(node, scope, filename) {\n var _a;\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n const databaseName = node.findExpressionAfterToken(\"DATABASE\");\n if (databaseName) {\n const found = (_a = scope.getDDIC()) === null || _a === void 0 ? void 0 : _a.lookupTableOrView(databaseName.concatTokens());\n if (found) {\n scope.getDDICReferences().addUsing(scope.getParentObj(), { object: found.object });\n }\n }\n }\n}\nexports.Import = Import;\n//# sourceMappingURL=import.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import_dynpro.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import_dynpro.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImportDynpro = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass ImportDynpro {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.ImportDynpro = ImportDynpro;\n//# sourceMappingURL=import_dynpro.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import_dynpro.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/include_type.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/include_type.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IncludeType = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nclass IncludeType {\n runSyntax(node, scope, filename) {\n var _a, _b;\n const components = [];\n const iname = node.findFirstExpression(Expressions.TypeName);\n if (iname === undefined) {\n throw new Error(\"IncludeType, unexpected node structure\");\n }\n const name = iname.getFirstToken().getStr();\n let ityp = new basic_types_1.BasicTypes(filename, scope).parseType(iname);\n const as = (_a = node.findExpressionAfterToken(\"AS\")) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (as && ityp instanceof basic_1.StructureType) {\n ityp = new basic_1.StructureType(ityp.getComponents().concat([{ name: as, type: ityp }]));\n }\n const suffix = (_b = node.findExpressionAfterToken(\"SUFFIX\")) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (suffix && ityp instanceof basic_1.StructureType) {\n const components = [];\n for (const c of ityp.getComponents()) {\n if (c.name === as) {\n components.push(c);\n continue;\n }\n components.push({\n name: c.name + suffix,\n type: c.type,\n });\n }\n ityp = new basic_1.StructureType(components);\n }\n if (ityp\n && ityp instanceof _typed_identifier_1.TypedIdentifier\n && ityp.getType() instanceof basic_1.StructureType) {\n const stru = ityp.getType();\n components.push(...stru.getComponents());\n }\n else if (ityp && ityp instanceof basic_1.StructureType) {\n components.push(...ityp.getComponents());\n }\n else if (ityp && ityp instanceof basic_1.VoidType) {\n return ityp;\n }\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\n return new basic_1.VoidType(name);\n }\n else {\n throw new Error(\"IncludeType, type not found \\\"\" + iname.concatTokens() + \"\\\"\");\n }\n return components;\n }\n}\nexports.IncludeType = IncludeType;\n//# sourceMappingURL=include_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/include_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_database.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_database.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertDatabase = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst database_table_1 = __webpack_require__(/*! ../expressions/database_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js\");\nclass InsertDatabase {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const d of node.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n const dbtab = node.findFirstExpression(Expressions.DatabaseTable);\n if (dbtab !== undefined) {\n new database_table_1.DatabaseTable().runSyntax(dbtab, scope, filename);\n }\n }\n}\nexports.InsertDatabase = InsertDatabase;\n//# sourceMappingURL=insert_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_field_group.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_field_group.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertFieldGroup = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass InsertFieldGroup {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SimpleSource1)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.InsertFieldGroup = InsertFieldGroup;\n//# sourceMappingURL=insert_field_group.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_field_group.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_internal.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_internal.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertInternal = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_fs_1 = __webpack_require__(/*! ../expressions/inline_fs */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_fs.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nclass InsertInternal {\n runSyntax(node, scope, filename) {\n let targetType;\n const t = node.findDirectExpression(Expressions.Target);\n if (t) {\n targetType = new target_1.Target().runSyntax(t, scope, filename);\n }\n if (targetType instanceof basic_1.TableType) {\n targetType = targetType.getRowType();\n }\n let source = node.findDirectExpression(Expressions.SimpleSource4);\n if (source === undefined) {\n source = node.findDirectExpression(Expressions.Source);\n }\n const sourceType = source ? new source_1.Source().runSyntax(source, scope, filename, targetType) : targetType;\n const afterAssigning = node.findExpressionAfterToken(\"ASSIGNING\");\n if ((afterAssigning === null || afterAssigning === void 0 ? void 0 : afterAssigning.get()) instanceof Expressions.FSTarget) {\n const inlinefs = afterAssigning === null || afterAssigning === void 0 ? void 0 : afterAssigning.findDirectExpression(Expressions.InlineFS);\n if (inlinefs) {\n new inline_fs_1.InlineFS().runSyntax(inlinefs, scope, filename, sourceType);\n }\n else {\n new fstarget_1.FSTarget().runSyntax(afterAssigning, scope, filename, sourceType);\n }\n }\n const afterInto = node.findExpressionAfterToken(\"INTO\");\n if ((afterInto === null || afterInto === void 0 ? void 0 : afterInto.get()) instanceof Expressions.Target && sourceType) {\n const inline = afterInto.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(afterInto, scope, filename, new basic_1.DataReference(sourceType));\n }\n else {\n new target_1.Target().runSyntax(afterInto, scope, filename);\n }\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n if (s === source) {\n continue;\n }\n new source_1.Source().runSyntax(s, scope, filename, targetType);\n }\n }\n}\nexports.InsertInternal = InsertInternal;\n//# sourceMappingURL=insert_internal.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_internal.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_report.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_report.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertReport = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass InsertReport {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.InsertReport = InsertReport;\n//# sourceMappingURL=insert_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_textpool.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_textpool.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InsertTextpool = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass InsertTextpool {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.InsertTextpool = InsertTextpool;\n//# sourceMappingURL=insert_textpool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_textpool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/interface_deferred.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/interface_deferred.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InterfaceDeferred = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass InterfaceDeferred {\n runSyntax(node, scope, _filename) {\n var _a;\n const name = (_a = node.findFirstExpression(Expressions.InterfaceName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n scope.addDeferred(name);\n }\n}\nexports.InterfaceDeferred = InterfaceDeferred;\n//# sourceMappingURL=interface_deferred.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/interface_deferred.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/log_point.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/log_point.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LogPoint = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass LogPoint {\n runSyntax(node, scope, filename) {\n // just recurse\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.LogPoint = LogPoint;\n//# sourceMappingURL=log_point.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/log_point.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Loop = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst inline_fs_1 = __webpack_require__(/*! ../expressions/inline_fs */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_fs.js\");\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst component_cond_1 = __webpack_require__(/*! ../expressions/component_cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_cond.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst loop_group_by_1 = __webpack_require__(/*! ../expressions/loop_group_by */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/loop_group_by.js\");\nclass Loop {\n runSyntax(node, scope, filename) {\n const loopTarget = node.findDirectExpression(Expressions.LoopTarget);\n let target = loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.findDirectExpression(Expressions.Target);\n const targetType = target ? new target_1.Target().runSyntax(target, scope, filename) : undefined;\n if (target === undefined) {\n target = node.findDirectExpression(Expressions.FSTarget);\n }\n const write = (loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.findDirectTokenByText(\"ASSIGNING\")) !== undefined;\n const sources = node.findDirectExpressions(Expressions.Source);\n let firstSource = node.findDirectExpression(Expressions.SimpleSource2);\n if (firstSource === undefined) {\n firstSource = sources[0];\n }\n let sourceType = firstSource ? new source_1.Source().runSyntax(firstSource, scope, filename, targetType, write) : undefined;\n let rowType = undefined;\n const concat = node.concatTokens().toUpperCase();\n if (sourceType === undefined) {\n throw new Error(\"No source type determined\");\n }\n else if (sourceType instanceof basic_1.UnknownType) {\n throw new Error(\"Loop, not a table type, \" + sourceType.getError());\n }\n else if (sourceType instanceof basic_1.TableType\n && target === undefined\n && sourceType.isWithHeader() === false\n && node.getChildren().length === 4) {\n throw new Error(\"Loop, no header line\");\n }\n else if (!(sourceType instanceof basic_1.TableType)\n && !(sourceType instanceof basic_1.AnyType)\n && !(sourceType instanceof basic_1.VoidType)\n && concat.startsWith(\"LOOP AT GROUP \") === false) {\n throw new Error(\"Loop, not a table type\");\n }\n else if (loopTarget === undefined\n && sourceType instanceof basic_1.TableType\n && sourceType.isWithHeader() === false) {\n throw new Error(\"Loop, no header\");\n }\n const targetConcat = loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.concatTokens().toUpperCase();\n if (sourceType instanceof basic_1.TableType) {\n rowType = sourceType.getRowType();\n sourceType = rowType;\n if (targetConcat === null || targetConcat === void 0 ? void 0 : targetConcat.startsWith(\"REFERENCE INTO \")) {\n sourceType = new basic_1.DataReference(sourceType);\n }\n }\n if (targetConcat\n && targetConcat.startsWith(\"TRANSPORTING \")\n && node.findDirectTokenByText(\"WHERE\") === undefined) {\n throw new Error(\"Loop, TRANSPORTING NO FIELDS only with WHERE\");\n }\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, sourceType);\n }\n for (const s of sources) {\n if (s === firstSource) {\n continue;\n }\n new source_1.Source().runSyntax(s, scope, filename);\n }\n const inlinefs = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineFS);\n if (inlinefs) {\n new inline_fs_1.InlineFS().runSyntax(inlinefs, scope, filename, sourceType);\n }\n else {\n const fstarget = loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.findDirectExpression(Expressions.FSTarget);\n if (fstarget) {\n new fstarget_1.FSTarget().runSyntax(fstarget, scope, filename, sourceType);\n }\n }\n for (const t of node.findDirectExpressions(Expressions.ComponentCond)) {\n new component_cond_1.ComponentCond().runSyntax(t, scope, filename, rowType);\n }\n for (const t of node.findDirectExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(t, scope, filename);\n }\n const group = node.findDirectExpression(Expressions.LoopGroupBy);\n if (group) {\n new loop_group_by_1.LoopGroupBy().runSyntax(group, scope, filename);\n }\n }\n}\nexports.Loop = Loop;\n//# sourceMappingURL=loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop_at_screen.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop_at_screen.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LoopAtScreen = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass LoopAtScreen {\n runSyntax(node, scope, filename) {\n const target = node.findDirectExpression(Expressions.Target);\n if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.VoidType(\"SCREEN\"));\n }\n }\n}\nexports.LoopAtScreen = LoopAtScreen;\n//# sourceMappingURL=loop_at_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop_at_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/message.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/message.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Message = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst message_source_1 = __webpack_require__(/*! ../expressions/message_source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/message_source.js\");\nclass Message {\n runSyntax(node, scope, filename) {\n const found = node.findExpressionAfterToken(\"INTO\");\n const inline = found === null || found === void 0 ? void 0 : found.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, basic_1.StringType.get());\n }\n else if (found) {\n new target_1.Target().runSyntax(found, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.SimpleSource3)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.MessageSource)) {\n new message_source_1.MessageSource().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Message = Message;\n//# sourceMappingURL=message.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/message.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/method_implementation.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/method_implementation.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodImplementation = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass MethodImplementation {\n runSyntax(node, scope, filename) {\n const helper = new _object_oriented_1.ObjectOriented(scope);\n const className = scope.getName();\n const methodToken = node.findFirstExpression(Expressions.MethodName).getFirstToken();\n const methodName = methodToken === null || methodToken === void 0 ? void 0 : methodToken.getStr();\n const classDefinition = scope.findClassDefinition(className);\n if (classDefinition === undefined) {\n throw new Error(\"Class definition for \\\"\" + className + \"\\\" not found\");\n }\n const { method: methodDefinition } = helper.searchMethodName(classDefinition, methodName);\n if (methodDefinition === undefined) {\n throw new Error(\"Method definition \\\"\" + methodName + \"\\\" not found\");\n }\n if (methodDefinition.isStatic() === false) {\n scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, node.getFirstToken().getStart(), filename);\n scope.addList(classDefinition.getAttributes().getInstance());\n }\n scope.push(_scope_type_1.ScopeType.Method, methodName, node.getFirstToken().getStart(), filename);\n scope.addReference(methodToken, methodDefinition, _reference_1.ReferenceType.MethodImplementationReference, filename);\n scope.addList(methodDefinition.getParameters().getAll());\n for (const i of helper.findInterfaces(classDefinition)) {\n if (methodName.toUpperCase().startsWith(i.name.toUpperCase() + \"~\") === false) {\n continue;\n }\n const idef = scope.findInterfaceDefinition(i.name);\n if (idef === undefined) {\n continue;\n }\n scope.addReference(methodToken, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n }\n}\nexports.MethodImplementation = MethodImplementation;\n//# sourceMappingURL=method_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/method_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_database.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_database.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyDatabase = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst database_table_1 = __webpack_require__(/*! ../expressions/database_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass ModifyDatabase {\n runSyntax(node, scope, filename) {\n for (const d of node.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n const dbtab = node.findFirstExpression(Expressions.DatabaseTable);\n if (dbtab !== undefined) {\n if (node.getChildren().length === 5) {\n const found = scope.findVariable(dbtab.concatTokens());\n if (found) {\n scope.addReference(dbtab.getFirstToken(), found, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n else {\n new database_table_1.DatabaseTable().runSyntax(dbtab, scope, filename);\n }\n }\n else {\n new database_table_1.DatabaseTable().runSyntax(dbtab, scope, filename);\n }\n }\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.ModifyDatabase = ModifyDatabase;\n//# sourceMappingURL=modify_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_entities.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_entities.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyEntities = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass ModifyEntities {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.VoidType(\"ModifyEntities\"));\n }\n else {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n }\n}\nexports.ModifyEntities = ModifyEntities;\n//# sourceMappingURL=modify_entities.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_entities.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_internal.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_internal.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyInternal = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst component_cond_1 = __webpack_require__(/*! ../expressions/component_cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_cond.js\");\nclass ModifyInternal {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n const target = node.findDirectExpression(Expressions.FSTarget);\n if (target) {\n new fstarget_1.FSTarget().runSyntax(target, scope, filename, undefined);\n }\n for (const t of node.findDirectExpressions(Expressions.ComponentCond)) {\n new component_cond_1.ComponentCond().runSyntax(t, scope, filename);\n }\n }\n}\nexports.ModifyInternal = ModifyInternal;\n//# sourceMappingURL=modify_internal.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_internal.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_screen.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_screen.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyScreen = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass ModifyScreen {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.ModifyScreen = ModifyScreen;\n//# sourceMappingURL=modify_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Move = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass Move {\n runSyntax(node, scope, filename) {\n const targets = node.findDirectExpressions(Expressions.Target);\n const firstTarget = targets[0];\n const inline = firstTarget === null || firstTarget === void 0 ? void 0 : firstTarget.findDirectExpression(Expressions.InlineData);\n let targetType = undefined;\n if (inline === undefined) {\n targetType = firstTarget ? new target_1.Target().runSyntax(firstTarget, scope, filename) : undefined;\n for (const t of targets) {\n if (t === firstTarget) {\n continue;\n }\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n const source = node.findDirectExpression(Expressions.Source);\n const sourceType = source ? new source_1.Source().runSyntax(source, scope, filename, targetType) : undefined;\n if (sourceType === undefined) {\n throw new Error(\"No source type determined\");\n }\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, sourceType);\n targetType = sourceType;\n }\n if (node.findDirectTokenByText(\"?=\")) {\n if (new _type_utils_1.TypeUtils(scope).isCastable(sourceType, targetType) === false) {\n throw new Error(\"Incompatible types\");\n }\n }\n else if (new _type_utils_1.TypeUtils(scope).isAssignable(sourceType, targetType) === false) {\n throw new Error(\"Incompatible types\");\n }\n }\n}\nexports.Move = Move;\n//# sourceMappingURL=move.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move_corresponding.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move_corresponding.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MoveCorresponding = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass MoveCorresponding {\n runSyntax(node, scope, filename) {\n const s = node.findDirectExpression(Expressions.Source);\n const t = node.findDirectExpression(Expressions.Target);\n if (s === undefined || t === undefined) {\n throw new Error(\"MoveCorresponding, source or target not found\");\n }\n const sourceType = new source_1.Source().runSyntax(s, scope, filename);\n const targetType = new target_1.Target().runSyntax(t, scope, filename);\n if (scope.getVersion() < version_1.Version.v740sp05 && scope.getVersion() !== version_1.Version.Cloud) {\n if (sourceType instanceof basic_1.TableType && sourceType.isWithHeader() === false) {\n throw new Error(\"MOVE-CORRESPONDING with tables possible from v740sp05\");\n }\n else if (targetType instanceof basic_1.TableType && targetType.isWithHeader() === false) {\n throw new Error(\"MOVE-CORRESPONDING with tables possible from v740sp05\");\n }\n }\n }\n}\nexports.MoveCorresponding = MoveCorresponding;\n//# sourceMappingURL=move_corresponding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move_corresponding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/multiply.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/multiply.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Multiply = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Multiply {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Multiply = Multiply;\n//# sourceMappingURL=multiply.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/multiply.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/open_dataset.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/open_dataset.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OpenDataset = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass OpenDataset {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.OpenDataset = OpenDataset;\n//# sourceMappingURL=open_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/open_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/pack.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/pack.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Pack = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Pack {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Pack = Pack;\n//# sourceMappingURL=pack.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/pack.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/parameter.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/parameter.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Parameter = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nclass Parameter {\n runSyntax(node, scope, filename) {\n var _a;\n const nameToken = (_a = node.findFirstExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (nameToken && nameToken.getStr().length > 8) {\n throw new Error(\"Parameter name too long, \" + nameToken.getStr());\n }\n const bfound = new basic_types_1.BasicTypes(filename, scope).parseType(node);\n if (nameToken && bfound) {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, bfound));\n return;\n }\n if (nameToken) {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.UnknownType(\"Parameter, fallback\")));\n }\n }\n}\nexports.Parameter = Parameter;\n//# sourceMappingURL=parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/perform.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/perform.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Perform = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Perform {\n runSyntax(node, scope, filename) {\n if (!(node.get() instanceof Statements.Perform)) {\n throw new Error(\"checkPerform unexpected node type\");\n }\n ////////////////////////////\n // check parameters are defined\n for (const c of node.findDirectExpressions(Expressions.PerformChanging)) {\n for (const s of c.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(s, scope, filename);\n }\n }\n for (const t of node.findDirectExpressions(Expressions.PerformTables)) {\n for (const s of t.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n for (const u of node.findDirectExpressions(Expressions.PerformUsing)) {\n for (const s of u.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n ////////////////////////////\n // find FORM definition\n if (node.findFirstExpression(Expressions.IncludeName)) {\n return; // in external program, not checked, todo\n }\n if (node.findFirstExpression(Expressions.Dynamic)) {\n return; // todo, maybe some parts can be checked\n }\n const expr = node.findFirstExpression(Expressions.FormName);\n if (expr === undefined) {\n return; // it might be a dynamic call\n }\n const name = expr.concatTokens();\n const found = scope.findFormDefinition(name);\n if (found === undefined) {\n throw new Error(\"FORM definition \\\"\" + name + \"\\\" not found\");\n }\n scope.addReference(expr.getFirstToken(), found, _reference_1.ReferenceType.FormReference, filename);\n // todo, also check parameters match\n }\n}\nexports.Perform = Perform;\n//# sourceMappingURL=perform.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/perform.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Raise = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst message_source_1 = __webpack_require__(/*! ../expressions/message_source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/message_source.js\");\nconst raise_with_1 = __webpack_require__(/*! ../expressions/raise_with */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/raise_with.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst method_parameters_1 = __webpack_require__(/*! ../expressions/method_parameters */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_parameters.js\");\nclass Raise {\n runSyntax(node, scope, filename) {\n // todo\n var _a, _b, _c, _d, _e;\n const helper = new _object_oriented_1.ObjectOriented(scope);\n let method;\n const classTok = (_a = node.findDirectExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const className = classTok === null || classTok === void 0 ? void 0 : classTok.getStr();\n if (className) {\n const found = scope.existsObject(className);\n if (found.found === true && found.id) {\n scope.addReference(classTok, found.id, found.type, filename);\n const def = scope.findObjectDefinition(className);\n method = (_b = helper.searchMethodName(def, \"CONSTRUCTOR\")) === null || _b === void 0 ? void 0 : _b.method;\n }\n else if (scope.getDDIC().inErrorNamespace(className) === false) {\n const extra = { ooName: className, ooType: \"Void\" };\n scope.addReference(classTok, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, extra);\n method = new basic_1.VoidType(className);\n }\n else {\n throw new Error(\"RAISE, unknown class \" + className);\n }\n if (method === undefined) {\n method = new basic_1.VoidType(className);\n }\n }\n const c = node.findExpressionAfterToken(\"EXCEPTION\");\n if (c instanceof nodes_1.ExpressionNode && (c.get() instanceof Expressions.SimpleSource2 || c.get() instanceof Expressions.Source)) {\n const type = new source_1.Source().runSyntax(c, scope, filename);\n if (type instanceof basic_1.VoidType) {\n method = type;\n }\n else if (type instanceof basic_1.ObjectReferenceType) {\n const def = scope.findObjectDefinition(type.getIdentifierName());\n method = (_c = helper.searchMethodName(def, \"CONSTRUCTOR\")) === null || _c === void 0 ? void 0 : _c.method;\n }\n else if (type !== undefined) {\n throw new Error(\"RAISE EXCEPTION, must be object reference, got \" + type.constructor.name);\n }\n }\n if (method === undefined) {\n method = new basic_1.VoidType(\"Exception\");\n }\n // check parameters vs constructor\n const param = node.findDirectExpression(Expressions.ParameterListS);\n if (param) {\n new method_parameters_1.MethodParameters().checkExporting(param, scope, method, filename, true);\n }\n for (const s of node.findDirectExpressions(Expressions.RaiseWith)) {\n new raise_with_1.RaiseWith().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.SimpleSource2)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.MessageSource)) {\n new message_source_1.MessageSource().runSyntax(s, scope, filename);\n }\n const id = (_d = node.findExpressionAfterToken(\"ID\")) === null || _d === void 0 ? void 0 : _d.concatTokens();\n const number = (_e = node.findDirectExpression(Expressions.MessageNumber)) === null || _e === void 0 ? void 0 : _e.concatTokens();\n if ((id === null || id === void 0 ? void 0 : id.startsWith(\"'\")) && number) {\n const messageClass = id.substring(1, id.length - 1).toUpperCase();\n scope.getMSAGReferences().addUsing(filename, node.getFirstToken(), messageClass, number);\n }\n }\n}\nexports.Raise = Raise;\n//# sourceMappingURL=raise.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise_event.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise_event.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RaiseEvent = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass RaiseEvent {\n runSyntax(node, scope, filename) {\n // todo: only possible in classes\n const f = node.findDirectExpression(Expressions.EventName);\n if (f === null || f === void 0 ? void 0 : f.concatTokens().includes(\"~\")) {\n const name = f.concatTokens().split(\"~\")[0];\n const idef = scope.findInterfaceDefinition(name);\n if (idef) {\n scope.addReference(f.getFirstToken(), idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n }\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.RaiseEvent = RaiseEvent;\n//# sourceMappingURL=raise_event.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise_event.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/ranges.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/ranges.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Ranges = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nclass Ranges {\n runSyntax(node, scope, filename) {\n var _a;\n const nameToken = (_a = node.findFirstExpression(Expressions.SimpleName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const typeExpression = node.findFirstExpression(Expressions.FieldSub);\n if (typeExpression === undefined) {\n throw new Error(\"Ranges, unexpected node\");\n }\n const found = new basic_types_1.BasicTypes(filename, scope).parseType(typeExpression);\n if (found && nameToken) {\n const structure = new basic_1.StructureType([\n { name: \"sign\", type: new basic_1.CharacterType(1) },\n { name: \"option\", type: new basic_1.CharacterType(2) },\n { name: \"low\", type: found },\n { name: \"high\", type: found },\n ]);\n const type = new basic_1.TableType(structure, { withHeader: true, keyType: basic_1.TableKeyType.default });\n const id = new _typed_identifier_1.TypedIdentifier(nameToken, filename, type);\n scope.addIdentifier(id);\n }\n }\n}\nexports.Ranges = Ranges;\n//# sourceMappingURL=ranges.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/ranges.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_entities.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_entities.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadEntities = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass ReadEntities {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, new basic_1.VoidType(\"ReadEntities\"));\n }\n else {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n }\n}\nexports.ReadEntities = ReadEntities;\n//# sourceMappingURL=read_entities.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_entities.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_report.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_report.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadReport = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass ReadReport {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.ReadReport = ReadReport;\n//# sourceMappingURL=read_report.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_report.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_table.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_table.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadTable = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js\");\nconst component_compare_simple_1 = __webpack_require__(/*! ../expressions/component_compare_simple */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/component_compare_simple.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass ReadTable {\n runSyntax(node, scope, filename) {\n const concat = node.concatTokens().toUpperCase();\n const sources = node.findDirectExpressions(Expressions.Source);\n let firstSource = node.findDirectExpression(Expressions.SimpleSource2);\n if (firstSource === undefined) {\n firstSource = sources[0];\n }\n const sourceType = firstSource ? new source_1.Source().runSyntax(firstSource, scope, filename) : undefined;\n if (sourceType === undefined) {\n throw new Error(\"No source type determined, read table\");\n }\n else if (!(sourceType instanceof basic_1.TableType) && !(sourceType instanceof basic_1.VoidType)) {\n throw new Error(\"Read table, not a table type\");\n }\n let rowType = sourceType;\n if (rowType instanceof basic_1.TableType) {\n rowType = rowType.getRowType();\n }\n const components = node.findDirectExpression(Expressions.ComponentCompareSimple);\n if (components !== undefined) {\n new component_compare_simple_1.ComponentCompareSimple().runSyntax(components, scope, filename, rowType);\n }\n const indexSource = node.findExpressionAfterToken(\"INDEX\");\n if (indexSource) {\n const indexType = new source_1.Source().runSyntax(indexSource, scope, filename);\n if (new _type_utils_1.TypeUtils(scope).isAssignable(indexType, basic_1.IntegerType.get()) === false) {\n throw new Error(\"READ TABLE, INDEX must be simple\");\n }\n }\n const fromSource = node.findExpressionAfterToken(\"FROM\");\n if (fromSource) {\n const fromType = new source_1.Source().runSyntax(fromSource, scope, filename);\n if (new _type_utils_1.TypeUtils(scope).isAssignable(fromType, basic_1.IntegerType.get()) === false) {\n throw new Error(\"READ TABLE, FROM must be simple\");\n }\n }\n for (const s of sources) {\n if (s === firstSource || s === indexSource || s === fromSource) {\n continue;\n }\n new source_1.Source().runSyntax(s, scope, filename);\n }\n const target = node.findDirectExpression(Expressions.ReadTableTarget);\n if (target) {\n if (concat.includes(\" REFERENCE INTO \")) {\n rowType = new basic_1.DataReference(rowType);\n }\n const inline = target.findFirstExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, rowType);\n return;\n }\n const fst = target.findDirectExpression(Expressions.FSTarget);\n if (fst) {\n new fstarget_1.FSTarget().runSyntax(fst, scope, filename, rowType);\n return;\n }\n /*\n const inlinefs = target.findFirstExpression(Expressions.InlineFS);\n if (inlinefs) {\n new InlineFS().runSyntax(inlinefs, scope, filename, sourceType);\n return;\n }\n */\n const t = target.findFirstExpression(Expressions.Target);\n if (t) {\n const targetType = new target_1.Target().runSyntax(t, scope, filename);\n if (new _type_utils_1.TypeUtils(scope).isAssignable(rowType, targetType) === false) {\n throw new Error(\"Incompatible types\");\n }\n return;\n }\n }\n if (target === undefined && concat.includes(\" TRANSPORTING NO FIELDS \") === false) {\n // if sourceType is void, assume its with header\n if (sourceType instanceof basic_1.TableType && sourceType.isWithHeader() === false) {\n throw new Error(\"READ TABLE, define INTO or TRANSPORTING NO FIELDS\");\n }\n }\n }\n}\nexports.ReadTable = ReadTable;\n//# sourceMappingURL=read_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_textpool.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_textpool.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadTextpool = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass ReadTextpool {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.ReadTextpool = ReadTextpool;\n//# sourceMappingURL=read_textpool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_textpool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/receive.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/receive.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Receive = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass Receive {\n runSyntax(node, scope, filename) {\n // todo, lots of work here, similar to call_function.ts\n // just recurse\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findAllExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Receive = Receive;\n//# sourceMappingURL=receive.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/receive.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/replace.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/replace.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Replace = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Replace {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Replace = Replace;\n//# sourceMappingURL=replace.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/replace.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/scan.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/scan.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Scan = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Scan {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Scan = Scan;\n//# sourceMappingURL=scan.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/scan.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/search.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/search.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Search = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass Search {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Search = Search;\n//# sourceMappingURL=search.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/search.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Select = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst select_1 = __webpack_require__(/*! ../expressions/select */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js\");\nclass Select {\n runSyntax(node, scope, filename) {\n const selects = node.findDirectExpressions(Expressions.Select);\n for (let i = 0; i < selects.length; i++) {\n const last = i === selects.length - 1;\n const s = selects[i];\n new select_1.Select().runSyntax(s, scope, filename, last === false);\n }\n }\n}\nexports.Select = Select;\n//# sourceMappingURL=select.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select_loop.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select_loop.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectLoop = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst select_loop_1 = __webpack_require__(/*! ../expressions/select_loop */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select_loop.js\");\nclass SelectLoop {\n runSyntax(node, scope, filename) {\n const s = node.findDirectExpression(Expressions.SelectLoop);\n if (s) {\n new select_loop_1.SelectLoop().runSyntax(s, scope, filename);\n }\n }\n}\nexports.SelectLoop = SelectLoop;\n//# sourceMappingURL=select_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selection_screen.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selection_screen.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectionScreen = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass SelectionScreen {\n runSyntax(node, scope, filename) {\n const field = node.findFirstExpression(Expressions.InlineField);\n if (field === undefined) {\n return;\n }\n const name = field.getFirstToken();\n const concat = node.concatTokens().toUpperCase();\n if (concat.includes(\"BEGIN OF TABBED BLOCK\")) {\n const type = new basic_1.StructureType([\n { name: \"PROG\", type: new basic_1.CharacterType(40) },\n { name: \"DYNNR\", type: new basic_1.CharacterType(4) },\n { name: \"ACTIVETAB\", type: new basic_1.CharacterType(132) },\n ]);\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, filename, type, [\"selection_screen_tab\" /* IdentifierMeta.SelectionScreenTab */]));\n }\n else if (concat.startsWith(\"SELECTION-SCREEN TAB\")) {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, filename, new basic_1.CharacterType(83), [\"selection_screen_tab\" /* IdentifierMeta.SelectionScreenTab */]));\n }\n else {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(name, filename, new basic_1.CharacterType(83)));\n }\n }\n}\nexports.SelectionScreen = SelectionScreen;\n//# sourceMappingURL=selection_screen.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selection_screen.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selectoption.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selectoption.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectOption = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nclass SelectOption {\n runSyntax(node, scope, filename) {\n var _a;\n const nameToken = (_a = node.findFirstExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (nameToken && nameToken.getStr().length > 8) {\n throw new Error(\"Select-option name too long, \" + nameToken.getStr());\n }\n for (const d of node.findDirectExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n const nameExpression = node.findFirstExpression(Expressions.FieldChain);\n let found = new basic_types_1.BasicTypes(filename, scope).resolveLikeName(nameExpression);\n if (found && nameToken) {\n if (found instanceof basic_1.StructureType) {\n let length = 0;\n for (const c of found.getComponents()) {\n if (c.type instanceof basic_1.CharacterType) {\n length += c.type.getLength();\n }\n }\n if (length === 0) {\n found = new basic_1.VoidType(\"Selectoption, fallback\");\n }\n else {\n found = new basic_1.CharacterType(length);\n }\n }\n const stru = new basic_1.StructureType([\n { name: \"SIGN\", type: new basic_1.CharacterType(1) },\n { name: \"OPTION\", type: new basic_1.CharacterType(2) },\n { name: \"LOW\", type: found },\n { name: \"HIGH\", type: found },\n ]);\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.TableType(stru, { withHeader: true, keyType: basic_1.TableKeyType.default })));\n return;\n }\n if (nameToken) {\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new basic_1.UnknownType(\"Select option, fallback\")));\n }\n }\n}\nexports.SelectOption = SelectOption;\n//# sourceMappingURL=selectoption.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selectoption.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_bit.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_bit.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetBit = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass SetBit {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n const typ = new target_1.Target().runSyntax(t, scope, filename);\n if (typ && new _type_utils_1.TypeUtils(scope).isHexLike(typ) === false) {\n throw new Error(\"Input must be byte-like\");\n }\n }\n }\n}\nexports.SetBit = SetBit;\n//# sourceMappingURL=set_bit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_bit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_handler.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_handler.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetHandler = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst method_source_1 = __webpack_require__(/*! ../expressions/method_source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_source.js\");\nclass SetHandler {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.MethodSource)) {\n new method_source_1.MethodSource().runSyntax(s, scope, filename);\n }\n }\n}\nexports.SetHandler = SetHandler;\n//# sourceMappingURL=set_handler.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_handler.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_locale.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_locale.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetLocale = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass SetLocale {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.SetLocale = SetLocale;\n//# sourceMappingURL=set_locale.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_locale.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_parameter.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_parameter.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetParameter = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass SetParameter {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.SetParameter = SetParameter;\n//# sourceMappingURL=set_parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_pf_status.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_pf_status.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetPFStatus = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass SetPFStatus {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.SetPFStatus = SetPFStatus;\n//# sourceMappingURL=set_pf_status.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_pf_status.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_titlebar.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_titlebar.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SetTitlebar = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass SetTitlebar {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.SetTitlebar = SetTitlebar;\n//# sourceMappingURL=set_titlebar.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_titlebar.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/shift.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/shift.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Shift = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass Shift {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n const target = node.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n throw new Error(\"Shift, Target not found\");\n }\n const targetType = new target_1.Target().runSyntax(target, scope, filename);\n if (node.concatTokens().toUpperCase().includes(\" IN BYTE MODE\")) {\n if (new _type_utils_1.TypeUtils(scope).isHexLike(targetType) === false) {\n throw new Error(\"Shift, Target not hex like\");\n }\n }\n else {\n if (new _type_utils_1.TypeUtils(scope).isCharLike(targetType) === false) {\n throw new Error(\"Shift, Target not char like\");\n }\n }\n }\n}\nexports.Shift = Shift;\n//# sourceMappingURL=shift.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/shift.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/sort.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/sort.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Sort = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass Sort {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(s, scope, filename);\n }\n const tnode = node.findDirectExpression(Expressions.Target);\n if (tnode) {\n const ttype = new target_1.Target().runSyntax(tnode, scope, filename);\n if (ttype instanceof basic_1.TableType) {\n const rowType = ttype.getRowType();\n if (!(rowType instanceof basic_1.VoidType)\n && !(rowType instanceof basic_1.UnknownType)\n && !(rowType instanceof basic_1.AnyType)) {\n for (const component of node.findAllExpressions(Expressions.ComponentChain)) {\n if (component.getChildren().length > 1) {\n continue;\n }\n const cname = component.concatTokens().toUpperCase();\n if (cname === \"TABLE_LINE\") {\n continue;\n }\n else if (!(rowType instanceof basic_1.StructureType)) {\n throw new Error(\"SORT, table row is not structured\");\n }\n else if (rowType.getComponentByName(cname) === undefined) {\n throw new Error(`Field ${cname} does not exist in table row structure`);\n }\n }\n }\n }\n else if (ttype !== undefined\n && !(ttype instanceof basic_1.VoidType)\n && !(ttype instanceof basic_1.UnknownType)\n && !(ttype instanceof basic_1.AnyType)) {\n throw new Error(\"SORT, must be a internal table\");\n }\n }\n }\n}\nexports.Sort = Sort;\n//# sourceMappingURL=sort.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/sort.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/split.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/split.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Split = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nclass Split {\n runSyntax(node, scope, filename) {\n const intoTable = node.findTokenSequencePosition(\"INTO\", \"TABLE\") !== undefined;\n const type = intoTable ? new basic_1.TableType(basic_1.StringType.get(), { withHeader: false, keyType: basic_1.TableKeyType.default }) : basic_1.StringType.get();\n for (const target of node.findAllExpressions(Expressions.Target)) {\n const inline = target.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, type);\n }\n else {\n let targetType = new target_1.Target().runSyntax(target, scope, filename);\n if (intoTable) {\n if (!(targetType instanceof basic_1.TableType)\n && !(targetType instanceof basic_1.UnknownType)\n && !(targetType instanceof basic_1.VoidType)) {\n throw new Error(\"Into must be table typed\");\n }\n if (targetType instanceof basic_1.TableType) {\n targetType = targetType.getRowType();\n }\n }\n if (new _type_utils_1.TypeUtils(scope).isCharLikeStrict(targetType) === false) {\n throw new Error(\"Incompatible, target not character like\");\n }\n }\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.Split = Split;\n//# sourceMappingURL=split.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/split.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/static.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/static.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Static = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst type_table_1 = __webpack_require__(/*! ../expressions/type_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table.js\");\nclass Static {\n runSyntax(node, scope, filename) {\n const tt = node.findFirstExpression(Expressions.TypeTable);\n if (tt) {\n const ttfound = new type_table_1.TypeTable().runSyntax(node, scope, filename);\n if (ttfound) {\n return ttfound;\n }\n }\n const found = new basic_types_1.BasicTypes(filename, scope).simpleType(node);\n if (found) {\n return found;\n }\n const fallback = node.findFirstExpression(Expressions.NamespaceSimpleName);\n if (fallback) {\n return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), filename, new basic_1.UnknownType(\"Static, fallback\"));\n }\n return undefined;\n }\n}\nexports.Static = Static;\n//# sourceMappingURL=static.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/static.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/submit.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/submit.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Submit = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nclass Submit {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Submit = Submit;\n//# sourceMappingURL=submit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/submit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Subtract = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Subtract {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Subtract = Subtract;\n//# sourceMappingURL=subtract.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract_corresponding.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract_corresponding.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SubtractCorresponding = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass SubtractCorresponding {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.SubtractCorresponding = SubtractCorresponding;\n//# sourceMappingURL=subtract_corresponding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract_corresponding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/syntax_check.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/syntax_check.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SyntaxCheck = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass SyntaxCheck {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.SyntaxCheck = SyntaxCheck;\n//# sourceMappingURL=syntax_check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/syntax_check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/system_call.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/system_call.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SystemCall = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass SystemCall {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.SystemCall = SystemCall;\n//# sourceMappingURL=system_call.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/system_call.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/tables.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/tables.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Tables = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst unknown_type_1 = __webpack_require__(/*! ../../types/basic/unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\");\nclass Tables {\n runSyntax(node, scope, filename) {\n var _a, _b;\n const nameToken = (_a = node.findFirstExpression(Expressions.Field)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (nameToken === undefined) {\n return undefined;\n }\n let name = nameToken.getStr();\n if (name.startsWith(\"*\")) {\n name = name.substr(1);\n }\n // lookupTableOrView will also give Unknown and Void\n const found = (_b = scope.getDDIC()) === null || _b === void 0 ? void 0 : _b.lookupTableOrView(name);\n if (found) {\n scope.getDDICReferences().addUsing(scope.getParentObj(), { object: found.object, filename: filename, token: nameToken });\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, found.type));\n return;\n }\n // this should never happen,\n scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, filename, new unknown_type_1.UnknownType(\"Tables, fallback\")));\n }\n}\nexports.Tables = Tables;\n//# sourceMappingURL=tables.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/tables.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/transfer.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/transfer.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Transfer = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Transfer {\n runSyntax(node, scope, filename) {\n for (const source of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(source, scope, filename);\n }\n const target = node.findDirectExpression(Expressions.Target);\n if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n }\n}\nexports.Transfer = Transfer;\n//# sourceMappingURL=transfer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/transfer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/translate.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/translate.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Translate = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Translate {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Translate = Translate;\n//# sourceMappingURL=translate.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/translate.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/truncate_dataset.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/truncate_dataset.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TruncateDataset = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass TruncateDataset {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.TruncateDataset = TruncateDataset;\n//# sourceMappingURL=truncate_dataset.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/truncate_dataset.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/type.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/type.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Type = void 0;\nconst basic_types_1 = __webpack_require__(/*! ../basic_types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/basic_types.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst type_table_1 = __webpack_require__(/*! ../expressions/type_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/type_table.js\");\nclass Type {\n runSyntax(node, scope, filename, qualifiedNamePrefix) {\n const tt = node.findFirstExpression(Expressions.TypeTable);\n if (tt) {\n return new type_table_1.TypeTable().runSyntax(node, scope, filename, qualifiedNamePrefix);\n }\n const found = new basic_types_1.BasicTypes(filename, scope).simpleType(node, qualifiedNamePrefix);\n if (found) {\n return found;\n }\n const fallback = node.findFirstExpression(Expressions.NamespaceSimpleName);\n if (fallback) {\n return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), filename, new basic_1.UnknownType(\"Type, fallback\"));\n }\n return undefined;\n }\n}\nexports.Type = Type;\n//# sourceMappingURL=type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unassign.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unassign.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Unassign = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Unassign {\n runSyntax(node, scope, filename) {\n const target = node === null || node === void 0 ? void 0 : node.findDirectExpression(Expressions.TargetFieldSymbol);\n if (target) {\n const token = target.getFirstToken();\n const found = scope.findVariable(token.getStr());\n if (found === undefined) {\n throw new Error(`\"${token.getStr()}\" not found, Unassign`);\n }\n scope.addReference(token, found, _reference_1.ReferenceType.DataWriteReference, filename);\n }\n }\n}\nexports.Unassign = Unassign;\n//# sourceMappingURL=unassign.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unassign.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unpack.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unpack.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Unpack = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass Unpack {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Unpack = Unpack;\n//# sourceMappingURL=unpack.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unpack.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/update_database.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/update_database.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UpdateDatabase = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst identifier_1 = __webpack_require__(/*! ../../1_lexer/tokens/identifier */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js\");\nconst database_table_1 = __webpack_require__(/*! ../expressions/database_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/database_table.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nclass UpdateDatabase {\n runSyntax(node, scope, filename) {\n const dbtab = node.findFirstExpression(Expressions.DatabaseTable);\n if (dbtab !== undefined) {\n new database_table_1.DatabaseTable().runSyntax(dbtab, scope, filename);\n }\n const tableName = node.findDirectExpression(Expressions.DatabaseTable);\n const tokenName = tableName === null || tableName === void 0 ? void 0 : tableName.getFirstToken();\n if (tableName && tokenName) {\n // todo, this also finds structures, it should only find transparent tables\n const found = scope.getDDIC().lookupTable(tokenName.getStr());\n if (found instanceof basic_1.StructureType) {\n scope.push(_scope_type_1.ScopeType.OpenSQL, \"UPDATE\", tokenName.getStart(), filename);\n for (const field of found.getComponents()) {\n const fieldToken = new identifier_1.Identifier(node.getFirstToken().getStart(), field.name);\n const id = new _typed_identifier_1.TypedIdentifier(fieldToken, filename, field.type);\n scope.addIdentifier(id);\n }\n }\n }\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SimpleSource3)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const d of node.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(d, scope, filename);\n }\n if (scope.getType() === _scope_type_1.ScopeType.OpenSQL) {\n scope.pop(node.getLastToken().getEnd());\n }\n }\n}\nexports.UpdateDatabase = UpdateDatabase;\n//# sourceMappingURL=update_database.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/update_database.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/wait.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/wait.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Wait = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst cond_1 = __webpack_require__(/*! ../expressions/cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nclass Wait {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const t of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(t, scope, filename);\n }\n }\n}\nexports.Wait = Wait;\n//# sourceMappingURL=wait.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/wait.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.When = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nclass When {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n }\n}\nexports.When = When;\n//# sourceMappingURL=when.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when_type.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when_type.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WhenType = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js\");\nclass WhenType {\n runSyntax(node, scope, filename) {\n var _a;\n const nameToken = (_a = node.findFirstExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (nameToken === undefined) {\n return undefined;\n }\n let type = undefined;\n const className = nameToken.getStr();\n const found = scope.findObjectDefinition(className);\n if (found === undefined && scope.getDDIC().inErrorNamespace(className) === false) {\n type = new basic_1.VoidType(className);\n }\n else if (found === undefined) {\n throw new Error(\"Class \" + className + \" not found\");\n }\n else {\n type = new basic_1.ObjectReferenceType(found);\n }\n const inline = node === null || node === void 0 ? void 0 : node.findDirectExpression(Expressions.InlineData);\n if (inline) {\n new inline_data_1.InlineData().runSyntax(inline, scope, filename, type);\n }\n }\n}\nexports.WhenType = WhenType;\n//# sourceMappingURL=when_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/while.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/while.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.While = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst cond_1 = __webpack_require__(/*! ../expressions/cond */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/cond.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nclass While {\n runSyntax(node, scope, filename) {\n for (const s of node.findDirectExpressions(Expressions.Cond)) {\n new cond_1.Cond().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Source)) {\n new source_1.Source().runSyntax(s, scope, filename);\n }\n for (const s of node.findDirectExpressions(Expressions.Target)) {\n new target_1.Target().runSyntax(s, scope, filename);\n }\n }\n}\nexports.While = While;\n//# sourceMappingURL=while.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/while.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.With = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst select_1 = __webpack_require__(/*! ../expressions/select */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js\");\nconst select_loop_1 = __webpack_require__(/*! ../expressions/select_loop */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select_loop.js\");\nclass With {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Select)) {\n new select_1.Select().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SelectLoop)) {\n new select_loop_1.SelectLoop().runSyntax(s, scope, filename);\n }\n }\n}\nexports.With = With;\n//# sourceMappingURL=with.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with_loop.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with_loop.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WithLoop = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst select_1 = __webpack_require__(/*! ../expressions/select */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js\");\nconst select_loop_1 = __webpack_require__(/*! ../expressions/select_loop */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select_loop.js\");\nclass WithLoop {\n runSyntax(node, scope, filename) {\n for (const s of node.findAllExpressions(Expressions.Select)) {\n new select_1.Select().runSyntax(s, scope, filename);\n }\n for (const s of node.findAllExpressions(Expressions.SelectLoop)) {\n new select_loop_1.SelectLoop().runSyntax(s, scope, filename);\n }\n }\n}\nexports.WithLoop = WithLoop;\n//# sourceMappingURL=with_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/write.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/write.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Write = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst source_1 = __webpack_require__(/*! ../expressions/source */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js\");\nconst target_1 = __webpack_require__(/*! ../expressions/target */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js\");\nconst dynamic_1 = __webpack_require__(/*! ../expressions/dynamic */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dynamic.js\");\nconst _type_utils_1 = __webpack_require__(/*! ../_type_utils */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js\");\nconst field_chain_1 = __webpack_require__(/*! ../expressions/field_chain */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/field_chain.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Write {\n runSyntax(node, scope, filename) {\n // todo, more\n const second = node.getChildren()[1];\n for (const s of node.findAllExpressions(Expressions.Source)) {\n const type = new source_1.Source().runSyntax(s, scope, filename);\n if (s === second\n && new _type_utils_1.TypeUtils(scope).isCharLike(type) === false\n && new _type_utils_1.TypeUtils(scope).isHexLike(type) === false) {\n throw new Error(\"Source not character like\");\n }\n }\n for (const s of node.findAllExpressions(Expressions.SimpleFieldChain2)) {\n new field_chain_1.FieldChain().runSyntax(s, scope, filename, _reference_1.ReferenceType.DataReadReference);\n }\n for (const s of node.findAllExpressions(Expressions.Dynamic)) {\n new dynamic_1.Dynamic().runSyntax(s, scope, filename);\n }\n const target = node.findDirectExpression(Expressions.Target);\n if (target) {\n new target_1.Target().runSyntax(target, scope, filename);\n }\n }\n}\nexports.Write = Write;\n//# sourceMappingURL=write.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/write.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/class_data.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/class_data.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassData = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst Basic = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst class_data_1 = __webpack_require__(/*! ../statements/class_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_data.js\");\nclass ClassData {\n runSyntax(node, scope, filename) {\n const name = node.findFirstExpression(Expressions.NamespaceSimpleName).getFirstToken();\n const values = {};\n const components = [];\n for (const c of node.getChildren()) {\n const ctyp = c.get();\n if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.ClassData) {\n const found = new class_data_1.ClassData().runSyntax(c, scope, filename);\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n values[found.getName()] = found.getValue();\n }\n }\n // todo, nested structures and INCLUDES\n }\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components), [\"static\" /* IdentifierMeta.Static */], values);\n }\n}\nexports.ClassData = ClassData;\n//# sourceMappingURL=class_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/class_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/constants.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/constants.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Constants = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst Basic = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst constant_1 = __webpack_require__(/*! ../statements/constant */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/constant.js\");\nclass Constants {\n runSyntax(node, scope, filename) {\n var _a;\n const name = (_a = node.findFirstExpression(Expressions.DefinitionName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (name === undefined) {\n throw new Error(\"Constants, structure, unexpected node\");\n }\n const components = [];\n const values = {};\n for (const c of node.getChildren()) {\n const ctyp = c.get();\n if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.Constant) {\n const found = new constant_1.Constant().runSyntax(c, scope, filename);\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n values[found.getName()] = found.getValue();\n }\n }\n else if (c instanceof nodes_1.StructureNode && ctyp instanceof Structures.Constants) {\n const { type: found, values: val } = new Constants().runSyntax(c, scope, filename);\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n values[found.getName()] = val;\n }\n }\n }\n if (components.length === 0) {\n return { type: undefined, values };\n }\n const type = new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components), [\"read_only\" /* IdentifierMeta.ReadOnly */, \"static\" /* IdentifierMeta.Static */]);\n return { type, values };\n }\n}\nexports.Constants = Constants;\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/constants.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/data.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/data.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Data = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst Basic = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst data_1 = __webpack_require__(/*! ../statements/data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/data.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Data {\n runSyntax(node, scope, filename) {\n var _a;\n const name = node.findFirstExpression(Expressions.DefinitionName).getFirstToken();\n let table = false;\n const values = {};\n const components = [];\n for (const c of node.getChildren()) {\n const ctyp = c.get();\n if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.Data) {\n const found = new data_1.Data().runSyntax(c, scope, filename);\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n if (found.getValue() !== undefined) {\n values[found.getName()] = found.getValue();\n }\n }\n }\n else if (c instanceof nodes_1.StructureNode && ctyp instanceof Structures.Data) {\n const found = new Data().runSyntax(c, scope, filename);\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n }\n }\n else if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.DataBegin) {\n if (c.findDirectTokenByText(\"OCCURS\")) {\n table = true;\n }\n }\n else if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.IncludeType) {\n // INCLUDES\n const typeToken = (_a = c.findFirstExpression(Expressions.TypeName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const typeName = typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr();\n const foundId = scope.findType(typeName);\n let found = foundId === null || foundId === void 0 ? void 0 : foundId.getType();\n if (found === undefined) {\n const f = scope.getDDIC().lookupTableOrView(typeName).type;\n if (f instanceof _typed_identifier_1.TypedIdentifier) {\n found = f.getType();\n }\n else {\n found = f;\n }\n }\n else {\n scope.addReference(typeToken, foundId, _reference_1.ReferenceType.TypeReference, filename);\n }\n if (found instanceof Basic.VoidType) {\n if (table === true) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.TableType(found, { withHeader: true, keyType: Basic.TableKeyType.default }));\n }\n else {\n return new _typed_identifier_1.TypedIdentifier(name, filename, found);\n }\n }\n if (found instanceof Basic.UnknownType) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.UnknownType(\"unknown type, \" + typeName));\n }\n if (!(found instanceof Basic.StructureType)) {\n throw new Error(\"not structured, \" + typeName);\n }\n for (const c of found.getComponents()) {\n components.push(c);\n }\n }\n }\n if (table === true) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.TableType(new Basic.StructureType(components), { withHeader: true, keyType: Basic.TableKeyType.default }));\n }\n else {\n const val = Object.keys(values).length > 0 ? values : undefined;\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components), undefined, val);\n }\n }\n}\nexports.Data = Data;\n//# sourceMappingURL=data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/statics.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/statics.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Statics = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst Basic = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst static_1 = __webpack_require__(/*! ../statements/static */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/static.js\");\n// todo, this is much like DATA, refactor?\nclass Statics {\n runSyntax(node, scope, filename) {\n var _a, _b;\n const name = node.findFirstExpression(Expressions.DefinitionName).getFirstToken();\n let table = false;\n const components = [];\n for (const c of node.getChildren()) {\n const ctyp = c.get();\n if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.Static) {\n const found = new static_1.Static().runSyntax(c, scope, filename);\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n }\n }\n else if (c instanceof nodes_1.StructureNode && ctyp instanceof Structures.Statics) {\n const found = new Statics().runSyntax(c, scope, filename);\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n }\n }\n else if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.StaticBegin) {\n if (c.findDirectTokenByText(\"OCCURS\")) {\n table = true;\n }\n }\n else if (c instanceof nodes_1.StatementNode && ctyp instanceof Statements.IncludeType) {\n // INCLUDES\n const typeName = (_a = c.findFirstExpression(Expressions.TypeName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr();\n let found = (_b = scope.findType(typeName)) === null || _b === void 0 ? void 0 : _b.getType();\n if (found === undefined) {\n const f = scope.getDDIC().lookupTableOrView(typeName).type;\n if (f instanceof _typed_identifier_1.TypedIdentifier) {\n found = f.getType();\n }\n else {\n found = f;\n }\n }\n if (found instanceof Basic.VoidType) {\n if (table === true) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.TableType(found, { withHeader: true, keyType: Basic.TableKeyType.default }));\n }\n else {\n return new _typed_identifier_1.TypedIdentifier(name, filename, found);\n }\n }\n if (found instanceof Basic.UnknownType) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.UnknownType(\"unknown type, \" + typeName));\n }\n if (!(found instanceof Basic.StructureType)) {\n throw new Error(\"not structured, \" + typeName);\n }\n for (const c of found.getComponents()) {\n components.push(c);\n }\n }\n }\n if (table === true) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.TableType(new Basic.StructureType(components), { withHeader: true, keyType: Basic.TableKeyType.default }));\n }\n else {\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components));\n }\n }\n}\nexports.Statics = Statics;\n//# sourceMappingURL=statics.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/statics.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/type_enum.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/type_enum.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeEnum = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst _reference_1 = __webpack_require__(/*! ../_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst enum_type_1 = __webpack_require__(/*! ../../types/basic/enum_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/enum_type.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nclass TypeEnum {\n runSyntax(node, scope, filename) {\n var _a;\n let values = [];\n const types = [];\n if (!(node.get() instanceof Structures.TypeEnum)) {\n throw new Error(\"TypeEnum, unexpected type\");\n }\n const begin = node.findDirectStatement(Statements.TypeEnumBegin);\n if (begin === undefined) {\n throw new Error(\"TypeEnum, unexpected type, begin\");\n }\n for (const type of node.findDirectStatements(Statements.Type)) {\n const expr = type.findFirstExpression(Expressions.NamespaceSimpleName);\n if (expr === undefined) {\n continue;\n }\n const token = expr.getFirstToken();\n // integer is default if BASE TYPE is not specified\n values.push(new _typed_identifier_1.TypedIdentifier(token, filename, basic_1.IntegerType.get()));\n }\n for (const type of node.findDirectStatements(Statements.TypeEnum)) {\n const expr = type.findFirstExpression(Expressions.NamespaceSimpleName);\n if (expr === undefined) {\n continue;\n }\n const token = expr.getFirstToken();\n // integer is default if BASE TYPE is not specified\n values.push(new _typed_identifier_1.TypedIdentifier(token, filename, basic_1.IntegerType.get()));\n }\n const baseType = (_a = begin.findExpressionAfterToken(\"TYPE\")) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const baseName = baseType === null || baseType === void 0 ? void 0 : baseType.getStr();\n if (baseType && baseName) {\n const found = scope.findType(baseName);\n if (found) {\n scope.addReference(baseType, found, _reference_1.ReferenceType.TypeReference, filename);\n }\n }\n const name = begin.findFirstExpression(Expressions.NamespaceSimpleName);\n if (name) {\n let qualifiedName = name.concatTokens();\n if (scope.getType() === _scope_type_1.ScopeType.ClassDefinition\n || scope.getType() === _scope_type_1.ScopeType.Interface) {\n qualifiedName = scope.getName() + \"=>\" + qualifiedName;\n }\n const id = new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), filename, new enum_type_1.EnumType({ qualifiedName: qualifiedName }), [\"enum\" /* IdentifierMeta.Enum */]);\n scope.addType(id);\n types.push(id);\n }\n const stru = begin.findExpressionAfterToken(\"STRUCTURE\");\n if (stru) {\n const components = [];\n for (const r of values) {\n components.push({\n name: r.getName(),\n type: r.getType(),\n });\n }\n values = [];\n const id = new _typed_identifier_1.TypedIdentifier(stru.getFirstToken(), filename, new basic_1.StructureType(components), [\"enum\" /* IdentifierMeta.Enum */]);\n values.push(id);\n }\n return { values, types };\n }\n}\nexports.TypeEnum = TypeEnum;\n//# sourceMappingURL=type_enum.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/type_enum.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/types.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/types.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Types = void 0;\nconst Expressions = __webpack_require__(/*! ../../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst include_type_1 = __webpack_require__(/*! ../statements/include_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/include_type.js\");\nconst type_1 = __webpack_require__(/*! ../statements/type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/type.js\");\nconst Basic = __webpack_require__(/*! ../../types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nclass Types {\n runSyntax(node, scope, filename, qualifiedNamePrefix) {\n const name = node.findFirstExpression(Expressions.NamespaceSimpleName).getFirstToken();\n const components = [];\n let voidd = undefined;\n if (qualifiedNamePrefix === undefined) {\n qualifiedNamePrefix = \"\";\n }\n for (const c of node.getChildren()) {\n const ctyp = c.get();\n if (c instanceof nodes_1.StatementNode) {\n if (ctyp instanceof Statements.Type) {\n const found = new type_1.Type().runSyntax(c, scope, filename, qualifiedNamePrefix + name.getStr() + \"-\");\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n }\n }\n else if (ctyp instanceof Statements.IncludeType) {\n const found = new include_type_1.IncludeType().runSyntax(c, scope, filename);\n if (found instanceof basic_1.VoidType) {\n voidd = found;\n }\n else {\n components.push(...found);\n }\n }\n }\n else if (c instanceof nodes_1.StructureNode && ctyp instanceof Structures.Types) {\n const found = new Types().runSyntax(c, scope, filename, qualifiedNamePrefix + name.getStr() + \"-\");\n if (found) {\n components.push({ name: found.getName(), type: found.getType() });\n }\n }\n }\n if (voidd) {\n return new _typed_identifier_1.TypedIdentifier(name, filename, voidd);\n }\n else if (components.length === 0) { // todo, remove this check\n return undefined;\n }\n let qualifiedName = qualifiedNamePrefix + name.getStr();\n if (scope.getType() === _scope_type_1.ScopeType.ClassDefinition\n || scope.getType() === _scope_type_1.ScopeType.Interface) {\n qualifiedName = scope.getName() + \"=>\" + qualifiedName;\n }\n return new _typed_identifier_1.TypedIdentifier(name, filename, new Basic.StructureType(components, qualifiedName));\n }\n}\nexports.Types = Types;\n//# sourceMappingURL=types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SyntaxLogic = void 0;\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst issue_1 = __webpack_require__(/*! ../../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _current_scope_1 = __webpack_require__(/*! ./_current_scope */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_current_scope.js\");\nconst _scope_type_1 = __webpack_require__(/*! ./_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ./_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst _procedural_1 = __webpack_require__(/*! ./_procedural */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_procedural.js\");\nconst objects_1 = __webpack_require__(/*! ../../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst data_1 = __webpack_require__(/*! ./structures/data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/data.js\");\nconst type_enum_1 = __webpack_require__(/*! ./structures/type_enum */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/type_enum.js\");\nconst types_1 = __webpack_require__(/*! ./structures/types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/types.js\");\nconst statics_1 = __webpack_require__(/*! ./structures/statics */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/statics.js\");\nconst constants_1 = __webpack_require__(/*! ./structures/constants */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/constants.js\");\nconst class_definition_1 = __webpack_require__(/*! ../types/class_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/class_definition.js\");\nconst interface_definition_1 = __webpack_require__(/*! ../types/interface_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/interface_definition.js\");\nconst perform_1 = __webpack_require__(/*! ./statements/perform */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/perform.js\");\nconst type_1 = __webpack_require__(/*! ./statements/type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/type.js\");\nconst constant_1 = __webpack_require__(/*! ./statements/constant */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/constant.js\");\nconst static_1 = __webpack_require__(/*! ./statements/static */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/static.js\");\nconst search_1 = __webpack_require__(/*! ./statements/search */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/search.js\");\nconst translate_1 = __webpack_require__(/*! ./statements/translate */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/translate.js\");\nconst modify_internal_1 = __webpack_require__(/*! ./statements/modify_internal */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_internal.js\");\nconst data_2 = __webpack_require__(/*! ./statements/data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/data.js\");\nconst parameter_1 = __webpack_require__(/*! ./statements/parameter */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/parameter.js\");\nconst fieldsymbol_1 = __webpack_require__(/*! ./statements/fieldsymbol */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/fieldsymbol.js\");\nconst tables_1 = __webpack_require__(/*! ./statements/tables */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/tables.js\");\nconst selectoption_1 = __webpack_require__(/*! ./statements/selectoption */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selectoption.js\");\nconst interface_deferred_1 = __webpack_require__(/*! ./statements/interface_deferred */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/interface_deferred.js\");\nconst class_deferred_1 = __webpack_require__(/*! ./statements/class_deferred */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_deferred.js\");\nconst call_1 = __webpack_require__(/*! ./statements/call */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call.js\");\nconst class_implementation_1 = __webpack_require__(/*! ./statements/class_implementation */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_implementation.js\");\nconst method_implementation_1 = __webpack_require__(/*! ./statements/method_implementation */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/method_implementation.js\");\nconst move_1 = __webpack_require__(/*! ./statements/move */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move.js\");\nconst move_corresponding_1 = __webpack_require__(/*! ./statements/move_corresponding */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/move_corresponding.js\");\nconst catch_1 = __webpack_require__(/*! ./statements/catch */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/catch.js\");\nconst loop_1 = __webpack_require__(/*! ./statements/loop */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop.js\");\nconst read_table_1 = __webpack_require__(/*! ./statements/read_table */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_table.js\");\nconst select_1 = __webpack_require__(/*! ./statements/select */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select.js\");\nconst insert_internal_1 = __webpack_require__(/*! ./statements/insert_internal */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_internal.js\");\nconst split_1 = __webpack_require__(/*! ./statements/split */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/split.js\");\nconst assign_1 = __webpack_require__(/*! ./statements/assign */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assign.js\");\nconst convert_1 = __webpack_require__(/*! ./statements/convert */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/convert.js\");\nconst describe_1 = __webpack_require__(/*! ./statements/describe */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/describe.js\");\nconst read_textpool_1 = __webpack_require__(/*! ./statements/read_textpool */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_textpool.js\");\nconst find_1 = __webpack_require__(/*! ./statements/find */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/find.js\");\nconst message_1 = __webpack_require__(/*! ./statements/message */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/message.js\");\nconst get_time_1 = __webpack_require__(/*! ./statements/get_time */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_time.js\");\nconst get_parameter_1 = __webpack_require__(/*! ./statements/get_parameter */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_parameter.js\");\nconst when_type_1 = __webpack_require__(/*! ./statements/when_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when_type.js\");\nconst if_1 = __webpack_require__(/*! ./statements/if */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/if.js\");\nconst else_if_1 = __webpack_require__(/*! ./statements/else_if */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/else_if.js\");\nconst append_1 = __webpack_require__(/*! ./statements/append */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/append.js\");\nconst selection_screen_1 = __webpack_require__(/*! ./statements/selection_screen */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/selection_screen.js\");\nconst ranges_1 = __webpack_require__(/*! ./statements/ranges */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/ranges.js\");\nconst write_1 = __webpack_require__(/*! ./statements/write */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/write.js\");\nconst case_1 = __webpack_require__(/*! ./statements/case */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/case.js\");\nconst create_object_1 = __webpack_require__(/*! ./statements/create_object */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_object.js\");\nconst do_1 = __webpack_require__(/*! ./statements/do */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/do.js\");\nconst concatenate_1 = __webpack_require__(/*! ./statements/concatenate */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/concatenate.js\");\nconst call_function_1 = __webpack_require__(/*! ./statements/call_function */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_function.js\");\nconst clear_1 = __webpack_require__(/*! ./statements/clear */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/clear.js\");\nconst replace_1 = __webpack_require__(/*! ./statements/replace */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/replace.js\");\nconst get_bit_1 = __webpack_require__(/*! ./statements/get_bit */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_bit.js\");\nconst raise_1 = __webpack_require__(/*! ./statements/raise */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise.js\");\nconst delete_internal_1 = __webpack_require__(/*! ./statements/delete_internal */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_internal.js\");\nconst receive_1 = __webpack_require__(/*! ./statements/receive */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/receive.js\");\nconst when_1 = __webpack_require__(/*! ./statements/when */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/when.js\");\nconst create_data_1 = __webpack_require__(/*! ./statements/create_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/create_data.js\");\nconst call_transformation_1 = __webpack_require__(/*! ./statements/call_transformation */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transformation.js\");\nconst get_locale_1 = __webpack_require__(/*! ./statements/get_locale */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_locale.js\");\nconst set_locale_1 = __webpack_require__(/*! ./statements/set_locale */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_locale.js\");\nconst sort_1 = __webpack_require__(/*! ./statements/sort */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/sort.js\");\nconst read_report_1 = __webpack_require__(/*! ./statements/read_report */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_report.js\");\nconst authority_check_1 = __webpack_require__(/*! ./statements/authority_check */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/authority_check.js\");\nconst insert_report_1 = __webpack_require__(/*! ./statements/insert_report */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_report.js\");\nconst get_reference_1 = __webpack_require__(/*! ./statements/get_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_reference.js\");\nconst insert_database_1 = __webpack_require__(/*! ./statements/insert_database */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_database.js\");\nconst delete_database_1 = __webpack_require__(/*! ./statements/delete_database */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_database.js\");\nconst import_dynpro_1 = __webpack_require__(/*! ./statements/import_dynpro */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import_dynpro.js\");\nconst syntax_check_1 = __webpack_require__(/*! ./statements/syntax_check */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/syntax_check.js\");\nconst import_1 = __webpack_require__(/*! ./statements/import */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import.js\");\nconst export_1 = __webpack_require__(/*! ./statements/export */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/export.js\");\nconst scan_1 = __webpack_require__(/*! ./statements/scan */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/scan.js\");\nconst submit_1 = __webpack_require__(/*! ./statements/submit */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/submit.js\");\nconst open_dataset_1 = __webpack_require__(/*! ./statements/open_dataset */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/open_dataset.js\");\nconst close_dataset_1 = __webpack_require__(/*! ./statements/close_dataset */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/close_dataset.js\");\nconst get_run_time_1 = __webpack_require__(/*! ./statements/get_run_time */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_run_time.js\");\nconst update_database_1 = __webpack_require__(/*! ./statements/update_database */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/update_database.js\");\nconst add_1 = __webpack_require__(/*! ./statements/add */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add.js\");\nconst subtract_1 = __webpack_require__(/*! ./statements/subtract */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract.js\");\nconst add_corresponding_1 = __webpack_require__(/*! ./statements/add_corresponding */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/add_corresponding.js\");\nconst subtract_corresponding_1 = __webpack_require__(/*! ./statements/subtract_corresponding */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/subtract_corresponding.js\");\nconst multiply_1 = __webpack_require__(/*! ./statements/multiply */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/multiply.js\");\nconst divide_1 = __webpack_require__(/*! ./statements/divide */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/divide.js\");\nconst condense_1 = __webpack_require__(/*! ./statements/condense */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/condense.js\");\nconst controls_1 = __webpack_require__(/*! ./statements/controls */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/controls.js\");\nconst while_1 = __webpack_require__(/*! ./statements/while */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/while.js\");\nconst select_loop_1 = __webpack_require__(/*! ./statements/select_loop */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/select_loop.js\");\nconst check_1 = __webpack_require__(/*! ./statements/check */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/check.js\");\nconst log_point_1 = __webpack_require__(/*! ./statements/log_point */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/log_point.js\");\nconst severity_1 = __webpack_require__(/*! ../../severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nconst raise_event_1 = __webpack_require__(/*! ./statements/raise_event */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise_event.js\");\nconst form_1 = __webpack_require__(/*! ./statements/form */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/form.js\");\nconst assert_1 = __webpack_require__(/*! ./statements/assert */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/assert.js\");\nconst set_parameter_1 = __webpack_require__(/*! ./statements/set_parameter */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_parameter.js\");\nconst class_local_friends_1 = __webpack_require__(/*! ./statements/class_local_friends */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_local_friends.js\");\nconst get_badi_1 = __webpack_require__(/*! ./statements/get_badi */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_badi.js\");\nconst with_1 = __webpack_require__(/*! ./statements/with */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with.js\");\nconst with_loop_1 = __webpack_require__(/*! ./statements/with_loop */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/with_loop.js\");\nconst system_call_1 = __webpack_require__(/*! ./statements/system_call */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/system_call.js\");\nconst collect_1 = __webpack_require__(/*! ./statements/collect */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/collect.js\");\nconst transfer_1 = __webpack_require__(/*! ./statements/transfer */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/transfer.js\");\nconst modify_database_1 = __webpack_require__(/*! ./statements/modify_database */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_database.js\");\nconst truncate_dataset_1 = __webpack_require__(/*! ./statements/truncate_dataset */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/truncate_dataset.js\");\nconst call_badi_1 = __webpack_require__(/*! ./statements/call_badi */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_badi.js\");\nconst call_kernel_1 = __webpack_require__(/*! ./statements/call_kernel */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_kernel.js\");\nconst pack_1 = __webpack_require__(/*! ./statements/pack */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/pack.js\");\nconst unpack_1 = __webpack_require__(/*! ./statements/unpack */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unpack.js\");\nconst format_1 = __webpack_require__(/*! ./statements/format */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/format.js\");\nconst set_pf_status_1 = __webpack_require__(/*! ./statements/set_pf_status */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_pf_status.js\");\nconst set_titlebar_1 = __webpack_require__(/*! ./statements/set_titlebar */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_titlebar.js\");\nconst call_transaction_1 = __webpack_require__(/*! ./statements/call_transaction */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_transaction.js\");\nconst set_handler_1 = __webpack_require__(/*! ./statements/set_handler */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_handler.js\");\nconst wait_1 = __webpack_require__(/*! ./statements/wait */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/wait.js\");\nconst delete_report_1 = __webpack_require__(/*! ./statements/delete_report */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_report.js\");\nconst shift_1 = __webpack_require__(/*! ./statements/shift */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/shift.js\");\nconst set_bit_1 = __webpack_require__(/*! ./statements/set_bit */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/set_bit.js\");\nconst modify_screen_1 = __webpack_require__(/*! ./statements/modify_screen */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_screen.js\");\nconst delete_cluster_1 = __webpack_require__(/*! ./statements/delete_cluster */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_cluster.js\");\nconst unassign_1 = __webpack_require__(/*! ./statements/unassign */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/unassign.js\");\nconst insert_textpool_1 = __webpack_require__(/*! ./statements/insert_textpool */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_textpool.js\");\nconst get_cursor_1 = __webpack_require__(/*! ./statements/get_cursor */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_cursor.js\");\nconst loop_at_screen_1 = __webpack_require__(/*! ./statements/loop_at_screen */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/loop_at_screen.js\");\nconst insert_field_group_1 = __webpack_require__(/*! ./statements/insert_field_group */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_field_group.js\");\nconst read_entities_1 = __webpack_require__(/*! ./statements/read_entities */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/read_entities.js\");\nconst modify_entities_1 = __webpack_require__(/*! ./statements/modify_entities */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/modify_entities.js\");\nconst commit_entities_1 = __webpack_require__(/*! ./statements/commit_entities */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/commit_entities.js\");\n// -----------------------------------\nconst map = {};\nfunction addToMap(handler) {\n if (map[handler.constructor.name] !== undefined) {\n throw new Error(\"syntax.ts duplicate statement syntax handler\");\n }\n map[handler.constructor.name] = handler;\n}\nif (Object.keys(map).length === 0) {\n addToMap(new interface_deferred_1.InterfaceDeferred());\n addToMap(new perform_1.Perform());\n addToMap(new class_deferred_1.ClassDeferred());\n addToMap(new call_1.Call());\n addToMap(new set_handler_1.SetHandler());\n addToMap(new class_implementation_1.ClassImplementation());\n addToMap(new method_implementation_1.MethodImplementation());\n addToMap(new move_1.Move());\n addToMap(new get_badi_1.GetBadi());\n addToMap(new call_badi_1.CallBadi());\n addToMap(new get_cursor_1.GetCursor());\n addToMap(new replace_1.Replace());\n addToMap(new truncate_dataset_1.TruncateDataset());\n addToMap(new assert_1.Assert());\n addToMap(new catch_1.Catch());\n addToMap(new loop_1.Loop());\n addToMap(new loop_at_screen_1.LoopAtScreen());\n addToMap(new set_pf_status_1.SetPFStatus());\n addToMap(new set_titlebar_1.SetTitlebar());\n addToMap(new submit_1.Submit());\n addToMap(new insert_textpool_1.InsertTextpool());\n addToMap(new read_table_1.ReadTable());\n addToMap(new syntax_check_1.SyntaxCheck());\n addToMap(new delete_report_1.DeleteReport());\n addToMap(new import_1.Import());\n addToMap(new collect_1.Collect());\n addToMap(new export_1.Export());\n addToMap(new scan_1.Scan());\n addToMap(new transfer_1.Transfer());\n addToMap(new split_1.Split());\n addToMap(new call_function_1.CallFunction());\n addToMap(new delete_internal_1.DeleteInternal());\n addToMap(new delete_cluster_1.DeleteCluster());\n addToMap(new clear_1.Clear());\n addToMap(new receive_1.Receive());\n addToMap(new get_bit_1.GetBit());\n addToMap(new class_local_friends_1.ClassLocalFriends());\n addToMap(new select_1.Select());\n addToMap(new modify_screen_1.ModifyScreen());\n addToMap(new insert_internal_1.InsertInternal());\n addToMap(new pack_1.Pack());\n addToMap(new unpack_1.Unpack());\n addToMap(new assign_1.Assign());\n addToMap(new set_locale_1.SetLocale());\n addToMap(new set_parameter_1.SetParameter());\n addToMap(new convert_1.Convert());\n addToMap(new controls_1.Controls());\n addToMap(new when_1.When());\n addToMap(new insert_database_1.InsertDatabase());\n addToMap(new delete_database_1.DeleteDatabase());\n addToMap(new update_database_1.UpdateDatabase());\n addToMap(new sort_1.Sort());\n addToMap(new wait_1.Wait());\n addToMap(new condense_1.Condense());\n addToMap(new set_bit_1.SetBit());\n addToMap(new open_dataset_1.OpenDataset());\n addToMap(new close_dataset_1.CloseDataset());\n addToMap(new read_report_1.ReadReport());\n addToMap(new do_1.Do());\n addToMap(new describe_1.Describe());\n addToMap(new find_1.Find());\n addToMap(new message_1.Message());\n addToMap(new system_call_1.SystemCall());\n addToMap(new insert_field_group_1.InsertFieldGroup());\n addToMap(new get_time_1.GetTime());\n addToMap(new unassign_1.Unassign());\n addToMap(new get_parameter_1.GetParameter());\n addToMap(new format_1.Format());\n addToMap(new when_type_1.WhenType());\n addToMap(new if_1.If());\n addToMap(new log_point_1.LogPoint());\n addToMap(new while_1.While());\n addToMap(new with_1.With());\n addToMap(new with_loop_1.WithLoop());\n addToMap(new call_transformation_1.CallTransformation());\n addToMap(new call_transaction_1.CallTransaction());\n addToMap(new get_locale_1.GetLocale());\n addToMap(new get_reference_1.GetReference());\n addToMap(new else_if_1.ElseIf());\n addToMap(new get_run_time_1.GetRunTime());\n addToMap(new create_object_1.CreateObject());\n addToMap(new import_dynpro_1.ImportDynpro());\n addToMap(new create_data_1.CreateData());\n addToMap(new case_1.Case());\n addToMap(new shift_1.Shift());\n addToMap(new raise_1.Raise());\n addToMap(new concatenate_1.Concatenate());\n addToMap(new append_1.Append());\n addToMap(new select_loop_1.SelectLoop());\n addToMap(new write_1.Write());\n addToMap(new move_corresponding_1.MoveCorresponding());\n addToMap(new authority_check_1.AuthorityCheck());\n addToMap(new insert_report_1.InsertReport());\n addToMap(new selection_screen_1.SelectionScreen());\n addToMap(new ranges_1.Ranges());\n addToMap(new add_1.Add());\n addToMap(new raise_event_1.RaiseEvent());\n addToMap(new subtract_1.Subtract());\n addToMap(new add_corresponding_1.AddCorresponding());\n addToMap(new subtract_corresponding_1.SubtractCorresponding());\n addToMap(new multiply_1.Multiply());\n addToMap(new divide_1.Divide());\n addToMap(new check_1.Check());\n addToMap(new modify_database_1.ModifyDatabase());\n addToMap(new form_1.Form());\n addToMap(new selectoption_1.SelectOption());\n addToMap(new tables_1.Tables());\n addToMap(new parameter_1.Parameter());\n addToMap(new fieldsymbol_1.FieldSymbol());\n addToMap(new read_entities_1.ReadEntities());\n addToMap(new modify_entities_1.ModifyEntities());\n addToMap(new commit_entities_1.CommitEntities());\n addToMap(new call_kernel_1.CallKernel());\n addToMap(new search_1.Search());\n addToMap(new translate_1.Translate());\n addToMap(new modify_internal_1.ModifyInternal());\n addToMap(new read_textpool_1.ReadTextpool());\n}\n// -----------------------------------\nclass SyntaxLogic {\n constructor(reg, object) {\n this.reg = reg;\n this.issues = [];\n this.object = object;\n this.scope = _current_scope_1.CurrentScope.buildDefault(this.reg, object);\n this.helpers = {\n oooc: new _object_oriented_1.ObjectOriented(this.scope),\n proc: new _procedural_1.Procedural(this.reg, this.scope),\n };\n }\n run() {\n if (this.object.syntaxResult !== undefined) {\n return this.object.syntaxResult;\n }\n this.issues = [];\n this.reg.getDDICReferences().clear(this.object);\n this.reg.getMSAGReferences().clear(this.object);\n if (this.object instanceof objects_1.Program && this.object.isInclude()) {\n // todo, show some kind of error?\n return { issues: [], spaghetti: this.scope.pop(new position_1.Position(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)) };\n }\n this.traverseObject();\n for (;;) {\n const spaghetti = this.scope.pop(new position_1.Position(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)); // pop built-in scopes\n if (spaghetti.getTop().getIdentifier().stype === _scope_type_1.ScopeType.BuiltIn) {\n const result = { issues: this.issues, spaghetti };\n this.object.syntaxResult = result;\n return result;\n }\n }\n }\n /////////////////////////////\n traverseObject() {\n const traversal = this.object.getSequencedFiles();\n if (this.object instanceof objects_1.Program\n || this.object instanceof objects_1.FunctionGroup) {\n for (const f of this.object.getSequencedFiles()) {\n // add FORM defintions to the _global object scope\n this.helpers.proc.addAllFormDefinitions(f, this.object);\n }\n const main = this.object.getMainABAPFile();\n if (main !== undefined) {\n let stype = _scope_type_1.ScopeType.Program;\n if (this.object instanceof objects_1.FunctionGroup) {\n stype = _scope_type_1.ScopeType.FunctionGroup;\n }\n this.scope.push(stype, this.object.getName(), new position_1.Position(1, 1), main.getFilename());\n }\n }\n else if (this.object instanceof objects_1.TypePool) {\n const main = this.object.getMainABAPFile();\n if (main !== undefined) {\n this.scope.push(_scope_type_1.ScopeType.TypePool, this.object.getName(), new position_1.Position(1, 1), main.getFilename());\n }\n }\n for (const file of traversal) {\n this.currentFile = file;\n const structure = this.currentFile.getStructure();\n if (structure === undefined) {\n return this.scope;\n }\n else {\n this.traverse(structure);\n }\n }\n return this.scope;\n }\n newIssue(token, message) {\n const issue = issue_1.Issue.atToken(this.currentFile, token, message, \"check_syntax\", severity_1.Severity.Error);\n this.issues.push(issue);\n }\n traverse(node) {\n for (const child of node.getChildren()) {\n const isStructure = child instanceof nodes_1.StructureNode;\n const isStatement = child instanceof nodes_1.StatementNode;\n try {\n if (isStructure) {\n const gotoNext = this.updateScopeStructure(child);\n if (gotoNext === true) {\n continue;\n }\n }\n else if (isStatement) {\n this.updateScopeStatement(child);\n }\n }\n catch (e) {\n this.newIssue(child.getFirstToken(), e.message);\n break;\n }\n // walk into INCLUDEs\n if (isStatement && child.get() instanceof Statements.Include) {\n const file = this.helpers.proc.findInclude(child, this.object);\n if (file !== undefined && file.getStructure() !== undefined) {\n const old = this.currentFile;\n this.currentFile = file;\n this.traverse(file.getStructure());\n this.currentFile = old;\n }\n }\n if (isStructure || isStatement) {\n this.traverse(child);\n }\n }\n }\n // if this returns true, then the traversal should continue with next child\n updateScopeStructure(node) {\n const filename = this.currentFile.getFilename();\n const stru = node.get();\n if (stru instanceof Structures.ClassDefinition) {\n new class_definition_1.ClassDefinition(node, filename, this.scope);\n return true;\n }\n else if (stru instanceof Structures.Interface) {\n new interface_definition_1.InterfaceDefinition(node, filename, this.scope);\n return true;\n }\n else if (stru instanceof Structures.Types) {\n this.scope.addType(new types_1.Types().runSyntax(node, this.scope, filename));\n return true;\n }\n else if (stru instanceof Structures.Constants) {\n this.scope.addIdentifier(new constants_1.Constants().runSyntax(node, this.scope, filename).type);\n return true;\n }\n else if (stru instanceof Structures.Data) {\n this.scope.addIdentifier(new data_1.Data().runSyntax(node, this.scope, filename));\n return true;\n }\n else if (stru instanceof Structures.Statics) {\n this.scope.addIdentifier(new statics_1.Statics().runSyntax(node, this.scope, filename));\n return true;\n }\n else if (stru instanceof Structures.TypeEnum) {\n const values = new type_enum_1.TypeEnum().runSyntax(node, this.scope, filename).values;\n this.scope.addList(values);\n return true;\n }\n return false;\n }\n updateScopeStatement(node) {\n const filename = this.currentFile.getFilename();\n const s = node.get();\n // todo, refactor\n if (s instanceof Statements.Type) {\n this.scope.addType(new type_1.Type().runSyntax(node, this.scope, filename));\n return;\n }\n else if (s instanceof Statements.Constant) {\n this.scope.addIdentifier(new constant_1.Constant().runSyntax(node, this.scope, filename));\n return;\n }\n else if (s instanceof Statements.Static) {\n this.scope.addIdentifier(new static_1.Static().runSyntax(node, this.scope, filename));\n return;\n }\n else if (s instanceof Statements.Data) {\n this.scope.addIdentifier(new data_2.Data().runSyntax(node, this.scope, filename));\n return;\n }\n const name = s.constructor.name;\n if (map[name]) {\n map[name].runSyntax(node, this.scope, filename);\n return;\n }\n if (s instanceof Statements.FunctionModule) {\n this.helpers.proc.findFunctionScope(this.object, node, filename);\n }\n else if (s instanceof Statements.EndForm\n || s instanceof Statements.EndFunction\n || s instanceof Statements.EndClass\n || s instanceof Statements.EndInterface) {\n this.scope.pop(node.getLastToken().getEnd());\n }\n else if (s instanceof Statements.EndMethod) {\n this.scope.pop(node.getLastToken().getEnd());\n if (this.scope.getType() === _scope_type_1.ScopeType.MethodInstance) {\n this.scope.pop(node.getLastToken().getEnd());\n }\n }\n }\n}\nexports.SyntaxLogic = SyntaxLogic;\n//# sourceMappingURL=syntax.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/abap_file.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/abap_file.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPFile = void 0;\nconst tokens_1 = __webpack_require__(/*! ./1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _abstract_file_1 = __webpack_require__(/*! ../files/_abstract_file */ \"./node_modules/@abaplint/core/build/src/files/_abstract_file.js\");\nclass ABAPFile extends _abstract_file_1.AbstractFile {\n constructor(file, tokens, statements, structure, info) {\n super(file.getFilename());\n this.file = file;\n this.tokens = tokens;\n this.statements = statements;\n this.structure = structure;\n this.info = info;\n }\n getRaw() {\n return this.file.getRaw();\n }\n getInfo() {\n return this.info;\n }\n getRawRows() {\n return this.file.getRawRows();\n }\n getStructure() {\n return this.structure;\n }\n getTokens(withPragmas = true) {\n if (withPragmas === true) {\n return this.tokens;\n }\n else {\n const tokens = [];\n this.tokens.forEach((t) => {\n if (!(t instanceof tokens_1.Pragma)) {\n tokens.push(t);\n }\n });\n return tokens;\n }\n }\n getStatements() {\n return this.statements;\n }\n}\nexports.ABAPFile = ABAPFile;\n//# sourceMappingURL=abap_file.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/abap_file.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/abap_parser.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/abap_parser.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPParser = void 0;\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst lexer_1 = __webpack_require__(/*! ./1_lexer/lexer */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/lexer.js\");\nconst statement_parser_1 = __webpack_require__(/*! ./2_statements/statement_parser */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statement_parser.js\");\nconst structure_parser_1 = __webpack_require__(/*! ./3_structures/structure_parser */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structure_parser.js\");\nconst abap_file_information_1 = __webpack_require__(/*! ./4_file_information/abap_file_information */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information.js\");\nconst abap_file_1 = __webpack_require__(/*! ./abap_file */ \"./node_modules/@abaplint/core/build/src/abap/abap_file.js\");\nclass ABAPParser {\n constructor(version, globalMacros, reg) {\n this.version = version ? version : version_1.defaultVersion;\n this.globalMacros = globalMacros ? globalMacros : [];\n this.reg = reg;\n }\n // files is input for a single object\n parse(files) {\n const issues = [];\n const output = [];\n const start = Date.now();\n // 1: lexing\n const b1 = Date.now();\n const lexerResult = files.map(f => new lexer_1.Lexer().run(f));\n const lexingRuntime = Date.now() - b1;\n // 2: statements\n const b2 = Date.now();\n const statementResult = new statement_parser_1.StatementParser(this.version, this.reg).run(lexerResult, this.globalMacros);\n const statementsRuntime = Date.now() - b2;\n // 3: structures\n const b3 = Date.now();\n for (const f of statementResult) {\n const result = structure_parser_1.StructureParser.run(f);\n // 4: file information\n const info = new abap_file_information_1.ABAPFileInformation(result.node, f.file.getFilename());\n output.push(new abap_file_1.ABAPFile(f.file, f.tokens, f.statements, result.node, info));\n issues.push(...result.issues);\n }\n const structuresRuntime = Date.now() - b3;\n const end = Date.now();\n return { issues,\n output,\n runtime: end - start,\n runtimeExtra: { lexing: lexingRuntime, statements: statementsRuntime, structure: structuresRuntime },\n };\n }\n}\nexports.ABAPParser = ABAPParser;\n//# sourceMappingURL=abap_parser.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/abap_parser.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/artifacts.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/artifacts.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ArtifactsABAP = void 0;\nconst Statements = __webpack_require__(/*! ./2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ./2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ./2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst Structures = __webpack_require__(/*! ./3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nclass List {\n constructor() {\n this.words = [];\n }\n add(keywords, source) {\n for (const w of keywords) {\n const index = this.find(w);\n if (index >= 0) {\n this.words[index].source.push(source);\n }\n else {\n this.words.push({ word: w, source: [source] });\n }\n }\n }\n get() {\n return this.words;\n }\n find(keyword) {\n for (let i = 0; i < this.words.length; i++) {\n if (this.words[i].word === keyword) {\n return i;\n }\n }\n return -1;\n }\n}\nfunction className(cla) {\n return cla.constructor.name;\n}\nclass ArtifactsABAP {\n static getStructures() {\n const ret = [];\n const list = Structures;\n for (const key in Structures) {\n if (typeof list[key] === \"function\") {\n ret.push(new list[key]());\n }\n }\n return ret;\n }\n static getExpressions() {\n const ret = [];\n const list = Expressions;\n for (const key in Expressions) {\n if (typeof list[key] === \"function\") {\n ret.push(list[key]);\n }\n }\n return ret;\n }\n static getStatements() {\n const ret = [];\n const list = Statements;\n for (const key in Statements) {\n if (typeof list[key] === \"function\") {\n ret.push(new list[key]());\n }\n }\n return ret;\n }\n static getKeywords() {\n const list = new List();\n for (const stat of this.getStatements()) {\n list.add(combi_1.Combi.listKeywords(stat.getMatcher()), \"statement_\" + className(stat));\n }\n for (const expr of this.getExpressions()) {\n list.add(combi_1.Combi.listKeywords(new expr().getRunnable()), \"expression_\" + className(expr));\n }\n return list.get();\n }\n}\nexports.ArtifactsABAP = ArtifactsABAP;\n//# sourceMappingURL=artifacts.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/artifacts.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/flow/flow_graph.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/flow/flow_graph.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FlowGraph = void 0;\nclass FlowGraph {\n constructor(counter) {\n this.edges = {};\n this.label = \"undefined\";\n this.startNode = \"start#\" + counter;\n this.endNode = \"end#\" + counter;\n }\n getStart() {\n return this.startNode;\n }\n getEnd() {\n return this.endNode;\n }\n addEdge(from, to) {\n if (this.edges[from] === undefined) {\n this.edges[from] = {};\n }\n this.edges[from][to] = true;\n }\n removeEdge(from, to) {\n if (this.edges[from] === undefined) {\n return;\n }\n delete this.edges[from][to];\n if (Object.keys(this.edges[from]).length === 0) {\n delete this.edges[from];\n }\n }\n listEdges() {\n const list = [];\n for (const from of Object.keys(this.edges)) {\n for (const to of Object.keys(this.edges[from])) {\n list.push({ from, to });\n }\n }\n return list;\n }\n listInto(to, skipStart = true) {\n const ret = [];\n for (const e of this.listEdges()) {\n if (skipStart === true && e.from === this.getStart()) {\n continue;\n }\n if (e.to === to) {\n ret.push(e.from);\n }\n }\n return ret;\n }\n listNodes() {\n const set = new Set();\n for (const l of this.listEdges()) {\n set.add(l.from);\n set.add(l.to);\n }\n return Array.from(set.values());\n }\n hasEdges() {\n return Object.keys(this.edges).length > 0;\n }\n /** return value: end node of to graph */\n addGraph(from, to) {\n if (to.hasEdges() === false) {\n return from;\n }\n this.addEdge(from, to.getStart());\n to.listEdges().forEach(e => this.addEdge(e.from, e.to));\n return to.getEnd();\n }\n toJSON() {\n return JSON.stringify(this.edges);\n }\n toTextEdges() {\n let graph = \"\";\n for (const l of this.listEdges()) {\n graph += `\"${l.from}\" -> \"${l.to}\";\\n`;\n }\n return graph.trim();\n }\n setLabel(label) {\n this.label = label;\n }\n toDigraph() {\n return `digraph G {\r\nlabelloc=\"t\";\r\nlabel=\"${this.label}\";\r\ngraph [fontname = \"helvetica\"];\r\nnode [fontname = \"helvetica\", shape=\"box\"];\r\nedge [fontname = \"helvetica\"];\r\n${this.toTextEdges()}\r\n}`;\n }\n listSources(node) {\n const set = new Set();\n for (const l of this.listEdges()) {\n if (node === l.to) {\n set.add(l.from);\n }\n }\n return Array.from(set.values());\n }\n listTargets(node) {\n const set = new Set();\n for (const l of this.listEdges()) {\n if (node === l.from) {\n set.add(l.to);\n }\n }\n return Array.from(set.values());\n }\n /** removes all nodes containing \"#\" that have one in-going and one out-going edge */\n reduce() {\n for (const node of this.listNodes()) {\n if (node.includes(\"#\") === false) {\n continue;\n }\n const sources = this.listSources(node);\n const targets = this.listTargets(node);\n if (sources.length > 0 && targets.length > 0) {\n // hash node in the middle of the graph\n for (const s of sources) {\n this.removeEdge(s, node);\n }\n for (const t of targets) {\n this.removeEdge(node, t);\n }\n for (const s of sources) {\n for (const t of targets) {\n this.addEdge(s, t);\n }\n }\n }\n if (node.startsWith(\"end#\") && sources.length === 0) {\n for (const t of targets) {\n this.removeEdge(node, t);\n }\n }\n }\n return this;\n }\n}\nexports.FlowGraph = FlowGraph;\n//# sourceMappingURL=flow_graph.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/flow/flow_graph.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/flow/statement_flow.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/flow/statement_flow.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StatementFlow = void 0;\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst flow_graph_1 = __webpack_require__(/*! ./flow_graph */ \"./node_modules/@abaplint/core/build/src/abap/flow/flow_graph.js\");\nclass StatementFlow {\n constructor() {\n this.counter = 0;\n }\n build(stru) {\n var _a, _b;\n const ret = [];\n const forms = stru.findAllStructures(Structures.Form);\n for (const f of forms) {\n const formName = \"FORM \" + ((_a = f.findFirstExpression(Expressions.FormName)) === null || _a === void 0 ? void 0 : _a.concatTokens());\n this.counter = 1;\n const graph = this.traverseBody(this.findBody(f), { procedureEnd: \"end#1\" });\n graph.setLabel(formName);\n ret.push(graph);\n }\n const methods = stru.findAllStructures(Structures.Method);\n for (const f of methods) {\n const methodName = \"METHOD \" + ((_b = f.findFirstExpression(Expressions.MethodName)) === null || _b === void 0 ? void 0 : _b.concatTokens());\n this.counter = 1;\n const graph = this.traverseBody(this.findBody(f), { procedureEnd: \"end#1\" });\n graph.setLabel(methodName);\n ret.push(graph);\n }\n return ret.map(f => f.reduce());\n }\n ////////////////////\n findBody(f) {\n var _a;\n return ((_a = f.findDirectStructure(Structures.Body)) === null || _a === void 0 ? void 0 : _a.getChildren()) || [];\n }\n buildName(statement) {\n let token = undefined;\n const colon = statement.getColon();\n if (colon === undefined) {\n token = statement.getFirstToken();\n }\n else {\n for (const t of statement.getTokens()) {\n if (t.getStart().isAfter(colon.getEnd())) {\n token = t;\n break;\n }\n }\n }\n if (token === undefined) {\n return \"tokenError\";\n }\n return statement.get().constructor.name +\n \":\" + token.getRow() +\n \",\" + token.getCol();\n }\n traverseBody(children, context) {\n const graph = new flow_graph_1.FlowGraph(this.counter++);\n if (children.length === 0) {\n graph.addEdge(graph.getStart(), graph.getEnd());\n return graph;\n }\n let current = graph.getStart();\n for (const c of children) {\n if (c.get() instanceof Structures.Normal) {\n const firstChild = c.getFirstChild(); // \"Normal\" only has one child\n if (firstChild instanceof nodes_1.StatementNode) {\n const name = this.buildName(firstChild);\n graph.addEdge(current, name);\n current = name;\n if (firstChild.get() instanceof Statements.Check) {\n if (context.loopStart) {\n graph.addEdge(name, context.loopStart);\n }\n else {\n graph.addEdge(name, context.procedureEnd);\n }\n }\n else if (firstChild.get() instanceof Statements.Assert) {\n graph.addEdge(name, context.procedureEnd);\n }\n else if (firstChild.get() instanceof Statements.Continue && context.loopStart) {\n graph.addEdge(name, context.loopStart);\n return graph;\n }\n else if (firstChild.get() instanceof Statements.Exit) {\n if (context.loopEnd) {\n graph.addEdge(name, context.loopEnd);\n }\n else {\n graph.addEdge(name, context.procedureEnd);\n }\n return graph;\n }\n else if (firstChild.get() instanceof Statements.Return) {\n graph.addEdge(name, context.procedureEnd);\n return graph;\n }\n }\n else if (firstChild instanceof nodes_1.StructureNode) {\n const sub = this.traverseStructure(firstChild, context);\n current = graph.addGraph(current, sub);\n }\n }\n }\n graph.addEdge(current, graph.getEnd());\n return graph;\n }\n traverseStructure(n, context) {\n const graph = new flow_graph_1.FlowGraph(this.counter++);\n if (n === undefined) {\n return graph;\n }\n let current = graph.getStart();\n const type = n.get();\n if (type instanceof Structures.If) {\n const ifName = this.buildName(n.findDirectStatement(Statements.If));\n const sub = this.traverseBody(this.findBody(n), context);\n graph.addEdge(current, ifName);\n graph.addGraph(ifName, sub);\n graph.addEdge(sub.getEnd(), graph.getEnd());\n current = ifName;\n for (const e of n.findDirectStructures(Structures.ElseIf)) {\n const elseifst = e.findDirectStatement(Statements.ElseIf);\n if (elseifst === undefined) {\n continue;\n }\n const elseIfName = this.buildName(elseifst);\n const sub = this.traverseBody(this.findBody(e), context);\n graph.addEdge(current, elseIfName);\n graph.addGraph(elseIfName, sub);\n graph.addEdge(sub.getEnd(), graph.getEnd());\n current = elseIfName;\n }\n const els = n.findDirectStructure(Structures.Else);\n const elsest = els === null || els === void 0 ? void 0 : els.findDirectStatement(Statements.Else);\n if (els && elsest) {\n const elseName = this.buildName(elsest);\n const sub = this.traverseBody(this.findBody(els), context);\n graph.addEdge(current, elseName);\n graph.addGraph(elseName, sub);\n graph.addEdge(sub.getEnd(), graph.getEnd());\n }\n else {\n graph.addEdge(ifName, graph.getEnd());\n }\n }\n else if (type instanceof Structures.Loop\n || type instanceof Structures.While\n || type instanceof Structures.With\n || type instanceof Structures.Provide\n || type instanceof Structures.Select\n || type instanceof Structures.Do) {\n const loopName = this.buildName(n.getFirstStatement());\n const sub = this.traverseBody(this.findBody(n), Object.assign(Object.assign({}, context), { loopStart: loopName, loopEnd: graph.getEnd() }));\n graph.addEdge(current, loopName);\n graph.addGraph(loopName, sub);\n graph.addEdge(sub.getEnd(), loopName);\n graph.addEdge(loopName, graph.getEnd());\n }\n else if (type instanceof Structures.Try) {\n const tryName = this.buildName(n.getFirstStatement());\n const body = this.traverseBody(this.findBody(n), context);\n graph.addEdge(current, tryName);\n graph.addGraph(tryName, body);\n graph.addEdge(body.getEnd(), graph.getEnd());\n for (const c of n.findDirectStructures(Structures.Catch)) {\n const catchName = this.buildName(c.getFirstStatement());\n const catchBody = this.traverseBody(this.findBody(c), context);\n // TODO: this does not take exceptions into account\n graph.addEdge(body.getEnd(), catchName);\n graph.addGraph(catchName, catchBody);\n graph.addEdge(catchBody.getEnd(), graph.getEnd());\n }\n // TODO, handle CLEANUP\n }\n else if (type instanceof Structures.Case) {\n const caseName = this.buildName(n.getFirstStatement());\n graph.addEdge(current, caseName);\n let othersFound = false;\n for (const w of n.findDirectStructures(Structures.When)) {\n const first = w.getFirstStatement();\n if (first === undefined) {\n continue;\n }\n if (first.get() instanceof Statements.WhenOthers) {\n othersFound = true;\n }\n const firstName = this.buildName(first);\n const sub = this.traverseBody(this.findBody(w), context);\n graph.addEdge(caseName, firstName);\n graph.addGraph(firstName, sub);\n graph.addEdge(sub.getEnd(), graph.getEnd());\n }\n if (othersFound === false) {\n graph.addEdge(caseName, graph.getEnd());\n }\n }\n else if (type instanceof Structures.CaseType) {\n const caseName = this.buildName(n.getFirstStatement());\n graph.addEdge(current, caseName);\n let othersFound = false;\n for (const w of n.findDirectStructures(Structures.WhenType)) {\n const first = w.getFirstStatement();\n if (first === undefined) {\n continue;\n }\n if (first.get() instanceof Statements.WhenOthers) {\n othersFound = true;\n }\n const firstName = this.buildName(first);\n const sub = this.traverseBody(this.findBody(w), context);\n graph.addEdge(caseName, firstName);\n graph.addGraph(firstName, sub);\n graph.addEdge(sub.getEnd(), graph.getEnd());\n }\n if (othersFound === false) {\n graph.addEdge(caseName, graph.getEnd());\n }\n }\n else {\n console.dir(\"StatementFlow,todo, \" + n.get().constructor.name);\n }\n return graph;\n }\n}\nexports.StatementFlow = StatementFlow;\n//# sourceMappingURL=statement_flow.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/flow/statement_flow.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AbstractNode = void 0;\nclass AbstractNode {\n constructor() {\n this.children = [];\n }\n addChild(n) {\n this.children.push(n);\n }\n setChildren(children) {\n this.children = children;\n }\n getChildren() {\n return this.children;\n }\n getFirstChild() {\n return this.children[0];\n }\n getLastChild() {\n return this.children[this.children.length - 1];\n }\n}\nexports.AbstractNode = AbstractNode;\n//# sourceMappingURL=_abstract_node.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExpressionNode = void 0;\nconst token_node_1 = __webpack_require__(/*! ./token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\");\nconst tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _abstract_node_1 = __webpack_require__(/*! ./_abstract_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js\");\nclass ExpressionNode extends _abstract_node_1.AbstractNode {\n constructor(expression) {\n super();\n this.expression = expression;\n }\n get() {\n return this.expression;\n }\n countTokens() {\n let ret = 0;\n for (const c of this.getChildren()) {\n ret = ret + c.countTokens();\n }\n return ret;\n }\n getFirstToken() {\n for (const child of this.getChildren()) {\n return child.getFirstToken();\n }\n throw new Error(\"ExpressionNode, getFirstToken, no children\");\n }\n concatTokens() {\n let str = \"\";\n let prev;\n for (const token of this.getTokens()) {\n if (token instanceof tokens_1.Pragma) {\n continue;\n }\n if (str === \"\") {\n str = token.getStr();\n }\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\n && prev.getRow() === token.getRow()) {\n str = str + token.getStr();\n }\n else {\n str = str + \" \" + token.getStr();\n }\n prev = token;\n }\n return str;\n }\n concatTokensWithoutStringsAndComments() {\n let str = \"\";\n let prev;\n for (const token of this.getTokens()) {\n if (token instanceof tokens_1.Comment\n || token instanceof tokens_1.StringToken\n || token instanceof tokens_1.StringTemplate\n || token instanceof tokens_1.StringTemplateBegin\n || token instanceof tokens_1.StringTemplateMiddle\n || token instanceof tokens_1.StringTemplateEnd) {\n continue;\n }\n if (str === \"\") {\n str = token.getStr();\n }\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\n && prev.getRow() === token.getRow()) {\n str = str + token.getStr();\n }\n else {\n str = str + \" \" + token.getStr();\n }\n prev = token;\n }\n return str;\n }\n getTokens() {\n const tokens = [];\n for (const c of this.getChildren()) {\n tokens.push(...this.toTokens(c));\n }\n return tokens;\n }\n toTokens(b) {\n const tokens = [];\n if (b instanceof token_node_1.TokenNode) {\n tokens.push(b.get());\n return tokens;\n }\n for (const c of b.getChildren()) {\n if (c instanceof token_node_1.TokenNode) {\n tokens.push(c.get());\n }\n else {\n tokens.push(...this.toTokens(c));\n }\n }\n return tokens;\n }\n getLastToken() {\n const child = this.getLastChild();\n if (child) {\n return child.getLastToken();\n }\n throw new Error(\"ExpressionNode, getLastToken, no children\");\n }\n getAllTokens() {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n ret.push(child.get());\n }\n else {\n ret.push(...child.getAllTokens());\n }\n }\n return ret;\n }\n getDirectTokens() {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n ret.push(child.get());\n }\n }\n return ret;\n }\n findDirectExpression(type) {\n for (const child of this.getChildren()) {\n if (child instanceof ExpressionNode && child.get() instanceof type) {\n return child;\n }\n }\n return undefined;\n }\n findExpressionAfterToken(text) {\n const children = this.getChildren();\n for (let i = 0; i < children.length - 1; i++) {\n const c = children[i];\n const next = children[i + 1];\n if (c instanceof token_node_1.TokenNode\n && c.get().getStr().toUpperCase() === text.toUpperCase()\n && next instanceof ExpressionNode) {\n return next;\n }\n }\n return undefined;\n }\n findDirectExpressions(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof ExpressionNode && child.get() instanceof type) {\n ret.push(child);\n }\n }\n return ret;\n }\n findDirectTokenByText(text) {\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode && child.get().getStr().toUpperCase() === text.toUpperCase()) {\n return child.get();\n }\n }\n return undefined;\n }\n findAllExpressionsRecursive(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n ret.push(child);\n }\n ret.push(...child.findAllExpressionsRecursive(type));\n }\n return ret;\n }\n findAllExpressions(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n ret.push(child);\n }\n else {\n ret.push(...child.findAllExpressions(type));\n }\n }\n return ret;\n }\n findAllExpressionsMulti(type, recursive = false) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n const before = ret.length;\n for (const t of type) {\n if (child.get() instanceof t) {\n ret.push(child);\n }\n }\n if (before === ret.length || recursive === true) {\n ret.push(...child.findAllExpressionsMulti(type, recursive));\n }\n }\n return ret;\n }\n findFirstExpression(type) {\n if (this.get() instanceof type) {\n return this;\n }\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n return child;\n }\n else {\n const res = child.findFirstExpression(type);\n if (res) {\n return res;\n }\n }\n }\n return undefined;\n }\n}\nexports.ExpressionNode = ExpressionNode;\n//# sourceMappingURL=expression_node.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/nodes/index.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/nodes/index.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./expression_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js\"), exports);\n__exportStar(__webpack_require__(/*! ./statement_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js\"), exports);\n__exportStar(__webpack_require__(/*! ./structure_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/structure_node.js\"), exports);\n__exportStar(__webpack_require__(/*! ./token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/nodes/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StatementNode = void 0;\nconst _abstract_node_1 = __webpack_require__(/*! ./_abstract_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js\");\nconst token_node_1 = __webpack_require__(/*! ./token_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js\");\nconst expression_node_1 = __webpack_require__(/*! ./expression_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/expression_node.js\");\nconst comment_1 = __webpack_require__(/*! ../1_lexer/tokens/comment */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/comment.js\");\nconst pragma_1 = __webpack_require__(/*! ../1_lexer/tokens/pragma */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/pragma.js\");\nconst string_1 = __webpack_require__(/*! ../1_lexer/tokens/string */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/string.js\");\nclass StatementNode extends _abstract_node_1.AbstractNode {\n constructor(statement, colon, pragmas) {\n super();\n this.statement = statement;\n this.colon = colon;\n if (pragmas) {\n this.pragmas = pragmas;\n }\n else {\n this.pragmas = [];\n }\n }\n get() {\n return this.statement;\n }\n getColon() {\n return this.colon;\n }\n getPragmas() {\n return this.pragmas;\n }\n setChildren(children) {\n if (children.length === 0) {\n throw new Error(\"statement: zero children\");\n }\n this.children = children;\n return this;\n }\n getStart() {\n return this.getFirstToken().getStart();\n }\n getEnd() {\n const last = this.getLastToken();\n return last.getEnd();\n }\n getTokens() {\n const tokens = [];\n for (const c of this.getChildren()) {\n tokens.push(...this.toTokens(c));\n }\n return tokens;\n }\n includesToken(search) {\n for (const t of this.getTokens()) {\n if (t.getStart().equals(search.getStart())) {\n return true;\n }\n }\n return false;\n }\n getTokenNodes() {\n const tokens = [];\n for (const c of this.getChildren()) {\n tokens.push(...this.toTokenNodess(c));\n }\n return tokens;\n }\n concatTokens() {\n let str = \"\";\n let prev;\n for (const token of this.getTokens()) {\n if (token instanceof pragma_1.Pragma) {\n continue;\n }\n if (str === \"\") {\n str = token.getStr();\n }\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\n && prev.getRow() === token.getRow()) {\n str = str + token.getStr();\n }\n else {\n str = str + \" \" + token.getStr();\n }\n prev = token;\n }\n return str;\n }\n concatTokensVirtual() {\n let str = \"\";\n let prev;\n for (const token of this.getTokens()) {\n if (token instanceof pragma_1.Pragma) {\n continue;\n }\n const vprev = prev === null || prev === void 0 ? void 0 : prev.getStart();\n const vtoke = token === null || token === void 0 ? void 0 : token.getStart();\n if (str === \"\") {\n str = token.getStr();\n }\n else if (prev && vprev && vtoke\n && prev.getStr().length + vprev.vcol === vtoke.vcol\n && vprev.vrow === vtoke.vrow) {\n str = str + token.getStr();\n }\n else {\n str = str + \" \" + token.getStr();\n }\n prev = token;\n }\n return str;\n }\n concatTokensWithoutStringsAndComments() {\n let str = \"\";\n let prev;\n for (const token of this.getTokens()) {\n if (token instanceof comment_1.Comment\n || token instanceof string_1.StringToken\n || token instanceof string_1.StringTemplate\n || token instanceof string_1.StringTemplateBegin\n || token instanceof string_1.StringTemplateMiddle\n || token instanceof string_1.StringTemplateEnd) {\n continue;\n }\n if (str === \"\") {\n str = token.getStr();\n }\n else if (prev && prev.getStr().length + prev.getCol() === token.getCol()\n && prev.getRow() === token.getRow()) {\n str = str + token.getStr();\n }\n else {\n str = str + \" \" + token.getStr();\n }\n prev = token;\n }\n return str;\n }\n getTerminator() {\n return this.getLastToken().getStr();\n }\n getFirstToken() {\n for (const child of this.getChildren()) {\n return child.getFirstToken();\n }\n throw new Error(\"StatementNode, getFirstToken, no children, \" + this.get().constructor.name);\n }\n getLastToken() {\n const child = this.getLastChild();\n if (child !== undefined) {\n return child.getLastToken();\n }\n throw new Error(\"StatementNode, getLastToken, no children\");\n }\n findDirectExpression(type) {\n for (const child of this.getChildren()) {\n if (child instanceof expression_node_1.ExpressionNode && child.get() instanceof type) {\n return child;\n }\n }\n return undefined;\n }\n findDirectExpressions(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof expression_node_1.ExpressionNode && child.get() instanceof type) {\n ret.push(child);\n }\n }\n return ret;\n }\n findDirectTokenByText(text) {\n const upper = text.toUpperCase();\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode && child.get().getStr().toUpperCase() === upper) {\n return child.get();\n }\n }\n return undefined;\n }\n findFirstExpression(type) {\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n return child;\n }\n else {\n const res = child.findFirstExpression(type);\n if (res) {\n return res;\n }\n }\n }\n return undefined;\n }\n findAllExpressions(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n ret.push(child);\n }\n else {\n ret.push(...child.findAllExpressions(type));\n }\n }\n return ret;\n }\n findAllExpressionsRecursive(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n ret.push(child);\n }\n ret.push(...child.findAllExpressionsRecursive(type));\n }\n return ret;\n }\n findAllExpressionsMulti(type, recursive = false) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof token_node_1.TokenNode) {\n continue;\n }\n const before = ret.length;\n for (const t of type) {\n if (child.get() instanceof t) {\n ret.push(child);\n }\n }\n if (before === ret.length || recursive === true) {\n ret.push(...child.findAllExpressionsMulti(type, recursive));\n }\n }\n return ret;\n }\n /**\n * Returns the Position of the first token if the sequence is found,\n * otherwise undefined. Strings and Comments are ignored in this search.\n * @param first - Text of the first Token\n * @param second - Text of the second Token\n */\n findTokenSequencePosition(first, second) {\n let prev;\n for (const token of this.getTokens()) {\n if (token instanceof comment_1.Comment\n || token instanceof string_1.StringToken\n || token instanceof string_1.StringTemplate\n || token instanceof string_1.StringTemplateBegin\n || token instanceof string_1.StringTemplateMiddle\n || token instanceof string_1.StringTemplateEnd) {\n continue;\n }\n if (prev && token.getStr().toUpperCase() === second && (prev === null || prev === void 0 ? void 0 : prev.getStr().toUpperCase()) === first.toUpperCase()) {\n return prev.getStart();\n }\n else {\n prev = token;\n }\n }\n return undefined;\n }\n findExpressionAfterToken(text) {\n const children = this.getChildren();\n for (let i = 0; i < children.length - 1; i++) {\n const c = children[i];\n const next = children[i + 1];\n if (c instanceof token_node_1.TokenNode\n && c.get().getStr().toUpperCase() === text.toUpperCase()\n && next instanceof expression_node_1.ExpressionNode) {\n return next;\n }\n }\n return undefined;\n }\n findExpressionsAfterToken(text) {\n const children = this.getChildren();\n const ret = [];\n for (let i = 0; i < children.length - 1; i++) {\n const c = children[i];\n const next = children[i + 1];\n if (c instanceof token_node_1.TokenNode\n && c.get().getStr().toUpperCase() === text.toUpperCase()\n && next instanceof expression_node_1.ExpressionNode) {\n ret.push(next);\n }\n }\n return ret;\n }\n ////////////////////////////////\n toTokens(b) {\n const tokens = [];\n if (b instanceof token_node_1.TokenNode) {\n tokens.push(b.get());\n return tokens;\n }\n for (const c of b.getChildren()) {\n if (c instanceof token_node_1.TokenNode) {\n tokens.push(c.get());\n }\n else {\n tokens.push(...this.toTokens(c));\n }\n }\n return tokens;\n }\n toTokenNodess(b) {\n const tokens = [];\n if (b instanceof token_node_1.TokenNode) {\n tokens.push(b);\n return tokens;\n }\n for (const c of b.getChildren()) {\n if (c instanceof token_node_1.TokenNode) {\n tokens.push(c);\n }\n else {\n tokens.push(...this.toTokenNodess(c));\n }\n }\n return tokens;\n }\n}\nexports.StatementNode = StatementNode;\n//# sourceMappingURL=statement_node.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/nodes/structure_node.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/nodes/structure_node.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StructureNode = void 0;\nconst _abstract_node_1 = __webpack_require__(/*! ./_abstract_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/_abstract_node.js\");\nconst statement_node_1 = __webpack_require__(/*! ./statement_node */ \"./node_modules/@abaplint/core/build/src/abap/nodes/statement_node.js\");\nclass StructureNode extends _abstract_node_1.AbstractNode {\n constructor(structure) {\n super();\n this.structure = structure;\n }\n get() {\n return this.structure;\n }\n // todo, remove this method, the logic should never go up in the tree\n findParent(node) {\n for (const child of this.getChildren()) {\n if (child === node) {\n return this;\n }\n else if (child instanceof statement_node_1.StatementNode) {\n continue;\n }\n else {\n const res = child.findParent(node);\n if (res) {\n return res;\n }\n }\n }\n return undefined;\n }\n concatTokens() {\n let concat = \"\";\n for (const child of this.getChildren()) {\n concat = concat + child.concatTokens();\n }\n return concat;\n }\n findDirectStatement(type) {\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode && child.get() instanceof type) {\n return child;\n }\n }\n return undefined;\n }\n findDirectStatements(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode && child.get() instanceof type) {\n ret.push(child);\n }\n }\n return ret;\n }\n findDirectStructures(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof StructureNode && child.get() instanceof type) {\n ret.push(child);\n }\n }\n return ret;\n }\n findFirstStatement(type) {\n for (const child of this.getChildren()) {\n if (child.get() instanceof type) {\n return child;\n }\n else if (child instanceof statement_node_1.StatementNode) {\n continue;\n }\n else {\n const res = child.findFirstStatement(type);\n if (res) {\n return res;\n }\n }\n }\n return undefined;\n }\n findFirstExpression(type) {\n for (const child of this.getChildren()) {\n const res = child.findFirstExpression(type);\n if (res) {\n return res;\n }\n }\n return undefined;\n }\n getFirstStatement() {\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode) {\n return child;\n }\n return child.getFirstStatement();\n }\n return undefined;\n }\n getFirstToken() {\n const child = this.getFirstChild();\n if (child !== undefined) {\n return child.getFirstToken();\n }\n throw new Error(\"StructureNode, getFirstToken, unexpected type\");\n }\n getLastToken() {\n const child = this.getLastChild();\n if (child !== undefined) {\n return child.getLastToken();\n }\n throw new Error(\"StructureNode, getLastToken, unexpected type\");\n }\n findAllExpressions(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n ret.push(...child.findAllExpressions(type));\n }\n return ret;\n }\n findAllExpressionsRecursive(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode) {\n ret.push(...child.findAllExpressionsRecursive(type));\n }\n else {\n ret.push(...child.findAllExpressionsRecursive(type));\n }\n }\n return ret;\n }\n findAllExpressionsMulti(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n ret.push(...child.findAllExpressionsMulti(type));\n }\n return ret;\n }\n findAllStatements(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof StructureNode) {\n ret.push(...child.findAllStatements(type));\n }\n else if (child.get() instanceof type) {\n ret.push(child);\n }\n }\n return ret;\n }\n findAllStatementNodes() {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode) {\n ret.push(child);\n }\n else {\n ret.push(...child.findAllStatementNodes());\n }\n }\n return ret;\n }\n findAllStructuresRecursive(type) {\n const ret = [];\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n ret.push(child);\n }\n ret.push(...child.findAllStructuresRecursive(type));\n }\n return ret;\n }\n findAllStructuresMulti(type) {\n const ret = [];\n for (const t of type) {\n if (this.get() instanceof t) {\n return [this];\n }\n }\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode) {\n continue;\n }\n let found = false;\n for (const t of type) {\n if (this.get() instanceof t) {\n ret.push(child);\n found = true;\n }\n }\n if (found === false) {\n ret.push(...child.findAllStructuresMulti(type));\n }\n }\n return ret;\n }\n findAllStructures(type) {\n const ret = [];\n if (this.get() instanceof type) {\n return [this];\n }\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n ret.push(child);\n }\n else {\n ret.push(...child.findAllStructures(type));\n }\n }\n return ret;\n }\n findDirectStructure(type) {\n if (this.get() instanceof type) {\n return this;\n }\n for (const child of this.getChildren()) {\n if (child.get() instanceof type) {\n return child;\n }\n }\n return undefined;\n }\n findFirstStructure(type) {\n if (this.get() instanceof type) {\n return this;\n }\n for (const child of this.getChildren()) {\n if (child instanceof statement_node_1.StatementNode) {\n continue;\n }\n else if (child.get() instanceof type) {\n return child;\n }\n else {\n const res = child.findFirstStructure(type);\n if (res) {\n return res;\n }\n }\n }\n return undefined;\n }\n}\nexports.StructureNode = StructureNode;\n//# sourceMappingURL=structure_node.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/nodes/structure_node.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TokenNodeRegex = exports.TokenNode = void 0;\nclass TokenNode {\n constructor(token) {\n this.token = token;\n }\n addChild(_n) {\n throw new Error(\"TokenNode, Method not implemented.\");\n }\n setChildren(_children) {\n throw new Error(\"TokenNode, Method not implemented.\");\n }\n getChildren() {\n return [];\n }\n concatTokens() {\n return this.token.getStr();\n }\n get() {\n return this.token;\n }\n countTokens() {\n return 1;\n }\n getFirstToken() {\n return this.token;\n }\n getLastToken() {\n return this.token;\n }\n}\nexports.TokenNode = TokenNode;\nclass TokenNodeRegex extends TokenNode {\n}\nexports.TokenNodeRegex = TokenNodeRegex;\n//# sourceMappingURL=token_node.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/nodes/token_node.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypedIdentifier = void 0;\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nclass TypedIdentifier extends _identifier_1.Identifier {\n static from(id, type, meta) {\n return new TypedIdentifier(id.getToken(), id.getFilename(), type, meta);\n }\n constructor(token, filename, type, meta, value) {\n super(token, filename);\n if (type instanceof TypedIdentifier) {\n this.type = type.getType();\n }\n else {\n this.type = type;\n }\n this.value = value;\n this.meta = [];\n if (meta) {\n this.meta = meta;\n }\n }\n toText() {\n return \"Identifier: ```\" + this.getName() + \"```\";\n }\n getType() {\n return this.type;\n }\n getMeta() {\n return this.meta;\n }\n getValue() {\n return this.value;\n }\n}\nexports.TypedIdentifier = TypedIdentifier;\n//# sourceMappingURL=_typed_identifier.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/alias.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/alias.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Alias = void 0;\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nclass Alias extends _identifier_1.Identifier {\n constructor(token, visibility, component, filename) {\n super(token, filename);\n this.component = component;\n this.visibility = visibility;\n }\n getComponent() {\n return this.component;\n }\n getVisibility() {\n return this.visibility;\n }\n}\nexports.Alias = Alias;\n//# sourceMappingURL=alias.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/alias.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/aliases.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/aliases.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Aliases = void 0;\nconst alias_1 = __webpack_require__(/*! ./alias */ \"./node_modules/@abaplint/core/build/src/abap/types/alias.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass Aliases {\n constructor(node, filename, scope) {\n this.aliases = [];\n this.filename = filename;\n this.parse(node, scope, filename);\n }\n getAll() {\n return this.aliases;\n }\n getByName(name) {\n for (const a of this.aliases) {\n if (a.getName().toLowerCase() === name.toLowerCase()) {\n return a;\n }\n }\n return undefined;\n }\n /////////////////////////\n parse(node, scope, filename) {\n const cdef = node.findFirstStructure(Structures.ClassDefinition);\n if (cdef) {\n this.parseSection(cdef.findFirstStructure(Structures.PublicSection), visibility_1.Visibility.Public, scope, filename);\n this.parseSection(cdef.findFirstStructure(Structures.PrivateSection), visibility_1.Visibility.Private, scope, filename);\n this.parseSection(cdef.findFirstStructure(Structures.ProtectedSection), visibility_1.Visibility.Protected, scope, filename);\n }\n const idef = node.findFirstStructure(Structures.Interface);\n if (idef) {\n this.parseSection(idef, visibility_1.Visibility.Public, scope, filename);\n }\n }\n parseSection(node, visibility, scope, filename) {\n if (!node) {\n return;\n }\n const list = node.findAllStatements(Statements.Aliases);\n for (const a of list) {\n const name = a.findFirstExpression(Expressions.SimpleName).getFirstToken();\n const compToken = a.findFirstExpression(Expressions.Field).getFirstToken();\n const compName = compToken.getStr();\n this.aliases.push(new alias_1.Alias(name, visibility, compName, this.filename));\n if (compName.includes(\"~\")) {\n const name = compName.split(\"~\")[0];\n const idef = scope.findInterfaceDefinition(name);\n if (idef) {\n scope.addReference(compToken, idef, _reference_1.ReferenceType.ObjectOrientedReference, filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\n }\n }\n }\n }\n}\nexports.Aliases = Aliases;\n//# sourceMappingURL=aliases.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/aliases.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AbstractType = void 0;\nclass AbstractType {\n constructor(input) {\n this.data = input;\n }\n getAbstractTypeData() {\n return this.data;\n }\n /** fully qualified symbolic name of the type */\n getQualifiedName() {\n var _a;\n return (_a = this.data) === null || _a === void 0 ? void 0 : _a.qualifiedName;\n }\n getRTTIName() {\n var _a;\n return (_a = this.data) === null || _a === void 0 ? void 0 : _a.RTTIName;\n }\n getConversionExit() {\n var _a;\n return (_a = this.data) === null || _a === void 0 ? void 0 : _a.conversionExit;\n }\n getDDICName() {\n var _a;\n return (_a = this.data) === null || _a === void 0 ? void 0 : _a.ddicName;\n }\n}\nexports.AbstractType = AbstractType;\n//# sourceMappingURL=_abstract_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/any_type.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/any_type.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AnyType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass AnyType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```any```\";\n }\n toABAP() {\n return \"any\";\n }\n isGeneric() {\n return true;\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_ANY\";\n }\n}\nexports.AnyType = AnyType;\n//# sourceMappingURL=any_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/any_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/cgeneric_type.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/cgeneric_type.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CGenericType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass CGenericType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```c```\";\n }\n isGeneric() {\n return true;\n }\n toABAP() {\n throw new Error(\"c, generic\");\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_CGENERIC\";\n }\n}\nexports.CGenericType = CGenericType;\n//# sourceMappingURL=cgeneric_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/cgeneric_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/character_type.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/character_type.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CharacterType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass CharacterType extends _abstract_type_1.AbstractType {\n constructor(length, extra) {\n super(extra);\n if (length <= 0) {\n throw new Error(\"Bad LENGTH, Character\");\n }\n this.length = length;\n }\n cloneType(input) {\n const clone = Object.assign({}, this.getAbstractTypeData()) || {};\n if (input.qualifiedName) {\n clone.qualifiedName = input.qualifiedName;\n }\n if (input.ddicName) {\n clone.ddicName = input.ddicName;\n }\n if (input.derivedFromConstant) {\n clone.derivedFromConstant = input.derivedFromConstant;\n }\n return new CharacterType(this.length, clone);\n }\n getLength() {\n return this.length;\n }\n toText() {\n return \"```c LENGTH \" + this.getLength() + \"```\";\n }\n toABAP() {\n return \"c LENGTH \" + this.getLength();\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return false;\n }\n getIdentifier() {\n return undefined;\n }\n toCDS() {\n return \"abap.char( \" + this.getLength() + \" )\";\n }\n}\nexports.CharacterType = CharacterType;\n//# sourceMappingURL=character_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/character_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/clike_type.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/clike_type.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CLikeType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass CLikeType extends _abstract_type_1.AbstractType {\n static get() {\n return this.singleton;\n }\n constructor() {\n super();\n }\n toText() {\n return \"```clike```\";\n }\n isGeneric() {\n return true;\n }\n toABAP() {\n throw new Error(\"clike, generic\");\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_CLIKE\";\n }\n}\nexports.CLikeType = CLikeType;\nCLikeType.singleton = new CLikeType();\n//# sourceMappingURL=clike_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/clike_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/csequence_type.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/csequence_type.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CSequenceType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass CSequenceType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```csequence```\";\n }\n isGeneric() {\n return true;\n }\n toABAP() {\n throw new Error(\"csequence, generic\");\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_CSEQUENCE\";\n }\n}\nexports.CSequenceType = CSequenceType;\n//# sourceMappingURL=csequence_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/csequence_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/data_reference_type.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/data_reference_type.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataReference = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass DataReference extends _abstract_type_1.AbstractType {\n constructor(type, qualifiedName) {\n super({ qualifiedName: qualifiedName });\n this.type = type;\n }\n toText(level) {\n return \"Data REF TO \" + this.type.toText(level + 1);\n }\n getType() {\n return this.type;\n }\n toABAP() {\n const type = this.type.toABAP();\n if (type.includes(\" TABLE OF \")) {\n return \"\"; // hmm, should this return undefined?\n }\n return \"REF TO \" + this.type.toABAP();\n }\n isGeneric() {\n // a DATA definition can be \"REF TO data\", so its not generic\n return false;\n }\n containsVoid() {\n return this.type.containsVoid();\n }\n toCDS() {\n return \"abap.TODO_REFERENCE\";\n }\n}\nexports.DataReference = DataReference;\n//# sourceMappingURL=data_reference_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/data_reference_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/date_type.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/date_type.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DateType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass DateType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```d```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"d\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.dats\";\n }\n}\nexports.DateType = DateType;\n//# sourceMappingURL=date_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/date_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat16_type.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat16_type.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DecFloat16Type = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass DecFloat16Type extends _abstract_type_1.AbstractType {\n toText() {\n return \"```decfloat16```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"decfloat16\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.d16n\";\n }\n}\nexports.DecFloat16Type = DecFloat16Type;\n//# sourceMappingURL=decfloat16_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat16_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat34_type.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat34_type.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DecFloat34Type = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass DecFloat34Type extends _abstract_type_1.AbstractType {\n toText() {\n return \"```decfloat34```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"decfloat34\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.d34n\";\n }\n}\nexports.DecFloat34Type = DecFloat34Type;\n//# sourceMappingURL=decfloat34_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat34_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat_type.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat_type.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DecFloatType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass DecFloatType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```decfloat```\";\n }\n isGeneric() {\n return true;\n }\n toABAP() {\n return \"decfloat\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.fltp\";\n }\n}\nexports.DecFloatType = DecFloatType;\n//# sourceMappingURL=decfloat_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/enum_type.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/enum_type.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EnumType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass EnumType extends _abstract_type_1.AbstractType {\n toText() {\n return \"enum\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return this.getQualifiedName() || \"enum\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_ENUM\";\n }\n}\nexports.EnumType = EnumType;\n//# sourceMappingURL=enum_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/enum_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/float_type.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/float_type.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FloatType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\n// this is the ABAP \"F\" type, which is IEEE?\n// todo, same as FloatingPointType ?\nclass FloatType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```f```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"f\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.fltp\";\n }\n}\nexports.FloatType = FloatType;\n//# sourceMappingURL=float_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/float_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/floating_point_type.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/floating_point_type.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FloatingPointType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\n// this is the DDIC floating point type\nclass FloatingPointType extends _abstract_type_1.AbstractType {\n constructor(length, qualifiedName) {\n super({ qualifiedName: qualifiedName });\n if (length <= 0) {\n throw new Error(\"Bad LENGTH, Floating Point\");\n }\n this.length = length;\n }\n getLength() {\n return this.length;\n }\n toText() {\n return \"```f LENGTH \" + this.getLength() + \"```\";\n }\n toABAP() {\n return \"f LENGTH \" + this.getLength();\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.fltp\";\n }\n}\nexports.FloatingPointType = FloatingPointType;\n//# sourceMappingURL=floating_point_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/floating_point_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/generic_object_reference_type.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/generic_object_reference_type.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GenericObjectReferenceType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass GenericObjectReferenceType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```REF TO object```\";\n }\n isGeneric() {\n // a DATA definition can be \"REF TO object\", so its not generic\n return false;\n }\n toABAP() {\n return \"REF TO object\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_GENERICOBJECTREF\";\n }\n}\nexports.GenericObjectReferenceType = GenericObjectReferenceType;\n//# sourceMappingURL=generic_object_reference_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/generic_object_reference_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/hex_type.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/hex_type.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.HexType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass HexType extends _abstract_type_1.AbstractType {\n constructor(length, qualifiedName) {\n super({ qualifiedName: qualifiedName });\n if (length <= 0) {\n throw new Error(\"Bad LENGTH, Hex\");\n }\n this.length = length;\n }\n getLength() {\n return this.length;\n }\n toText() {\n return \"```x LENGTH \" + this.getLength() + \"```\";\n }\n toABAP() {\n return \"x LENGTH \" + this.getLength();\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.raw( \" + this.getLength() + \" )\";\n }\n}\nexports.HexType = HexType;\n//# sourceMappingURL=hex_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/hex_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/index.js ***! + \*************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./any_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/any_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cgeneric_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/cgeneric_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./character_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/character_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./clike_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/clike_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./csequence_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/csequence_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data_reference_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/data_reference_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./date_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/date_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./decfloat_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./decfloat16_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat16_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./decfloat34_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/decfloat34_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./float_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/float_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./floating_point_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/floating_point_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./generic_object_reference_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/generic_object_reference_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./hex_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/hex_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./integer_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/integer_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./integer8_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/integer8_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./numeric_generic_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_generic_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./numeric_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./object_reference_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/object_reference_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./packed_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/packed_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./simple_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/simple_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./string_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/string_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./structure_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/structure_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./table_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/table_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./time_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/time_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unknown_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./utc_long_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/utc_long_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./void_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./xgeneric_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/xgeneric_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./xsequence_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/xsequence_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./xstring_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/xstring_type.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/integer8_type.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/integer8_type.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Integer8Type = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass Integer8Type extends _abstract_type_1.AbstractType {\n toText() {\n return \"```int8```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"int8\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.int8\";\n }\n}\nexports.Integer8Type = Integer8Type;\n//# sourceMappingURL=integer8_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/integer8_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/integer_type.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/integer_type.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IntegerType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass IntegerType extends _abstract_type_1.AbstractType {\n static get(input) {\n if (input === undefined) {\n return this.singleton;\n }\n return new IntegerType(input);\n }\n constructor(input) {\n super(input);\n }\n /** fully qualified symbolic name of the type */\n getQualifiedName() {\n var _a;\n const qual = (_a = this.data) === null || _a === void 0 ? void 0 : _a.qualifiedName;\n if (qual === undefined) {\n return \"I\";\n }\n return qual;\n }\n toText() {\n return \"```i```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"i\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.int4\";\n }\n}\nexports.IntegerType = IntegerType;\nIntegerType.singleton = new IntegerType();\n//# sourceMappingURL=integer_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/integer_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_generic_type.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_generic_type.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NumericGenericType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass NumericGenericType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```NUMERIC```\";\n }\n isGeneric() {\n return true;\n }\n toABAP() {\n throw new Error(\"NumericGenericType, generic\");\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_NUMERICGENERIC\";\n }\n}\nexports.NumericGenericType = NumericGenericType;\n//# sourceMappingURL=numeric_generic_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_generic_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_type.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_type.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NumericType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass NumericType extends _abstract_type_1.AbstractType {\n constructor(length, qualifiedName) {\n super({ qualifiedName: qualifiedName });\n if (length <= 0) {\n throw new Error(\"Bad LENGTH, Numeric\");\n }\n this.length = length;\n }\n getLength() {\n return this.length;\n }\n toText() {\n return \"```n LENGTH \" + this.getLength() + \"```\";\n }\n toABAP() {\n return \"n LENGTH \" + this.getLength();\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.numc( \" + this.getLength() + \" )\";\n }\n}\nexports.NumericType = NumericType;\n//# sourceMappingURL=numeric_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/numeric_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/object_reference_type.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/object_reference_type.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ObjectReferenceType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\n// use GenericObjectReferenceType for REF TO OBJECT\nclass ObjectReferenceType extends _abstract_type_1.AbstractType {\n constructor(id, extra) {\n super(extra);\n this.identifier = id;\n }\n getIdentifierName() {\n return this.identifier.getName();\n }\n toText() {\n return \"```REF TO \" + this.identifier.getName() + \"```\";\n }\n toABAP() {\n return \"REF TO \" + this.identifier.getName();\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return false;\n }\n getIdentifier() {\n return this.identifier;\n }\n toCDS() {\n return \"abap.TODO_OBJECTREF\";\n }\n}\nexports.ObjectReferenceType = ObjectReferenceType;\n//# sourceMappingURL=object_reference_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/object_reference_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/packed_type.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/packed_type.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PackedType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass PackedType extends _abstract_type_1.AbstractType {\n constructor(length, decimals, extra) {\n super(extra);\n if (length <= 0) {\n throw new Error(\"Bad LENGTH, Packed\");\n }\n else if (decimals < 0) {\n throw new Error(\"Bad DECIMALS, Packed\");\n }\n this.length = length;\n this.decimals = decimals;\n }\n getLength() {\n return this.length;\n }\n getDecimals() {\n return this.decimals;\n }\n toText() {\n return \"```p LENGTH \" + this.getLength() + \" DECIMALS \" + this.getDecimals() + \"```\";\n }\n toABAP() {\n return \"p LENGTH \" + this.getLength() + \" DECIMALS \" + this.getDecimals();\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_PACKED\";\n }\n}\nexports.PackedType = PackedType;\n//# sourceMappingURL=packed_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/packed_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/simple_type.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/simple_type.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SimpleType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass SimpleType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```simple```\";\n }\n toABAP() {\n return \"simple\";\n }\n isGeneric() {\n return true;\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_SIMPLE\";\n }\n}\nexports.SimpleType = SimpleType;\n//# sourceMappingURL=simple_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/simple_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/string_type.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/string_type.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StringType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass StringType extends _abstract_type_1.AbstractType {\n static get(input) {\n if (input === undefined) {\n return this.singleton;\n }\n return new StringType(input);\n }\n constructor(input) {\n super(input);\n }\n /** fully qualified symbolic name of the type */\n getQualifiedName() {\n var _a;\n const qual = (_a = this.data) === null || _a === void 0 ? void 0 : _a.qualifiedName;\n if (qual === undefined) {\n return \"STRING\";\n }\n return qual;\n }\n toText() {\n return \"```string```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"string\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.string\";\n }\n}\nexports.StringType = StringType;\nStringType.singleton = new StringType();\n//# sourceMappingURL=string_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/string_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/structure_type.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/structure_type.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StructureType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass StructureType extends _abstract_type_1.AbstractType {\n constructor(components, qualifiedName, ddicName) {\n super({\n qualifiedName: qualifiedName,\n ddicName: ddicName,\n });\n if (components.length === 0) {\n throw new Error(\"Structure does not contain any components\");\n }\n this.indexed = {};\n for (const c of components) {\n const upper = c.name.toUpperCase();\n if (this.indexed[upper] !== undefined) {\n throw new Error(\"Structure, duplicate field name \\\"\" + upper + \"\\\", \" + qualifiedName);\n }\n this.indexed[upper] = c.type;\n }\n this.components = components;\n }\n getComponents() {\n return this.components;\n }\n getComponentByName(name) {\n return this.indexed[name.toUpperCase()];\n }\n toText(level) {\n const compo = [];\n for (const c of this.components) {\n compo.push(c.name + \" TYPE \" + c.type.toText(level + 1));\n }\n const spaces = \" \".repeat(level);\n return \"Structure\\n\" + spaces + \"* \" + compo.join(\"\\n\" + spaces + \"* \");\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n const ret = this.getQualifiedName();\n if (ret) {\n return ret;\n }\n return \"StructureTypetoABAPtodo\";\n }\n containsVoid() {\n return this.getComponents().some(c => { return c.type.containsVoid(); });\n }\n toCDS() {\n return \"abap.TODO_STRUCTURE\";\n }\n}\nexports.StructureType = StructureType;\n//# sourceMappingURL=structure_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/structure_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/table_type.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/table_type.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TableType = exports.TableKeyType = exports.TableAccessType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nvar TableAccessType;\n(function (TableAccessType) {\n TableAccessType[\"standard\"] = \"STANDARD\";\n TableAccessType[\"sorted\"] = \"SORTED\";\n TableAccessType[\"hashed\"] = \"HASHED\";\n TableAccessType[\"index\"] = \"INDEX\";\n TableAccessType[\"any\"] = \"ANY\";\n})(TableAccessType || (exports.TableAccessType = TableAccessType = {}));\nvar TableKeyType;\n(function (TableKeyType) {\n TableKeyType[\"default\"] = \"DEFAULT\";\n TableKeyType[\"user\"] = \"USER\";\n TableKeyType[\"empty\"] = \"EMPTY\";\n})(TableKeyType || (exports.TableKeyType = TableKeyType = {}));\nclass TableType extends _abstract_type_1.AbstractType {\n constructor(rowType, options, qualifiedName) {\n var _a;\n super({ qualifiedName: qualifiedName });\n this.rowType = rowType;\n this.options = options;\n if (((_a = options.primaryKey) === null || _a === void 0 ? void 0 : _a.type) === TableAccessType.standard && options.primaryKey.isUnique === true) {\n throw new Error(\"STANDARD tables cannot have UNIQUE key\");\n }\n }\n getOptions() {\n return this.options;\n }\n isWithHeader() {\n return this.options.withHeader;\n }\n getAccessType() {\n var _a;\n return (_a = this.options.primaryKey) === null || _a === void 0 ? void 0 : _a.type;\n }\n getRowType() {\n return this.rowType;\n }\n toABAP() {\n // todo, this is used for downport, so use default key for now\n return \"STANDARD TABLE OF \" + this.rowType.toABAP() + \" WITH DEFAULT KEY\";\n }\n toText(level) {\n const type = this.rowType;\n if (this.options.withHeader === true) {\n return \"Table with header of \" + type.toText(level + 1);\n }\n else {\n return \"Table of \" + type.toText(level + 1);\n }\n }\n isGeneric() {\n var _a, _b;\n if (((_a = this.options.primaryKey) === null || _a === void 0 ? void 0 : _a.type) !== TableAccessType.standard\n && this.options.keyType === TableKeyType.user\n && ((_b = this.options.primaryKey) === null || _b === void 0 ? void 0 : _b.keyFields.length) === 0) {\n return true;\n }\n return this.rowType.isGeneric();\n }\n containsVoid() {\n return this.rowType.containsVoid();\n }\n toCDS() {\n return \"abap.TODO_TABLE\";\n }\n}\nexports.TableType = TableType;\n//# sourceMappingURL=table_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/table_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/time_type.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/time_type.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TimeType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass TimeType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```t```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"t\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.tims\";\n }\n}\nexports.TimeType = TimeType;\n//# sourceMappingURL=time_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/time_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnknownType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass UnknownType extends _abstract_type_1.AbstractType {\n constructor(error, qualifiedName) {\n super({ qualifiedName: qualifiedName });\n this.error = error;\n }\n getError() {\n return this.error;\n }\n toText() {\n return \"Unknown type: \" + this.error;\n }\n toABAP() {\n throw new Error(\"unknown, generic: \" + this.error);\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_UNKNOWN\";\n }\n}\nexports.UnknownType = UnknownType;\n//# sourceMappingURL=unknown_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/unknown_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/utc_long_type.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/utc_long_type.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UTCLongType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass UTCLongType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```utclong```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"utclong\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.utcl\";\n }\n}\nexports.UTCLongType = UTCLongType;\n//# sourceMappingURL=utc_long_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/utc_long_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.VoidType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass VoidType extends _abstract_type_1.AbstractType {\n constructor(voided, name) {\n super({ qualifiedName: name });\n this.voided = voided;\n }\n getVoided() {\n return this.voided;\n }\n toABAP() {\n return this.voided || \"VOIDEDtoABAP\";\n }\n toText() {\n return \"Void(\" + this.voided + \")\";\n }\n isGeneric() {\n return false;\n }\n containsVoid() {\n return true;\n }\n toCDS() {\n return \"abap.TODO_VOID\";\n }\n}\nexports.VoidType = VoidType;\n//# sourceMappingURL=void_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/xgeneric_type.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/xgeneric_type.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.XGenericType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass XGenericType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```x```\";\n }\n isGeneric() {\n return true;\n }\n toABAP() {\n throw new Error(\"x, generic\");\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_CGENERIC\";\n }\n}\nexports.XGenericType = XGenericType;\n//# sourceMappingURL=xgeneric_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/xgeneric_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/xsequence_type.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/xsequence_type.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.XSequenceType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass XSequenceType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```xsequence```\";\n }\n isGeneric() {\n return true;\n }\n toABAP() {\n throw new Error(\"xsequence, generic\");\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.TODO_XSEQUENCE\";\n }\n}\nexports.XSequenceType = XSequenceType;\n//# sourceMappingURL=xsequence_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/xsequence_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/basic/xstring_type.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/basic/xstring_type.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.XStringType = void 0;\nconst _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nclass XStringType extends _abstract_type_1.AbstractType {\n toText() {\n return \"```xstring```\";\n }\n isGeneric() {\n return false;\n }\n toABAP() {\n return \"xstring\";\n }\n containsVoid() {\n return false;\n }\n toCDS() {\n return \"abap.rawstring\";\n }\n}\nexports.XStringType = XStringType;\n//# sourceMappingURL=xstring_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/basic/xstring_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/class_attribute.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/class_attribute.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassAttribute = void 0;\nconst _typed_identifier_1 = __webpack_require__(/*! ./_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nclass ClassAttribute extends _typed_identifier_1.TypedIdentifier {\n constructor(id, visibility, meta, value) {\n super(id.getToken(), id.getFilename(), id.getType(), meta, value);\n this.visibility = visibility;\n }\n getVisibility() {\n return this.visibility;\n }\n}\nexports.ClassAttribute = ClassAttribute;\n//# sourceMappingURL=class_attribute.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/class_attribute.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Attributes = void 0;\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst class_attribute_1 = __webpack_require__(/*! ./class_attribute */ \"./node_modules/@abaplint/core/build/src/abap/types/class_attribute.js\");\nconst class_constant_1 = __webpack_require__(/*! ./class_constant */ \"./node_modules/@abaplint/core/build/src/abap/types/class_constant.js\");\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst class_data_1 = __webpack_require__(/*! ../5_syntax/statements/class_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/class_data.js\");\nconst class_data_2 = __webpack_require__(/*! ../5_syntax/structures/class_data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/class_data.js\");\nconst data_1 = __webpack_require__(/*! ../5_syntax/statements/data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/data.js\");\nconst constant_1 = __webpack_require__(/*! ../5_syntax/statements/constant */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/constant.js\");\nconst data_2 = __webpack_require__(/*! ../5_syntax/structures/data */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/data.js\");\nconst type_enum_1 = __webpack_require__(/*! ../5_syntax/structures/type_enum */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/type_enum.js\");\nconst constants_1 = __webpack_require__(/*! ../5_syntax/structures/constants */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/constants.js\");\nconst type_definitions_1 = __webpack_require__(/*! ./type_definitions */ \"./node_modules/@abaplint/core/build/src/abap/types/type_definitions.js\");\nconst types_1 = __webpack_require__(/*! ../5_syntax/structures/types */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/structures/types.js\");\nconst type_1 = __webpack_require__(/*! ../5_syntax/statements/type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/type.js\");\nclass Attributes {\n constructor(node, filename, scope) {\n this.static = [];\n this.instance = [];\n this.constants = [];\n this.filename = filename;\n this.tlist = [];\n this.parse(node, scope);\n this.types = new type_definitions_1.TypeDefinitions(this.tlist);\n }\n getTypes() {\n return this.types;\n }\n getStatic() {\n return this.static;\n }\n getAll() {\n let res = [];\n res = res.concat(this.static);\n res = res.concat(this.instance);\n return res;\n }\n getStaticsByVisibility(visibility) {\n const attributes = [];\n for (const attr of this.static) {\n if (attr.getVisibility() === visibility) {\n attributes.push(attr);\n }\n }\n return attributes;\n }\n getInstance() {\n return this.instance;\n }\n getInstancesByVisibility(visibility) {\n const attributes = [];\n for (const attr of this.instance) {\n if (attr.getVisibility() === visibility) {\n attributes.push(attr);\n }\n }\n return attributes;\n }\n getConstants() {\n return this.constants;\n }\n getConstantsByVisibility(visibility) {\n const attributes = [];\n for (const attr of this.constants) {\n if (attr.getVisibility() === visibility) {\n attributes.push(attr);\n }\n }\n return attributes;\n }\n // todo, optimize\n findByName(name) {\n const upper = name.toUpperCase();\n for (const a of this.getStatic()) {\n if (a.getName().toUpperCase() === upper) {\n return a;\n }\n }\n for (const a of this.getInstance()) {\n if (a.getName().toUpperCase() === upper) {\n return a;\n }\n }\n for (const a of this.getConstants()) {\n if (a.getName().toUpperCase() === upper) {\n return a;\n }\n }\n return undefined;\n }\n /////////////////////////////\n parse(node, scope) {\n const cdef = node.findDirectStructure(Structures.ClassDefinition);\n if (cdef) {\n this.parseSection(cdef.findDirectStructure(Structures.PublicSection), visibility_1.Visibility.Public, scope);\n this.parseSection(cdef.findDirectStructure(Structures.ProtectedSection), visibility_1.Visibility.Protected, scope);\n this.parseSection(cdef.findDirectStructure(Structures.PrivateSection), visibility_1.Visibility.Private, scope);\n return;\n }\n const idef = node.findDirectStructure(Structures.Interface);\n if (idef) {\n this.parseSection(idef.findDirectStructure(Structures.SectionContents), visibility_1.Visibility.Public, scope);\n return;\n }\n throw new Error(\"MethodDefinition, expected ClassDefinition or InterfaceDefinition\");\n }\n parseSection(node, visibility, scope) {\n if (node === undefined) {\n return;\n }\n for (const c of node.getChildren()) {\n const ctyp = c.get();\n if (c instanceof nodes_1.StructureNode) {\n if (ctyp instanceof Structures.Data) {\n const found = new data_2.Data().runSyntax(c, scope, this.filename);\n if (found !== undefined) {\n const attr = new class_attribute_1.ClassAttribute(found, visibility, found.getMeta(), found.getValue());\n this.instance.push(attr);\n scope.addIdentifier(attr);\n }\n }\n else if (ctyp instanceof Structures.ClassData) {\n const found = new class_data_2.ClassData().runSyntax(c, scope, this.filename);\n if (found !== undefined) {\n const attr = new class_attribute_1.ClassAttribute(found, visibility, found.getMeta(), found.getValue());\n this.static.push(attr);\n scope.addIdentifier(attr);\n }\n }\n else if (ctyp instanceof Structures.Constants) {\n const { type: found, values } = new constants_1.Constants().runSyntax(c, scope, this.filename);\n if (found !== undefined) {\n const attr = new class_constant_1.ClassConstant(found, visibility, values);\n this.constants.push(attr);\n scope.addIdentifier(attr);\n }\n }\n else if (ctyp instanceof Structures.TypeEnum) {\n const { values, types } = new type_enum_1.TypeEnum().runSyntax(c, scope, this.filename);\n for (const v of values) {\n // for now add ENUM values as constants\n const attr = new class_constant_1.ClassConstant(v, visibility, \"novalueClassAttributeEnum\");\n this.constants.push(attr);\n scope.addIdentifier(attr);\n }\n for (const t of types) {\n this.tlist.push({ type: t, visibility });\n // scope.addIdentifier(attr);\n }\n }\n else if (ctyp instanceof Structures.Types) {\n const res = new types_1.Types().runSyntax(c, scope, this.filename);\n if (res) {\n scope.addType(res);\n this.tlist.push({ type: res, visibility });\n }\n }\n else {\n // begin recursion\n this.parseSection(c, visibility, scope);\n }\n }\n else if (c instanceof nodes_1.StatementNode) {\n if (ctyp instanceof Statements.Data) {\n this.instance.push(this.parseAttribute(c, visibility, scope));\n }\n else if (ctyp instanceof Statements.ClassData) {\n this.static.push(this.parseAttribute(c, visibility, scope));\n }\n else if (ctyp instanceof Statements.Constant) {\n const found = new constant_1.Constant().runSyntax(c, scope, this.filename);\n if (found) {\n const attr = new class_constant_1.ClassConstant(found, visibility, found.getValue());\n this.constants.push(attr);\n scope.addIdentifier(attr);\n }\n }\n else if (ctyp instanceof Statements.Type) {\n const res = new type_1.Type().runSyntax(c, scope, this.filename);\n if (res) {\n scope.addType(res);\n this.tlist.push({ type: res, visibility });\n }\n }\n }\n }\n }\n parseAttribute(node, visibility, scope) {\n let found = undefined;\n const s = node.get();\n if (s instanceof Statements.Data) {\n found = new data_1.Data().runSyntax(node, scope, this.filename);\n }\n else if (s instanceof Statements.ClassData) {\n found = new class_data_1.ClassData().runSyntax(node, scope, this.filename);\n }\n else {\n throw new Error(\"ClassAttribute, unexpected node, 1, \" + this.filename);\n }\n if (found === undefined) {\n throw new Error(\"ClassAttribute, unexpected node, \" + this.filename);\n }\n scope.addIdentifier(found);\n return new class_attribute_1.ClassAttribute(found, visibility, found.getMeta(), found.getValue());\n }\n}\nexports.Attributes = Attributes;\n//# sourceMappingURL=class_attributes.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/class_constant.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/class_constant.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassConstant = void 0;\nconst _typed_identifier_1 = __webpack_require__(/*! ./_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nclass ClassConstant extends _typed_identifier_1.TypedIdentifier {\n constructor(id, visibility, value) {\n super(id.getToken(), id.getFilename(), id.getType(), [\"read_only\" /* IdentifierMeta.ReadOnly */, \"static\" /* IdentifierMeta.Static */], value);\n this.visibility = visibility;\n }\n getVisibility() {\n return this.visibility;\n }\n}\nexports.ClassConstant = ClassConstant;\n//# sourceMappingURL=class_constant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/class_constant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/class_definition.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/class_definition.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassDefinition = void 0;\nconst method_definitions_1 = __webpack_require__(/*! ./method_definitions */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js\");\nconst expressions_1 = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst class_attributes_1 = __webpack_require__(/*! ./class_attributes */ \"./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js\");\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst aliases_1 = __webpack_require__(/*! ./aliases */ \"./node_modules/@abaplint/core/build/src/abap/types/aliases.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst event_definition_1 = __webpack_require__(/*! ./event_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/event_definition.js\");\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../5_syntax/_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass ClassDefinition extends _identifier_1.Identifier {\n constructor(node, filename, scope) {\n if (!(node.get() instanceof Structures.ClassDefinition)) {\n throw new Error(\"ClassDefinition, unexpected node type\");\n }\n const def = node.findFirstStatement(Statements.ClassDefinition);\n const name = def.findDirectExpression(Expressions.ClassName).getFirstToken();\n super(name, filename);\n scope.addClassDefinition(this);\n this.node = node;\n this.events = [];\n this.implementing = [];\n scope.push(_scope_type_1.ScopeType.ClassDefinition, name.getStr(), name.getStart(), filename);\n this.superClass = this.findSuper(def, filename, scope);\n this.friends = this.findFriends(def, filename, scope);\n this.parse(filename, scope);\n const helper = new _object_oriented_1.ObjectOriented(scope);\n helper.fromSuperClassesAndInterfaces(this);\n helper.addAliasedTypes(this.aliases);\n this.attributes = new class_attributes_1.Attributes(this.node, this.filename, scope);\n this.types = this.attributes.getTypes();\n const events = this.node.findAllStatements(Statements.Events);\n for (const e of events) {\n this.events.push(new event_definition_1.EventDefinition(e, visibility_1.Visibility.Public, this.filename, scope)); // todo, all these are not Public\n }\n this.methodDefs = new method_definitions_1.MethodDefinitions(this.node, this.filename, scope);\n scope.pop(node.getLastToken().getEnd());\n const cdef = this.node.findFirstStatement(Statements.ClassDefinition);\n const concat = cdef.concatTokens().toUpperCase();\n this.testing = concat.includes(\" FOR TESTING\");\n this.sharedMemory = concat.includes(\" SHARED MEMORY ENABLED\");\n this.abstract = (cdef === null || cdef === void 0 ? void 0 : cdef.findDirectTokenByText(\"ABSTRACT\")) !== undefined;\n }\n getFriends() {\n return this.friends;\n }\n getEvents() {\n return this.events;\n }\n getMethodDefinitions() {\n return this.methodDefs;\n }\n getTypeDefinitions() {\n return this.types;\n }\n getSuperClass() {\n return this.superClass;\n }\n getAttributes() {\n return this.attributes;\n }\n isGlobal() {\n return this.node.findFirstExpression(Expressions.ClassGlobal) !== undefined;\n }\n isFinal() {\n return this.node.findFirstExpression(Expressions.ClassFinal) !== undefined;\n }\n getImplementing() {\n return this.implementing;\n }\n getAliases() {\n return this.aliases;\n }\n isForTesting() {\n return this.testing;\n }\n isAbstract() {\n return this.abstract;\n }\n isSharedMemory() {\n return this.sharedMemory;\n }\n /*\n public getEvents() {\n }\n */\n ///////////////////\n findSuper(def, filename, scope) {\n var _a;\n const token = (_a = def === null || def === void 0 ? void 0 : def.findDirectExpression(expressions_1.SuperClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n this.addReference(token, filename, scope);\n const name = token === null || token === void 0 ? void 0 : token.getStr();\n return name;\n }\n findFriends(def, filename, scope) {\n var _a;\n const result = [];\n for (const n of ((_a = def === null || def === void 0 ? void 0 : def.findDirectExpression(Expressions.ClassFriends)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.ClassName)) || []) {\n const token = n.getFirstToken();\n this.addReference(token, filename, scope);\n const name = token.getStr();\n result.push(name);\n }\n return result;\n }\n addReference(token, filename, scope) {\n const name = token === null || token === void 0 ? void 0 : token.getStr();\n if (name) {\n const s = scope.findClassDefinition(name);\n if (s) {\n scope.addReference(token, s, _reference_1.ReferenceType.ObjectOrientedReference, filename, { ooName: name.toUpperCase(), ooType: \"CLAS\" });\n }\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename);\n }\n }\n }\n parse(filename, scope) {\n var _a;\n for (const node of this.node.findAllStatements(Statements.InterfaceDef)) {\n const partial = node.concatTokens().toUpperCase().includes(\" PARTIALLY IMPLEMENTED\");\n const token = (_a = node.findFirstExpression(Expressions.InterfaceName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (token === undefined) {\n throw new Error(\"ClassDefinition, unable to find interface token\");\n }\n const name = token.getStr().toUpperCase();\n this.implementing.push({ name, partial });\n const intf = scope.findInterfaceDefinition(name);\n if (intf) {\n scope.addReference(token, intf, _reference_1.ReferenceType.ObjectOrientedReference, filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\n }\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\n }\n else {\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedUnknownReference, filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\n }\n }\n this.aliases = new aliases_1.Aliases(this.node, this.filename, scope);\n }\n}\nexports.ClassDefinition = ClassDefinition;\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/class_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/class_implementation.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/class_implementation.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassImplementation = void 0;\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_implementation_1 = __webpack_require__(/*! ./method_implementation */ \"./node_modules/@abaplint/core/build/src/abap/types/method_implementation.js\");\nclass ClassImplementation extends _identifier_1.Identifier {\n constructor(node, filename) {\n if (!(node.get() instanceof Structures.ClassImplementation)) {\n throw new Error(\"ClassImplementation, unexpected node type\");\n }\n const name = node.findFirstStatement(Statements.ClassImplementation).findFirstExpression(Expressions.ClassName).getFirstToken();\n super(name, filename);\n this.node = node;\n }\n getMethodImplementations() {\n const ret = [];\n for (const method of this.node.findAllStructures(Structures.Method)) {\n ret.push(new method_implementation_1.MethodImplementation(method, this.filename));\n }\n return ret;\n }\n getMethodImplementation(name) {\n for (const impl of this.getMethodImplementations()) {\n if (impl.getName().toUpperCase() === name.toUpperCase()) {\n return impl;\n }\n }\n return undefined;\n }\n}\nexports.ClassImplementation = ClassImplementation;\n//# sourceMappingURL=class_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/class_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/event_definition.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/event_definition.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EventDefinition = void 0;\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst events_1 = __webpack_require__(/*! ../2_statements/statements/events */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/events.js\");\nconst expressions_1 = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_param_1 = __webpack_require__(/*! ../5_syntax/expressions/method_param */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_param.js\");\nclass EventDefinition extends _identifier_1.Identifier {\n constructor(node, _visibility, filename, scope) {\n if (!(node.get() instanceof events_1.Events)) {\n throw new Error(\"MethodDefinition, expected MethodDef as part of input node\");\n }\n const found = node.findFirstExpression(Expressions.EventName);\n if (found === undefined) {\n throw new Error(\"MethodDefinition, expected MethodDef as part of input node\");\n }\n super(found.getFirstToken(), filename);\n this.parameters = [];\n this.parse(node, filename, scope);\n }\n getParameters() {\n return this.parameters;\n }\n ///////////////\n parse(node, filename, scope) {\n for (const e of node.findAllExpressions(expressions_1.MethodParam)) {\n this.parameters.push(new method_param_1.MethodParam().runSyntax(e, scope, filename, []));\n }\n }\n}\nexports.EventDefinition = EventDefinition;\n//# sourceMappingURL=event_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/event_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/form_definition.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/form_definition.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormDefinition = void 0;\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Tokens = __webpack_require__(/*! ../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ./_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst form_param_1 = __webpack_require__(/*! ../5_syntax/expressions/form_param */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/form_param.js\");\nconst basic_1 = __webpack_require__(/*! ./basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass FormDefinition extends _identifier_1.Identifier {\n constructor(node, filename, scope) {\n const st = node instanceof nodes_1.StructureNode ? node.findFirstStatement(Statements.Form) : node;\n // FORMs can contain a dash in the name\n const formName = st.findFirstExpression(Expressions.FormName);\n const pos = formName.getFirstToken().getStart();\n const name = formName.concatTokens();\n const nameToken = new Tokens.Identifier(pos, name);\n super(nameToken, filename);\n this.node = st;\n this.tableParameters = this.findTables(scope, filename);\n this.usingParameters = this.findType(Expressions.FormUsing, scope);\n this.changingParameters = this.findType(Expressions.FormChanging, scope);\n }\n getTablesParameters() {\n return this.tableParameters;\n }\n getUsingParameters() {\n return this.usingParameters;\n }\n getChangingParameters() {\n return this.changingParameters;\n }\n ///////////////\n findTables(scope, filename) {\n const ret = [];\n const tables = this.node.findFirstExpression(Expressions.FormTables);\n if (tables === undefined) {\n return [];\n }\n for (const param of tables.findAllExpressions(Expressions.FormParam)) {\n if (param.getChildren().length === 1) {\n // untyped TABLES parameter\n ret.push(new _typed_identifier_1.TypedIdentifier(param.getFirstToken(), filename, new basic_1.VoidType(\"FORM:UNTYPED\"), [\"form_parameter\" /* IdentifierMeta.FormParameter */]));\n }\n else {\n const p = new form_param_1.FormParam().runSyntax(param, scope, this.filename);\n let type = p.getType();\n const isStructure = param.findDirectTokenByText(\"STRUCTURE\") !== undefined;\n if (isStructure) {\n type = new basic_1.TableType(type, { withHeader: true, keyType: basic_1.TableKeyType.default });\n }\n if (type instanceof basic_1.TableType) {\n type = new basic_1.TableType(type.getRowType(), { withHeader: true, keyType: basic_1.TableKeyType.default });\n }\n else if (!(type instanceof basic_1.UnknownType) && !(type instanceof basic_1.VoidType)) {\n type = new basic_1.UnknownType(\"FORM TABLES type must be table type\");\n }\n ret.push(new _typed_identifier_1.TypedIdentifier(p.getToken(), filename, type, [\"form_parameter\" /* IdentifierMeta.FormParameter */]));\n }\n }\n return ret;\n }\n findType(type, scope) {\n const found = this.node.findFirstExpression(type);\n if (found === undefined) {\n return [];\n }\n return this.findParams(found, scope);\n }\n findParams(node, scope) {\n const res = [];\n for (const param of node.findAllExpressions(Expressions.FormParam)) {\n const p = new form_param_1.FormParam().runSyntax(param, scope, this.filename);\n res.push(p);\n }\n return res;\n }\n}\nexports.FormDefinition = FormDefinition;\n//# sourceMappingURL=form_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/form_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/function_module_definition.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/function_module_definition.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionModuleDefinition = exports.FunctionModuleParameterDirection = void 0;\nconst xml_utils_1 = __webpack_require__(/*! ../../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nvar FunctionModuleParameterDirection;\n(function (FunctionModuleParameterDirection) {\n FunctionModuleParameterDirection[\"importing\"] = \"importing\";\n FunctionModuleParameterDirection[\"exporting\"] = \"exporting\";\n FunctionModuleParameterDirection[\"changing\"] = \"changing\";\n FunctionModuleParameterDirection[\"tables\"] = \"tables\";\n})(FunctionModuleParameterDirection || (exports.FunctionModuleParameterDirection = FunctionModuleParameterDirection = {}));\nclass FunctionModuleDefinition {\n constructor(data) {\n this.parse(data);\n }\n getParameters() {\n return this.parameters;\n }\n getDescription() {\n return this.description;\n }\n getName() {\n return this.name;\n }\n ///////////////\n parse(data) {\n if (data.FUNCNAME === undefined) {\n throw new Error(\"Function module name undefined\");\n }\n this.name = data.FUNCNAME;\n this.description = data.SHORT_TEXT;\n this.parameters = [];\n if (data.IMPORT) {\n for (const param of (0, xml_utils_1.xmlToArray)(data.IMPORT.RSIMP)) {\n if (param.PARAMETER === undefined) {\n throw new Error(\"Function module name parameter undefined, importing\");\n }\n this.parameters.push({\n name: param.PARAMETER,\n direction: FunctionModuleParameterDirection.importing,\n type: param.TYP || param.DBFIELD,\n optional: param.OPTIONAL === \"X\",\n defaultValue: param.DEFAULT,\n });\n }\n }\n if (data.CHANGING) {\n for (const param of (0, xml_utils_1.xmlToArray)(data.CHANGING.RSCHA)) {\n if (param.PARAMETER === undefined) {\n throw new Error(\"Function module name parameter undefined, changing\");\n }\n this.parameters.push({\n name: param.PARAMETER,\n direction: FunctionModuleParameterDirection.changing,\n type: param.TYP || param.DBFIELD,\n optional: param.OPTIONAL === \"X\",\n defaultValue: param.DEFAULT,\n });\n }\n }\n if (data.EXPORT) {\n for (const param of (0, xml_utils_1.xmlToArray)(data.EXPORT.RSEXP)) {\n if (param.PARAMETER === undefined) {\n throw new Error(\"Function module name parameter undefined, exporting\");\n }\n this.parameters.push({\n name: param.PARAMETER,\n direction: FunctionModuleParameterDirection.exporting,\n type: param.TYP || param.DBFIELD,\n optional: true,\n defaultValue: undefined,\n });\n }\n }\n if (data.TABLES) {\n for (const param of (0, xml_utils_1.xmlToArray)(data.TABLES.RSTBL)) {\n if (param.PARAMETER === undefined) {\n throw new Error(\"Function module name parameter undefined, tables\");\n }\n this.parameters.push({\n name: param.PARAMETER,\n direction: FunctionModuleParameterDirection.tables,\n // table types are stored in TYP\n type: param.DBSTRUCT || param.TYP,\n optional: param.OPTIONAL === \"X\",\n defaultValue: undefined,\n });\n }\n }\n }\n}\nexports.FunctionModuleDefinition = FunctionModuleDefinition;\n//# sourceMappingURL=function_module_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/function_module_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/index.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/index.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./class_attribute */ \"./node_modules/@abaplint/core/build/src/abap/types/class_attribute.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_attributes */ \"./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_constant */ \"./node_modules/@abaplint/core/build/src/abap/types/class_constant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/class_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_implementation */ \"./node_modules/@abaplint/core/build/src/abap/types/class_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/form_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_module_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/function_module_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/interface_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_definitions */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_implementation */ \"./node_modules/@abaplint/core/build/src/abap/types/method_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_parameters */ \"./node_modules/@abaplint/core/build/src/abap/types/method_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_definitions */ \"./node_modules/@abaplint/core/build/src/abap/types/type_definitions.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/interface_definition.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/interface_definition.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InterfaceDefinition = void 0;\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst class_attributes_1 = __webpack_require__(/*! ./class_attributes */ \"./node_modules/@abaplint/core/build/src/abap/types/class_attributes.js\");\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst event_definition_1 = __webpack_require__(/*! ./event_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/event_definition.js\");\nconst method_definitions_1 = __webpack_require__(/*! ./method_definitions */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js\");\nconst aliases_1 = __webpack_require__(/*! ./aliases */ \"./node_modules/@abaplint/core/build/src/abap/types/aliases.js\");\nconst _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass InterfaceDefinition extends _identifier_1.Identifier {\n constructor(node, filename, scope) {\n if (!(node.get() instanceof Structures.Interface)) {\n throw new Error(\"InterfaceDefinition, unexpected node type\");\n }\n const name = node.findFirstStatement(Statements.Interface).findFirstExpression(Expressions.InterfaceName).getFirstToken();\n super(name, filename);\n scope.addInterfaceDefinition(this);\n this.node = node;\n this.events = [];\n this.implementing = [];\n scope.push(_scope_type_1.ScopeType.Interface, name.getStr(), node.getFirstToken().getStart(), filename);\n this.parse(scope);\n scope.pop(node.getLastToken().getEnd());\n }\n getSuperClass() {\n return undefined;\n }\n getImplementing() {\n return this.implementing;\n }\n getAliases() {\n return this.aliases;\n }\n getEvents() {\n return this.events;\n }\n getAttributes() {\n return this.attributes;\n }\n getTypeDefinitions() {\n return this.typeDefinitions;\n }\n isLocal() {\n return !this.isGlobal();\n }\n isGlobal() {\n return this.node.findFirstExpression(Expressions.ClassGlobal) !== undefined;\n }\n getMethodDefinitions() {\n return this.methodDefinitions;\n }\n /////////////////\n parse(scope) {\n var _a;\n // todo, proper sequencing, the statements should be processed line by line\n this.attributes = new class_attributes_1.Attributes(this.node, this.filename, scope);\n this.typeDefinitions = this.attributes.getTypes();\n this.aliases = new aliases_1.Aliases(this.node, this.filename, scope);\n // todo, cleanup aliases, vs \"object_oriented.ts\" vs \"class_implementation.ts\"\n for (const a of this.aliases.getAll()) {\n const [objName, fieldName] = a.getComponent().split(\"~\");\n const idef = scope.findInterfaceDefinition(objName);\n if (idef) {\n const found = idef.getTypeDefinitions().getByName(fieldName);\n if (found) {\n scope.addTypeNamed(a.getName(), found);\n }\n }\n }\n this.methodDefinitions = new method_definitions_1.MethodDefinitions(this.node, this.filename, scope);\n const events = this.node.findAllStatements(Statements.Events);\n for (const e of events) {\n this.events.push(new event_definition_1.EventDefinition(e, visibility_1.Visibility.Public, this.filename, scope));\n }\n for (const i of this.node.findAllStatements(Statements.InterfaceDef)) {\n const token = (_a = i.findDirectExpression(Expressions.InterfaceName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const name = token === null || token === void 0 ? void 0 : token.getStr();\n if (name) {\n this.implementing.push({ name, partial: false });\n const idef = scope.findInterfaceDefinition(name);\n if (idef) {\n scope.addReference(token, idef, _reference_1.ReferenceType.ObjectOrientedReference, this.filename, { ooName: name.toUpperCase(), ooType: \"INTF\" });\n }\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\n scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, this.filename);\n }\n else {\n throw new Error(\"Interface \" + name + \" unknown\");\n }\n }\n }\n }\n}\nexports.InterfaceDefinition = InterfaceDefinition;\n//# sourceMappingURL=interface_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/interface_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/message.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/message.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Message = void 0;\nclass Message {\n constructor(number, message) {\n this.number = number;\n if (this.number === undefined) {\n this.number = \"\";\n }\n this.message = message;\n if (this.message === undefined) {\n this.message = \"\";\n }\n }\n getNumber() {\n return this.number;\n }\n getMessage() {\n return this.message;\n }\n getPlaceholderCount() {\n return (this.getMessage().match(/&/g) || []).length;\n }\n}\nexports.Message = Message;\n//# sourceMappingURL=message.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/message.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/method_definition.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/method_definition.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefinition = void 0;\nconst statements_1 = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst method_parameters_1 = __webpack_require__(/*! ./method_parameters */ \"./node_modules/@abaplint/core/build/src/abap/types/method_parameters.js\");\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass MethodDefinition extends _identifier_1.Identifier {\n // todo: final flag\n constructor(node, visibility, filename, scope) {\n var _a, _b;\n if (!(node.get() instanceof statements_1.MethodDef)) {\n throw new Error(\"MethodDefinition, expected MethodDef as part of input node\");\n }\n const found = node.findDirectExpression(Expressions.MethodName);\n if (found === undefined) {\n throw new Error(\"MethodDefinition, expected MethodDef as part of input node\");\n }\n super(found.getFirstToken(), filename);\n this.redefinition = false;\n if (node.findDirectExpression(Expressions.Redefinition)) {\n this.redefinition = true;\n const name = found.getFirstToken().getStr();\n if (name.includes(\"~\")) {\n const idef = scope.findInterfaceDefinition(name.split(\"~\")[0]);\n if (idef) {\n scope.addReference(found.getFirstToken(), idef, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n }\n }\n this.eventHandler = false;\n if (node.findDirectExpression(Expressions.EventHandler)) {\n this.eventHandler = true;\n }\n this.abstract = false;\n if (node.findDirectExpression(Expressions.Abstract)) {\n this.abstract = true;\n }\n this.static = false;\n // checks for \"CLASS-METHODS\"\n if (node.getFirstToken().getStr().toUpperCase().startsWith(\"CLASS\")) {\n this.static = true;\n }\n this.raising = [];\n for (const r of ((_a = node.findDirectExpression(Expressions.MethodDefRaising)) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.ClassName)) || []) {\n const token = r.getFirstToken();\n const name = token.getStr();\n this.raising.push(name);\n const clas = scope.findClassDefinition(name);\n if (clas) {\n scope.addReference(token, clas, _reference_1.ReferenceType.ObjectOrientedReference, filename, { ooName: name.toUpperCase(), ooType: \"CLAS\" });\n }\n else if (scope.getDDIC().inErrorNamespace(name) === false) {\n scope.addReference(token, clas, _reference_1.ReferenceType.ObjectOrientedVoidReference, filename, { ooName: name.toUpperCase(), ooType: \"CLAS\" });\n }\n else {\n scope.addReference(token, clas, _reference_1.ReferenceType.ObjectOrientedUnknownReference, filename, { ooName: name.toUpperCase(), ooType: \"CLAS\" });\n }\n }\n this.exceptions = [];\n for (const r of ((_b = node.findDirectExpression(Expressions.MethodDefExceptions)) === null || _b === void 0 ? void 0 : _b.findAllExpressions(Expressions.NamespaceSimpleName)) || []) {\n const token = r.getFirstToken();\n const name = token.getStr();\n this.exceptions.push(name);\n }\n this.visibility = visibility;\n this.parameters = new method_parameters_1.MethodParameters(node, this.filename, scope);\n }\n getVisibility() {\n return this.visibility;\n }\n isRedefinition() {\n return this.redefinition;\n }\n isAbstract() {\n return this.abstract;\n }\n isStatic() {\n return this.static;\n }\n isEventHandler() {\n return this.eventHandler;\n }\n getParameters() {\n return this.parameters;\n }\n getRaising() {\n return this.raising;\n }\n getExceptions() {\n return this.exceptions;\n }\n}\nexports.MethodDefinition = MethodDefinition;\n//# sourceMappingURL=method_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/method_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodDefinitions = void 0;\nconst method_definition_1 = __webpack_require__(/*! ./method_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definition.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst statements_1 = __webpack_require__(/*! ../2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst visibility_1 = __webpack_require__(/*! ../4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nclass MethodDefinitions {\n constructor(node, filename, scope) {\n this.all = {};\n this.all = {};\n this.filename = filename;\n this.parse(node, scope);\n }\n *getAll() {\n for (const a in this.all) {\n yield this.all[a];\n }\n }\n getByName(name) {\n if (name === undefined) {\n return undefined;\n }\n return this.all[name.toUpperCase()];\n }\n ///////////////////////\n parseInterface(node, scope) {\n const defs = node.findAllStatements(statements_1.MethodDef);\n for (const def of defs) {\n const m = new method_definition_1.MethodDefinition(def, visibility_1.Visibility.Public, this.filename, scope);\n this.all[m.getName().toUpperCase()] = m;\n }\n }\n parse(node, scope) {\n const idef = node.findDirectStructure(Structures.Interface);\n if (idef) {\n return this.parseInterface(node, scope);\n }\n const cdef = node.findDirectStructure(Structures.ClassDefinition);\n if (!cdef) {\n throw new Error(\"MethodDefinitions, expected ClassDefinition as part of input node\");\n }\n const pri = cdef.findDirectStructure(Structures.PrivateSection);\n for (const def of (pri === null || pri === void 0 ? void 0 : pri.findAllStatements(statements_1.MethodDef)) || []) {\n const m = new method_definition_1.MethodDefinition(def, visibility_1.Visibility.Private, this.filename, scope);\n this.all[m.getName().toUpperCase()] = m;\n }\n const pro = node.findDirectStructure(Structures.ProtectedSection);\n for (const def of (pro === null || pro === void 0 ? void 0 : pro.findAllStatements(statements_1.MethodDef)) || []) {\n const m = new method_definition_1.MethodDefinition(def, visibility_1.Visibility.Protected, this.filename, scope);\n this.all[m.getName().toUpperCase()] = m;\n }\n const pub = node.findDirectStructure(Structures.PublicSection);\n for (const def of (pub === null || pub === void 0 ? void 0 : pub.findAllStatements(statements_1.MethodDef)) || []) {\n const m = new method_definition_1.MethodDefinition(def, visibility_1.Visibility.Public, this.filename, scope);\n this.all[m.getName().toUpperCase()] = m;\n }\n }\n}\nexports.MethodDefinitions = MethodDefinitions;\n//# sourceMappingURL=method_definitions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/method_definitions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/method_implementation.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/method_implementation.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodImplementation = void 0;\nconst _identifier_1 = __webpack_require__(/*! ../4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst Structures = __webpack_require__(/*! ../3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass MethodImplementation extends _identifier_1.Identifier {\n constructor(node, filename) {\n if (!(node.get() instanceof Structures.Method)) {\n throw new Error(\"MethodImplementation, expected Method as part of input node\");\n }\n const found = node.findFirstExpression(Expressions.MethodName);\n if (found === undefined) {\n throw new Error(\"MethodImplementation, expected MethodName as part of input node\");\n }\n super(found.getFirstToken(), filename);\n }\n}\nexports.MethodImplementation = MethodImplementation;\n//# sourceMappingURL=method_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/method_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/method_parameters.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/method_parameters.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParameters = void 0;\nconst method_def_1 = __webpack_require__(/*! ../2_statements/statements/method_def */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_def.js\");\nconst Expressions = __webpack_require__(/*! ../2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ./_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ./basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst method_def_returning_1 = __webpack_require__(/*! ../5_syntax/expressions/method_def_returning */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_def_returning.js\");\nconst method_param_1 = __webpack_require__(/*! ../5_syntax/expressions/method_param */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/method_param.js\");\nconst _object_oriented_1 = __webpack_require__(/*! ../5_syntax/_object_oriented */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js\");\nconst _reference_1 = __webpack_require__(/*! ../5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst identifier_1 = __webpack_require__(/*! ../1_lexer/tokens/identifier */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js\");\n// todo:\n// this.exceptions = [];\n// also consider RAISING vs EXCEPTIONS\nclass MethodParameters {\n constructor(node, filename, scope) {\n if (!(node.get() instanceof method_def_1.MethodDef)) {\n throw new Error(\"MethodDefinition, expected MethodDef as part of input node\");\n }\n this.importing = [];\n this.exporting = [];\n this.changing = [];\n this.optional = [];\n this.defaults = {};\n this.returning = undefined;\n this.preferred = undefined;\n this.exceptions = [];\n this.filename = filename;\n this.parse(node, scope, filename);\n }\n getFilename() {\n return this.filename;\n }\n getOptional() {\n return this.optional;\n }\n getAll() {\n const ret = [];\n const returning = this.getReturning();\n if (returning) {\n ret.push(returning);\n }\n ret.push(...this.getImporting());\n ret.push(...this.getExporting());\n ret.push(...this.getChanging());\n return ret;\n }\n getDefaultImporting() {\n if (this.importing.length === 0) {\n return undefined;\n }\n else if (this.importing.length === 1) {\n return this.importing[0].getName().toUpperCase();\n }\n else if (this.preferred) {\n return this.preferred;\n }\n let candidates = this.importing.map(i => i.getName().toUpperCase());\n candidates = candidates.filter(c => this.optional.indexOf(c) < 0);\n if (candidates.length === 1) {\n return candidates[0];\n }\n return undefined;\n }\n getImporting() {\n return this.importing;\n }\n getRequiredParameters() {\n var _a;\n const ret = [];\n for (const i of this.getImporting()) {\n if (this.getOptional().some(o => o.toUpperCase() === i.getName().toUpperCase()) === true) {\n continue;\n }\n else if (((_a = this.preferred) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === i.getName().toUpperCase()) {\n continue;\n }\n ret.push(i);\n }\n for (const i of this.getChanging()) {\n if (this.getOptional().some(o => o.toUpperCase() === i.getName().toUpperCase()) === true) {\n continue;\n }\n ret.push(i);\n }\n return ret;\n }\n getExporting() {\n return this.exporting;\n }\n getChanging() {\n return this.changing;\n }\n getReturning() {\n return this.returning;\n }\n getExceptions() {\n return this.exceptions;\n }\n getParameterDefault(parameter) {\n return this.defaults[parameter.toUpperCase()];\n }\n ///////////////////\n parse(node, scope, filename) {\n var _a, _b;\n const handler = node.findFirstExpression(Expressions.EventHandler);\n if (handler) {\n const nameToken = (_a = node.findFirstExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const ooName = nameToken === null || nameToken === void 0 ? void 0 : nameToken.getStr();\n const def = scope.findObjectDefinition(ooName);\n const doVoid = def ? false : !scope.getDDIC().inErrorNamespace(ooName);\n if (def) {\n scope.addReference(nameToken, def, _reference_1.ReferenceType.ObjectOrientedReference, filename);\n }\n else if (doVoid && ooName) {\n scope.addReference(nameToken, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, this.filename, { ooName: ooName.toUpperCase() });\n }\n const eventName = (_b = node.findFirstExpression(Expressions.EventName)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr();\n const event = new _object_oriented_1.ObjectOriented(scope).searchEvent(def, eventName);\n for (const p of handler.findAllExpressions(Expressions.MethodParamName)) {\n const token = p.getFirstToken();\n const search = token.getStr().toUpperCase().replace(\"!\", \"\");\n this.optional.push(search); // all parameters optional for event handlers\n if (search === \"SENDER\" && def) {\n this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, new basic_1.ObjectReferenceType(def), [\"event_parameter\" /* IdentifierMeta.EventParameter */]));\n continue;\n }\n const found = event === null || event === void 0 ? void 0 : event.getParameters().find(p => p.getName().toUpperCase() === search);\n if (found) {\n this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, found.getType(), [\"event_parameter\" /* IdentifierMeta.EventParameter */]));\n }\n else if (doVoid) {\n this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, new basic_1.VoidType(ooName), [\"event_parameter\" /* IdentifierMeta.EventParameter */]));\n }\n else {\n const type = new basic_1.UnknownType(`handler parameter not found \"${search}\"`);\n this.importing.push(new _typed_identifier_1.TypedIdentifier(token, this.filename, type, [\"event_parameter\" /* IdentifierMeta.EventParameter */]));\n }\n }\n return;\n }\n const importing = node.findFirstExpression(Expressions.MethodDefImporting);\n if (importing) {\n this.add(this.importing, importing, scope, [\"importing\" /* IdentifierMeta.MethodImporting */]);\n if (importing.concatTokens().toUpperCase().includes(\" PREFERRED PARAMETER\")) {\n this.preferred = importing.getLastToken().getStr().toUpperCase();\n if (this.preferred.startsWith(\"!\")) {\n this.preferred = this.preferred.substring(1);\n }\n }\n }\n const exporting = node.findFirstExpression(Expressions.MethodDefExporting);\n if (exporting) {\n this.add(this.exporting, exporting, scope, [\"exporting\" /* IdentifierMeta.MethodExporting */]);\n }\n const changing = node.findFirstExpression(Expressions.MethodDefChanging);\n if (changing) {\n this.add(this.changing, changing, scope, [\"changing\" /* IdentifierMeta.MethodChanging */]);\n }\n const returning = node.findFirstExpression(Expressions.MethodDefReturning);\n if (returning) {\n this.returning = new method_def_returning_1.MethodDefReturning().runSyntax(returning, scope, this.filename, [\"returning\" /* IdentifierMeta.MethodReturning */]);\n }\n this.workaroundRAP(node, scope, filename);\n }\n workaroundRAP(node, scope, filename) {\n const resultName = node.findExpressionAfterToken(\"RESULT\");\n const isRap = node.findExpressionAfterToken(\"IMPORTING\");\n if (isRap) {\n for (const foo of node.findDirectExpressions(Expressions.MethodParamName)) {\n if (foo === resultName) {\n continue;\n }\n this.importing.push(new _typed_identifier_1.TypedIdentifier(foo.getFirstToken(), filename, new basic_1.VoidType(\"RapMethodParameter\"), [\"importing\" /* IdentifierMeta.MethodImporting */]));\n }\n if (node.concatTokens().toUpperCase().includes(\" FOR VALIDATE \")\n || node.concatTokens().toUpperCase().includes(\" FOR BEHAVIOR \")\n || node.concatTokens().toUpperCase().includes(\" FOR FEATURES \")\n || node.concatTokens().toUpperCase().includes(\" FOR MODIFY \")) {\n const token = isRap.getFirstToken();\n this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), \"failed\"), filename, new basic_1.VoidType(\"RapMethodParameter\"), [\"exporting\" /* IdentifierMeta.MethodExporting */]));\n this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), \"mapped\"), filename, new basic_1.VoidType(\"RapMethodParameter\"), [\"exporting\" /* IdentifierMeta.MethodExporting */]));\n this.exporting.push(new _typed_identifier_1.TypedIdentifier(new identifier_1.Identifier(token.getStart(), \"reported\"), filename, new basic_1.VoidType(\"RapMethodParameter\"), [\"exporting\" /* IdentifierMeta.MethodExporting */]));\n }\n }\n if (resultName) {\n const token = resultName.getFirstToken();\n this.importing.push(new _typed_identifier_1.TypedIdentifier(token, filename, new basic_1.VoidType(\"RapMethodParameter\"), [\"exporting\" /* IdentifierMeta.MethodExporting */]));\n }\n // its some kind of magic\n if (scope.getName().toUpperCase() === \"CL_ABAP_BEHAVIOR_SAVER\") {\n const tempChanging = this.changing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), filename, new basic_1.VoidType(\"RapMethodParameter\"), c.getMeta()));\n while (this.changing.length > 0) {\n this.changing.shift();\n }\n this.changing.push(...tempChanging);\n const tempImporting = this.importing.map(c => new _typed_identifier_1.TypedIdentifier(c.getToken(), filename, new basic_1.VoidType(\"RapMethodParameter\"), c.getMeta()));\n while (this.importing.length > 0) {\n this.importing.shift();\n }\n this.importing.push(...tempImporting);\n }\n }\n add(target, source, scope, meta) {\n var _a;\n for (const opt of source.findAllExpressions(Expressions.MethodParamOptional)) {\n const p = opt.findDirectExpression(Expressions.MethodParam);\n if (p === undefined) {\n continue;\n }\n const extraMeta = [];\n if (opt.concatTokens().toUpperCase().startsWith(\"VALUE(\")) {\n extraMeta.push(\"pass_by_value\" /* IdentifierMeta.PassByValue */);\n }\n else if (meta.includes(\"importing\" /* IdentifierMeta.MethodImporting */)) {\n extraMeta.push(\"read_only\" /* IdentifierMeta.ReadOnly */);\n }\n target.push(new method_param_1.MethodParam().runSyntax(p, scope, this.filename, [...meta, ...extraMeta]));\n if (opt.getLastToken().getStr().toUpperCase() === \"OPTIONAL\") {\n const name = target[target.length - 1].getName().toUpperCase();\n this.optional.push(name);\n }\n else if (opt.findFirstExpression(Expressions.Default)) {\n const name = target[target.length - 1].getName().toUpperCase();\n this.optional.push(name);\n const val = (_a = opt.findFirstExpression(Expressions.Default)) === null || _a === void 0 ? void 0 : _a.getLastChild();\n if (val && val instanceof nodes_1.ExpressionNode) {\n this.defaults[name] = val;\n }\n }\n }\n if (target.length > 0) {\n return;\n }\n const params = source.findAllExpressions(Expressions.MethodParam);\n for (const param of params) {\n target.push(new method_param_1.MethodParam().runSyntax(param, scope, this.filename, meta));\n }\n }\n}\nexports.MethodParameters = MethodParameters;\n//# sourceMappingURL=method_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/method_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/abap/types/type_definitions.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/abap/types/type_definitions.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeDefinitions = void 0;\nclass TypeDefinitions {\n constructor(list) {\n this.map = {};\n this.list = list;\n for (const t of list) {\n // todo, can assumptions be made regarding the case of t.getName()?\n this.map[t.type.getName().toUpperCase()] = t;\n }\n }\n getAll() {\n return this.list;\n }\n getByName(name) {\n var _a;\n return (_a = this.map[name.toUpperCase()]) === null || _a === void 0 ? void 0 : _a.type;\n }\n}\nexports.TypeDefinitions = TypeDefinitions;\n//# sourceMappingURL=type_definitions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/abap/types/type_definitions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/artifacts_objects.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/artifacts_objects.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ArtifactsObjects = void 0;\nconst Objects = __webpack_require__(/*! ./objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _unknown_object_1 = __webpack_require__(/*! ./objects/_unknown_object */ \"./node_modules/@abaplint/core/build/src/objects/_unknown_object.js\");\nclass ArtifactsObjects {\n static newObject(name, type) {\n if (this.objectMap === undefined) {\n this.buildObjectMap();\n }\n if (type === undefined || this.objectMap[type] === undefined) {\n return new _unknown_object_1.UnknownObject(name, type);\n }\n else {\n return new this.objectMap[type](name);\n }\n }\n static buildObjectMap() {\n this.objectMap = [];\n const list = Objects;\n for (const key in Objects) {\n if (typeof list[key] === \"function\") {\n const obj = new list[key](\"DUMMY_NAME\");\n this.objectMap[obj.getType()] = list[key];\n }\n }\n }\n}\nexports.ArtifactsObjects = ArtifactsObjects;\n//# sourceMappingURL=artifacts_objects.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/artifacts_objects.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/artifacts_rules.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/artifacts_rules.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ArtifactsRules = void 0;\nconst Rules = __webpack_require__(/*! ./rules */ \"./node_modules/@abaplint/core/build/src/rules/index.js\");\nclass ArtifactsRules {\n static getRules() {\n const ret = [];\n const list = Rules;\n for (const key in Rules) {\n if (typeof list[key] === \"function\") {\n const rule = new list[key]();\n // note that configuration is also exported from rules\n if (rule.getMetadata !== undefined) {\n ret.push(rule);\n }\n }\n }\n return ret;\n }\n}\nexports.ArtifactsRules = ArtifactsRules;\n//# sourceMappingURL=artifacts_rules.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/artifacts_rules.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/cds_determine_types.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/cds_determine_types.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSDetermineTypes = void 0;\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass CDSDetermineTypes {\n parseType(_reg, parsedData) {\n if ((parsedData === null || parsedData === void 0 ? void 0 : parsedData.fields.length) === 0) {\n return new basic_1.VoidType(\"DDLS:todo\");\n }\n else {\n const components = [];\n for (const f of (parsedData === null || parsedData === void 0 ? void 0 : parsedData.fields) || []) {\n components.push({\n name: f.name,\n type: new basic_1.VoidType(\"DDLS:fieldname\"),\n });\n }\n return new basic_1.StructureType(components);\n }\n }\n}\nexports.CDSDetermineTypes = CDSDetermineTypes;\n//# sourceMappingURL=cds_determine_types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/cds_determine_types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/cds_lexer.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/cds_lexer.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSLexer = void 0;\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\n// todo: Keywords must be all uppercase, all lowercase, or in lowercase with an\n// uppercase initial letter. Other mixes of uppercase and lowercase are not allowed\nclass Stream {\n constructor(buffer) {\n this.buffer = buffer;\n }\n takeNext() {\n const next = this.buffer.substring(0, 1);\n this.buffer = this.buffer.substring(1);\n return next;\n }\n peekNext() {\n const next = this.buffer.substring(0, 1);\n return next;\n }\n length() {\n return this.buffer.length;\n }\n}\nvar Mode;\n(function (Mode) {\n Mode[Mode[\"Default\"] = 0] = \"Default\";\n Mode[Mode[\"String\"] = 1] = \"String\";\n Mode[Mode[\"SingleLineComment\"] = 2] = \"SingleLineComment\";\n Mode[Mode[\"MultiLineComment\"] = 3] = \"MultiLineComment\";\n})(Mode || (Mode = {}));\nclass Result {\n constructor() {\n this.result = [];\n }\n add(text, row, col, mode) {\n if (text.length > 0) {\n if (mode === Mode.SingleLineComment) {\n this.result.push(new tokens_1.Comment(new position_1.Position(row, col), text));\n }\n else {\n this.result.push(new tokens_1.Identifier(new position_1.Position(row, col), text));\n }\n }\n return \"\";\n }\n get() {\n return this.result;\n }\n}\nclass CDSLexer {\n static run(file) {\n const result = new Result();\n let mode = Mode.Default;\n let row = 1;\n let col = 1;\n let build = \"\";\n const stream = new Stream(file.getRaw().replace(/\\r/g, \"\").replace(/\\u00a0/g, \" \"));\n let next = \"\";\n while (stream.length() > 0) {\n const prev = next;\n next = stream.takeNext();\n const nextNext = stream.peekNext();\n col++;\n // string handling\n if (mode === Mode.String) {\n build += next;\n if (next === \"'\") {\n build = result.add(build, row, col, mode);\n mode = Mode.Default;\n }\n continue;\n }\n // single line comment handling\n if (mode === Mode.SingleLineComment) {\n if (next === \"\\n\") {\n build = result.add(build, row, col, mode);\n mode = Mode.Default;\n }\n else {\n build += next;\n continue;\n }\n }\n else if (mode === Mode.Default && next === \"/\" && nextNext === \"/\") {\n mode = Mode.SingleLineComment;\n build = result.add(build, row, col, mode);\n build += next;\n continue;\n }\n else if (mode === Mode.Default && next === \"-\" && nextNext === \"-\") {\n mode = Mode.SingleLineComment;\n build = result.add(build, row, col, mode);\n build += next;\n continue;\n }\n // multi line comment handling\n if (mode === Mode.MultiLineComment) {\n if (next === \"\\n\") {\n row++;\n }\n else if (prev === \"*\" && next === \"/\") {\n mode = Mode.Default;\n }\n continue;\n }\n else if (mode === Mode.Default && next === \"/\" && nextNext === \"*\") {\n mode = Mode.MultiLineComment;\n build = result.add(build, row, col, mode);\n continue;\n }\n switch (next) {\n case \"'\":\n mode = Mode.String;\n build += next;\n break;\n case \" \":\n build = result.add(build, row, col, mode);\n break;\n case \"\\n\":\n build = result.add(build, row, col, mode);\n row++;\n col = 0;\n break;\n case \";\":\n case \":\":\n case \",\":\n case \".\":\n case \"{\":\n case \"}\":\n case \"(\":\n case \")\":\n case \"[\":\n case \"]\":\n case \"=\":\n case \"<\":\n case \">\":\n case \"+\":\n case \"-\":\n case \"*\":\n case \"/\":\n build = result.add(build, row, col, mode);\n result.add(next, row, col, mode);\n break;\n default:\n build += next;\n break;\n }\n }\n result.add(build, row, col, mode);\n return result.get();\n }\n}\nexports.CDSLexer = CDSLexer;\n//# sourceMappingURL=cds_lexer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/cds_lexer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/cds_parser.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/cds_parser.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSParser = void 0;\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst combi_1 = __webpack_require__(/*! ../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst cds_lexer_1 = __webpack_require__(/*! ./cds_lexer */ \"./node_modules/@abaplint/core/build/src/cds/cds_lexer.js\");\nconst Expressions = __webpack_require__(/*! ./expressions */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\n// todo: the names of the ABAP + CDS + DDL expressions might overlap, if overlapping the singleton will fail\nclass CDSParser {\n parse(file) {\n if (file === undefined) {\n return undefined;\n }\n let tokens = cds_lexer_1.CDSLexer.run(file);\n tokens = tokens.filter(t => !(t instanceof tokens_1.Comment));\n // console.dir(tokens);\n let res = combi_1.Combi.run(new Expressions.CDSDefineView(), tokens, version_1.defaultVersion);\n if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {\n res = combi_1.Combi.run(new Expressions.CDSDefineAbstract(), tokens, version_1.defaultVersion);\n }\n if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {\n res = combi_1.Combi.run(new Expressions.CDSDefineProjection(), tokens, version_1.defaultVersion);\n }\n if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {\n res = combi_1.Combi.run(new Expressions.CDSAnnotate(), tokens, version_1.defaultVersion);\n }\n if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {\n res = combi_1.Combi.run(new Expressions.CDSDefineCustom(), tokens, version_1.defaultVersion);\n }\n if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {\n return undefined;\n }\n return res[0];\n }\n}\nexports.CDSParser = CDSParser;\n//# sourceMappingURL=cds_parser.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/cds_parser.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAggregate = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSAggregate extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\n const value = (0, combi_1.alt)(name, _1.CDSCast, _1.CDSCase);\n return (0, combi_1.seq)((0, combi_1.alt)(\"MAX\", \"MIN\", \"SUM\", \"AVG\", \"COUNT\"), \"(\", (0, combi_1.opt)(\"DISTINCT\"), value, \")\");\n }\n}\nexports.CDSAggregate = CDSAggregate;\n//# sourceMappingURL=cds_aggregate.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotate.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotate.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAnnotate = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSAnnotate extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), \"ANNOTATE\", (0, combi_1.alt)(\"ENTITY\", \"VIEW\"), _1.CDSName, \"WITH\", (0, combi_1.str)(\"{\"), (0, combi_1.plus)((0, combi_1.seq)(_1.CDSElement, \";\")), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(\";\"));\n }\n}\nexports.CDSAnnotate = CDSAnnotate;\n//# sourceMappingURL=cds_annotate.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotate.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAnnotation = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_annotation_array_1 = __webpack_require__(/*! ./cds_annotation_array */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js\");\nclass CDSAnnotation extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.regex)(/^@\\w+$/), (0, combi_1.star)((0, combi_1.seq)(\".\", (0, combi_1.regex)(/^\\w+$/))), (0, combi_1.opt)(\":\"), (0, combi_1.opt)((0, combi_1.alt)(cds_annotation_array_1.CDSAnnotationArray, _1.CDSAnnotationObject, _1.CDSAnnotationSimple)));\n }\n}\nexports.CDSAnnotation = CDSAnnotation;\n//# sourceMappingURL=cds_annotation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAnnotationArray = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_annotation_simple_1 = __webpack_require__(/*! ./cds_annotation_simple */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js\");\nclass CDSAnnotationArray extends combi_1.Expression {\n getRunnable() {\n const value = (0, combi_1.alt)(cds_annotation_simple_1.CDSAnnotationSimple, _1.CDSAnnotationObject, CDSAnnotationArray);\n const valueList = (0, combi_1.seq)(\"[\", value, (0, combi_1.star)((0, combi_1.seq)(\",\", value)), \"]\");\n return valueList;\n }\n}\nexports.CDSAnnotationArray = CDSAnnotationArray;\n//# sourceMappingURL=cds_annotation_array.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAnnotationObject = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_annotation_simple_1 = __webpack_require__(/*! ./cds_annotation_simple */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js\");\nclass CDSAnnotationObject extends combi_1.Expression {\n getRunnable() {\n const value = (0, combi_1.seq)(\":\", (0, combi_1.alt)(CDSAnnotationObject, _1.CDSAnnotationArray, cds_annotation_simple_1.CDSAnnotationSimple));\n const namedot = (0, combi_1.seq)(_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName)));\n const valueNested = (0, combi_1.seq)(\"{\", namedot, (0, combi_1.opt)(value), (0, combi_1.star)((0, combi_1.seq)(\",\", namedot, (0, combi_1.opt)(value))), \"}\");\n return valueNested;\n }\n}\nexports.CDSAnnotationObject = CDSAnnotationObject;\n//# sourceMappingURL=cds_annotation_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAnnotationSimple = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSAnnotationSimple extends combi_1.Expression {\n getRunnable() {\n const value = (0, combi_1.alt)(_1.CDSString, \"true\", \"false\", (0, combi_1.regex)(/^\\d+$/), (0, combi_1.seq)((0, combi_1.regex)(/^\\d+$/), \".\", (0, combi_1.regex)(/^\\d+$/)), (0, combi_1.regex)(/^#[\\w_]+$/));\n return value;\n }\n}\nexports.CDSAnnotationSimple = CDSAnnotationSimple;\n//# sourceMappingURL=cds_annotation_simple.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSArithmetics = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_integer_1 = __webpack_require__(/*! ./cds_integer */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js\");\nclass CDSArithmetics extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\n const val = (0, combi_1.alt)(cds_integer_1.CDSInteger, name, _1.CDSFunction, _1.CDSCase, _1.CDSCast, _1.CDSString);\n const operator = (0, combi_1.altPrio)(\"+\", \"-\", \"*\", \"/\");\n return (0, combi_1.seq)(val, operator, val);\n }\n}\nexports.CDSArithmetics = CDSArithmetics;\n//# sourceMappingURL=cds_arithmetics.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAs = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSAs extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"AS\", _1.CDSName);\n }\n}\nexports.CDSAs = CDSAs;\n//# sourceMappingURL=cds_as.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSAssociation = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_cardinality_1 = __webpack_require__(/*! ./cds_cardinality */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js\");\nclass CDSAssociation extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"ASSOCIATION\", (0, combi_1.opt)(cds_cardinality_1.CDSCardinality), \"TO\", (0, combi_1.opt)(\"PARENT\"), _1.CDSRelation, \"ON\", _1.CDSCondition);\n }\n}\nexports.CDSAssociation = CDSAssociation;\n//# sourceMappingURL=cds_association.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSCardinality = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSCardinality extends combi_1.Expression {\n getRunnable() {\n const cardinality = (0, combi_1.seq)(\"[\", (0, combi_1.alt)(\"0\", \"1\"), (0, combi_1.opt)((0, combi_1.seq)(\".\", \".\", (0, combi_1.alt)(\"0\", \"1\", \"*\"))), \"]\");\n return cardinality;\n }\n}\nexports.CDSCardinality = CDSCardinality;\n//# sourceMappingURL=cds_cardinality.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSCase = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSCase extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(\".\", _1.CDSName)));\n const value = (0, combi_1.alt)(name, _1.CDSString, _1.CDSFunction, CDSCase, _1.CDSCast, _1.CDSArithmetics);\n const simple = (0, combi_1.seq)(\"CASE\", (0, combi_1.alt)(name, _1.CDSFunction), (0, combi_1.plus)((0, combi_1.seq)(\"WHEN\", value, \"THEN\", value)), \"ELSE\", value, \"END\");\n const complex = (0, combi_1.seq)(\"CASE\", (0, combi_1.plus)((0, combi_1.seq)(\"WHEN\", _1.CDSCondition, \"THEN\", value)), (0, combi_1.opt)((0, combi_1.seq)(\"ELSE\", value)), \"END\");\n return (0, combi_1.altPrio)(simple, complex);\n }\n}\nexports.CDSCase = CDSCase;\n//# sourceMappingURL=cds_case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSCast = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSCast extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\n return (0, combi_1.seq)(\"CAST\", \"(\", (0, combi_1.alt)(name, _1.CDSFunction, _1.CDSCase, CDSCast, _1.CDSString, _1.CDSArithmetics), \"AS\", _1.CDSType, (0, combi_1.opt)((0, combi_1.seq)(\"PRESERVING\", \"TYPE\")), \")\");\n }\n}\nexports.CDSCast = CDSCast;\n//# sourceMappingURL=cds_cast.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSComposition = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_cardinality_1 = __webpack_require__(/*! ./cds_cardinality */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js\");\nclass CDSComposition extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"COMPOSITION\", (0, combi_1.opt)(cds_cardinality_1.CDSCardinality), \"OF\", _1.CDSRelation);\n }\n}\nexports.CDSComposition = CDSComposition;\n//# sourceMappingURL=cds_composition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSCondition = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_integer_1 = __webpack_require__(/*! ./cds_integer */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js\");\nclass CDSCondition extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", (0, combi_1.alt)(_1.CDSName, _1.CDSString))));\n const left = (0, combi_1.alt)(name, _1.CDSFunction);\n const compare = (0, combi_1.seq)(left, (0, combi_1.alt)(\"=\", (0, combi_1.seq)(\"!\", \"=\"), (0, combi_1.seq)(\"<\", \">\"), \"<\", \">\", (0, combi_1.seq)(\">\", \"=\"), (0, combi_1.seq)(\"<\", \"=\"), \"LIKE\", \"NOT LIKE\"), (0, combi_1.alt)(left, cds_integer_1.CDSInteger, _1.CDSFunction, _1.CDSString));\n const is = (0, combi_1.seq)(left, \"IS\", (0, combi_1.optPrio)(\"NOT\"), (0, combi_1.altPrio)(\"INITIAL\", \"NULL\"));\n const condition = (0, combi_1.alt)(compare, is);\n const paren = (0, combi_1.seq)(\"(\", CDSCondition, \")\");\n return (0, combi_1.seq)((0, combi_1.alt)(condition, paren), (0, combi_1.star)((0, combi_1.seq)((0, combi_1.alt)(\"AND\", \"OR\"), (0, combi_1.alt)(condition, paren))));\n }\n}\nexports.CDSCondition = CDSCondition;\n//# sourceMappingURL=cds_condition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSDefineAbstract = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_name_1 = __webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\");\nclass CDSDefineAbstract extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)((0, combi_1.str)(\"KEY\")), cds_name_1.CDSName, \":\", _1.CDSType, \";\");\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)(\"DEFINE ABSTRACT ENTITY\"), cds_name_1.CDSName, (0, combi_1.str)(\"{\"), (0, combi_1.plus)(field), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(\";\"));\n }\n}\nexports.CDSDefineAbstract = CDSDefineAbstract;\n//# sourceMappingURL=cds_define_abstract.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_custom.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_custom.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSDefineCustom = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_name_1 = __webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\");\nconst cds_type_1 = __webpack_require__(/*! ./cds_type */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js\");\nclass CDSDefineCustom extends combi_1.Expression {\n getRunnable() {\n const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)((0, combi_1.str)(\"KEY\")), cds_name_1.CDSName, \":\", cds_type_1.CDSType, \";\");\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)(\"DEFINE\"), (0, combi_1.opt)((0, combi_1.str)(\"ROOT\")), (0, combi_1.str)(\"CUSTOM ENTITY\"), cds_name_1.CDSName, (0, combi_1.str)(\"{\"), (0, combi_1.plus)(field), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(\";\"));\n }\n}\nexports.CDSDefineCustom = CDSDefineCustom;\n//# sourceMappingURL=cds_define_custom.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_custom.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_projection.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_projection.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSDefineProjection = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst __1 = __webpack_require__(/*! ../.. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSDefineProjection extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), \"DEFINE\", (0, combi_1.opt)(\"ROOT\"), \"VIEW\", (0, combi_1.ver)(__1.Version.v755, (0, combi_1.opt)(\"ENTITY\")), _1.CDSName, (0, combi_1.opt)(_1.CDSProviderContract), \"AS PROJECTION ON\", _1.CDSName, (0, combi_1.opt)(_1.CDSAs), (0, combi_1.str)(\"{\"), (0, combi_1.plus)(_1.CDSElement), (0, combi_1.star)((0, combi_1.seq)(\",\", _1.CDSElement)), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(\";\"));\n }\n}\nexports.CDSDefineProjection = CDSDefineProjection;\n//# sourceMappingURL=cds_define_projection.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_projection.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSDefineView = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst __1 = __webpack_require__(/*! ../.. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_name_1 = __webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\");\nconst cds_select_1 = __webpack_require__(/*! ./cds_select */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js\");\nconst cds_with_parameters_1 = __webpack_require__(/*! ./cds_with_parameters */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js\");\nclass CDSDefineView extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), \"DEFINE\", (0, combi_1.opt)(\"ROOT\"), \"VIEW\", (0, combi_1.ver)(__1.Version.v755, (0, combi_1.opt)(\"ENTITY\")), cds_name_1.CDSName, (0, combi_1.opt)(cds_with_parameters_1.CDSWithParameters), \"AS\", cds_select_1.CDSSelect, (0, combi_1.opt)(\";\"));\n }\n}\nexports.CDSDefineView = CDSDefineView;\n//# sourceMappingURL=cds_define_view.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSElement = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_as_1 = __webpack_require__(/*! ./cds_as */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js\");\nconst cds_cast_1 = __webpack_require__(/*! ./cds_cast */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js\");\nclass CDSElement extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), (0, combi_1.optPrio)(\"KEY\"), (0, combi_1.altPrio)(_1.CDSAggregate, _1.CDSString, _1.CDSFunction, _1.CDSArithmetics, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)(_1.CDSName, \": REDIRECTED TO\", (0, combi_1.opt)((0, combi_1.alt)(\"PARENT\", \"COMPOSITION CHILD\")), _1.CDSName), (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)(_1.CDSParameters), (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName, (0, combi_1.opt)(_1.CDSParameters)))), (0, combi_1.regex)(/^\\d+$/)), (0, combi_1.opt)(cds_as_1.CDSAs));\n }\n}\nexports.CDSElement = CDSElement;\n//# sourceMappingURL=cds_element.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSFunction = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSFunction extends combi_1.Expression {\n getRunnable() {\n const qualified = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)(_1.CDSParameters), (0, combi_1.starPrio)((0, combi_1.seq)(\".\", _1.CDSName, (0, combi_1.opt)(_1.CDSParameters))));\n const input = (0, combi_1.altPrio)(_1.CDSCast, CDSFunction, _1.CDSArithmetics, _1.CDSCase, _1.CDSString, qualified, (0, combi_1.regex)(/^\\d+$/));\n const coalesce = (0, combi_1.seq)(\"COALESCE\", \"(\", input, \",\", input, \")\");\n const concat = (0, combi_1.seq)(\"CONCAT\", \"(\", input, \",\", input, \")\");\n const concat_with_space = (0, combi_1.seq)(\"CONCAT_WITH_SPACE\", \"(\", input, \",\", input, \",\", input, \")\");\n const dats_add_days = (0, combi_1.seq)(\"DATS_ADD_DAYS\", \"(\", input, \",\", input, \",\", input, \")\");\n const dats_add_months = (0, combi_1.seq)(\"DATS_ADD_MONTHS\", \"(\", input, \",\", input, \",\", input, \")\");\n const dats_days_between = (0, combi_1.seq)(\"DATS_DAYS_BETWEEN\", \"(\", input, \",\", input, \")\");\n const dats_is_valid = (0, combi_1.seq)(\"DATS_IS_VALID\", \"(\", input, \")\");\n const substring = (0, combi_1.seq)(\"SUBSTRING\", \"(\", input, \",\", input, \",\", input, \")\");\n const bintohex = (0, combi_1.seq)(\"BINTOHEX\", \"(\", input, \")\");\n const hextobin = (0, combi_1.seq)(\"HEXTOBIN\", \"(\", input, \")\");\n const tstmp_to_dats = (0, combi_1.seq)(\"TSTMP_TO_DATS\", \"(\", input, \",\", input, \",\", input, \",\", input, \")\");\n const tstmp_to_tims = (0, combi_1.seq)(\"TSTMP_TO_TIMS\", \"(\", input, \",\", input, \",\", input, \",\", input, \")\");\n const tstmp_to_dst = (0, combi_1.seq)(\"TSTMP_TO_DST\", \"(\", input, \",\", input, \",\", input, \",\", input, \")\");\n const dats_tims_to_tstmp = (0, combi_1.seq)(\"DATS_TIMS_TO_TSTMP\", \"(\", input, \",\", input, \",\", input, \",\", input, \",\", input, \")\");\n const tstmp_is_valid = (0, combi_1.seq)(\"TSTMP_IS_VALID\", \"(\", input, \")\");\n const tstmp_current_utctimestamp = (0, combi_1.seq)(\"TSTMP_CURRENT_UTCTIMESTAMP\", \"(\", \")\");\n const tstmp_seconds_between = (0, combi_1.seq)(\"TSTMP_SECONDS_BETWEEN\", \"(\", input, \",\", input, \",\", input, \")\");\n const tstmp_add_seconds = (0, combi_1.seq)(\"TSTMP_ADD_SECONDS\", \"(\", input, \",\", input, \",\", input, \")\");\n const abap_system_timezone = (0, combi_1.seq)(\"ABAP_SYSTEM_TIMEZONE\", \"(\", input, \",\", input, \")\");\n const abap_user_timezone = (0, combi_1.seq)(\"ABAP_USER_TIMEZONE\", \"(\", input, \",\", input, \",\", input, \")\");\n const mod = (0, combi_1.seq)(\"MOD\", \"(\", input, \",\", input, \")\");\n return (0, combi_1.altPrio)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, concat_with_space, dats_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, abap_system_timezone, abap_user_timezone, bintohex, hextobin, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp, mod);\n }\n}\nexports.CDSFunction = CDSFunction;\n//# sourceMappingURL=cds_function.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSGroupBy = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSGroupBy extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.star)((0, combi_1.seq)(\".\", _1.CDSName)));\n return (0, combi_1.seq)(\"GROUP BY\", name, (0, combi_1.star)((0, combi_1.seq)(\",\", name)));\n }\n}\nexports.CDSGroupBy = CDSGroupBy;\n//# sourceMappingURL=cds_group_by.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSInteger = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSInteger extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^\\d+$/);\n }\n}\nexports.CDSInteger = CDSInteger;\n//# sourceMappingURL=cds_integer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSJoin = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_condition_1 = __webpack_require__(/*! ./cds_condition */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js\");\nclass CDSJoin extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)(\"INNER\", \"LEFT OUTER\", \"LEFT OUTER TO ONE\")), \"JOIN\", _1.CDSSource, \"ON\", cds_condition_1.CDSCondition);\n }\n}\nexports.CDSJoin = CDSJoin;\n//# sourceMappingURL=cds_join.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSName = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSName extends combi_1.Expression {\n getRunnable() {\n const pre = (0, combi_1.seq)(\"/\", (0, combi_1.regex)(/^[\\w_]+$/), \"/\");\n return (0, combi_1.seq)((0, combi_1.opt)(\":\"), (0, combi_1.opt)(pre), (0, combi_1.regex)(/^\\$?#?[\\w_]+$/));\n }\n}\nexports.CDSName = CDSName;\n//# sourceMappingURL=cds_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSParameters = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSParameters extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\n const value = (0, combi_1.alt)(name, _1.CDSString);\n return (0, combi_1.seq)(\"[\", (0, combi_1.regex)(/\\d+/), \":\", name, \"=\", value, (0, combi_1.star)((0, combi_1.seq)(\"AND\", name, \"=\", value)), \"]\");\n }\n}\nexports.CDSParameters = CDSParameters;\n//# sourceMappingURL=cds_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters_select.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters_select.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSParametersSelect = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSParametersSelect extends combi_1.Expression {\n getRunnable() {\n const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)));\n const value = (0, combi_1.alt)(name, _1.CDSString);\n const nameValue = (0, combi_1.seq)(name, \":\", value);\n return (0, combi_1.seq)(\"(\", nameValue, (0, combi_1.star)((0, combi_1.seq)(\",\", nameValue)), \")\");\n }\n}\nexports.CDSParametersSelect = CDSParametersSelect;\n//# sourceMappingURL=cds_parameters_select.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters_select.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_provider_contract.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_provider_contract.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSProviderContract = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSProviderContract extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"PROVIDER CONTRACT\", (0, combi_1.alt)(\"TRANSACTIONAL_QUERY\", \"TRANSACTIONAL_INTERFACE\", \"ANALYTICAL_QUERY\"));\n }\n}\nexports.CDSProviderContract = CDSProviderContract;\n//# sourceMappingURL=cds_provider_contract.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_provider_contract.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_relation.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_relation.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSRelation = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSRelation extends combi_1.Expression {\n getRunnable() {\n const pre = (0, combi_1.seq)(\"/\", (0, combi_1.regex)(/^[\\w_]+$/), \"/\");\n return (0, combi_1.seq)((0, combi_1.opt)(pre), (0, combi_1.regex)(/^[\\w_]+$/), (0, combi_1.opt)(_1.CDSAs));\n }\n}\nexports.CDSRelation = CDSRelation;\n//# sourceMappingURL=cds_relation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_relation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSSelect = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst cds_association_1 = __webpack_require__(/*! ./cds_association */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js\");\nconst cds_join_1 = __webpack_require__(/*! ./cds_join */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js\");\nclass CDSSelect extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"SELECT\", (0, combi_1.opt)(\"DISTINCT\"), \"FROM\", _1.CDSSource, (0, combi_1.opt)(_1.CDSParametersSelect), (0, combi_1.opt)(_1.CDSAs), (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.star)(cds_association_1.CDSAssociation), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.str)(\"{\"), (0, combi_1.plus)(_1.CDSElement), (0, combi_1.star)((0, combi_1.seq)(\",\", _1.CDSElement)), (0, combi_1.str)(\"}\"), (0, combi_1.opt)(_1.CDSGroupBy), (0, combi_1.opt)(_1.CDSWhere), (0, combi_1.opt)((0, combi_1.seq)(\"UNION\", (0, combi_1.opt)(\"ALL\"), CDSSelect)));\n }\n}\nexports.CDSSelect = CDSSelect;\n//# sourceMappingURL=cds_select.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_source.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_source.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSSource = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSSource extends combi_1.Expression {\n getRunnable() {\n const pre = (0, combi_1.seq)(\"/\", (0, combi_1.regex)(/^[\\w_]+$/), \"/\");\n return (0, combi_1.seq)((0, combi_1.opt)(pre), (0, combi_1.regex)(/^[\\w_]+$/), (0, combi_1.opt)(_1.CDSAs));\n }\n}\nexports.CDSSource = CDSSource;\n//# sourceMappingURL=cds_source.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_source.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSString = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSString extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^'[\\w: -_]*'$/);\n }\n}\nexports.CDSString = CDSString;\n//# sourceMappingURL=cds_string.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSType = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSType extends combi_1.Expression {\n getRunnable() {\n const decimals = (0, combi_1.seq)(\",\", (0, combi_1.regex)(/\\d+/));\n return (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)((0, combi_1.seq)(\".\", _1.CDSName)), (0, combi_1.opt)((0, combi_1.seq)(\"(\", (0, combi_1.regex)(/\\d+/), (0, combi_1.opt)(decimals), \")\")));\n }\n}\nexports.CDSType = CDSType;\n//# sourceMappingURL=cds_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSWhere = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSWhere extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"WHERE\", _1.CDSCondition);\n }\n}\nexports.CDSWhere = CDSWhere;\n//# sourceMappingURL=cds_where.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSWithParameters = void 0;\nconst _1 = __webpack_require__(/*! . */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass CDSWithParameters extends combi_1.Expression {\n getRunnable() {\n const param = (0, combi_1.seq)(_1.CDSName, \":\", _1.CDSType);\n return (0, combi_1.seq)(\"WITH PARAMETERS\", param, (0, combi_1.star)((0, combi_1.seq)(\",\", param)));\n }\n}\nexports.CDSWithParameters = CDSWithParameters;\n//# sourceMappingURL=cds_with_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/cds/expressions/index.js ***! + \************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./cds_aggregate */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_aggregate.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_annotate */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotate.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_annotation_array */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_annotation_object */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_annotation_simple */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_simple.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_annotation */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_arithmetics */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_arithmetics.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_as */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_as.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_association */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_association.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_cardinality */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cardinality.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_case */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_case.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_cast */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_composition */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_composition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_condition */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_define_abstract */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_define_custom */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_custom.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_define_projection */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_projection.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_define_view */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_element */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_function */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_group_by */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_provider_contract */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_provider_contract.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_integer */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_join */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_join.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_name */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_parameters_select */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters_select.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_parameters */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_relation */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_relation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_select */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_select.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_source */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_source.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_string */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_string.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_type */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_where */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_where.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_with_parameters */ \"./node_modules/@abaplint/core/build/src/cds/expressions/cds_with_parameters.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/cds/expressions/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/config.js": +/*!*********************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/config.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Config = void 0;\nconst version_1 = __webpack_require__(/*! ./version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst artifacts_rules_1 = __webpack_require__(/*! ./artifacts_rules */ \"./node_modules/@abaplint/core/build/src/artifacts_rules.js\");\nconst JSON5 = __webpack_require__(/*! json5 */ \"./node_modules/json5/dist/index.js\");\n// assumption: this class is immutable\nclass Config {\n static getDefault(ver) {\n const rules = {};\n const sorted = artifacts_rules_1.ArtifactsRules.getRules().sort((a, b) => {\n return a.getMetadata().key.localeCompare(b.getMetadata().key);\n });\n for (const rule of sorted) {\n rules[rule.getMetadata().key] = rule.getConfig();\n }\n let version = version_1.defaultVersion;\n if (ver) {\n version = ver;\n }\n // defaults: dont skip anything, report everything. The user can decide to skip stuff\n // its difficult to debug errors not being reported\n const config = {\n global: {\n files: \"/src/**/*.*\",\n exclude: [],\n noIssues: [],\n skipGeneratedBOPFInterfaces: false,\n skipGeneratedFunctionGroups: false,\n skipGeneratedGatewayClasses: false,\n skipGeneratedPersistentClasses: false,\n skipGeneratedProxyClasses: false,\n skipGeneratedProxyInterfaces: false,\n useApackDependencies: false,\n skipIncludesWithoutMain: false,\n },\n dependencies: [{\n url: \"https://github.com/abaplint/deps\",\n folder: \"/deps\",\n files: \"/src/**/*.*\",\n }],\n syntax: {\n version,\n errorNamespace: \"^(Z|Y|LCL\\_|TY\\_|LIF\\_)\",\n globalConstants: [],\n globalMacros: [],\n },\n rules: rules,\n };\n return new Config(JSON.stringify(config));\n }\n getEnabledRules() {\n var _a;\n const rules = [];\n for (const rule of artifacts_rules_1.ArtifactsRules.getRules()) {\n const ruleConfig = (_a = this.config[\"rules\"]) === null || _a === void 0 ? void 0 : _a[rule.getMetadata().key];\n const ruleExists = ruleConfig !== undefined;\n if (ruleExists) {\n if (ruleConfig === false) { // \"rule\": false\n continue;\n }\n else if (ruleConfig === true) { // \"rule\": true\n rules.push(rule);\n }\n else if (typeof ruleConfig === \"object\") { // \"rule\": { ...config }\n rule.setConfig(ruleConfig);\n rules.push(rule);\n }\n }\n }\n return rules;\n }\n constructor(json) {\n // huh, hack\n if (JSON5.parse === undefined) {\n // @ts-ignore\n JSON5.parse = JSON5.default.parse;\n }\n this.config = JSON5.parse(json);\n if (this.config.global === undefined) {\n this.config.global = Config.getDefault().getGlobal();\n }\n if (this.config.syntax === undefined) {\n this.config.syntax = Config.getDefault().getSyntaxSetttings();\n }\n if (this.config.syntax.globalMacros === undefined) {\n this.config.syntax.globalMacros = [];\n }\n if (this.config.syntax.globalConstants === undefined) {\n this.config.syntax.globalConstants = [];\n }\n if (this.config.global.skipIncludesWithoutMain === undefined) {\n this.config.global.skipIncludesWithoutMain = false;\n }\n this.checkVersion();\n }\n get() {\n return this.config;\n }\n readByKey(rule, key) {\n return this.config[\"rules\"][rule] ? this.config[\"rules\"][rule][key] : undefined;\n }\n readByRule(rule) {\n return this.config[\"rules\"][rule];\n }\n getGlobal() {\n return this.config.global;\n }\n getSyntaxSetttings() {\n return this.config.syntax;\n }\n getVersion() {\n if (this.config.global === undefined || this.config.syntax.version === undefined) {\n return version_1.defaultVersion;\n }\n return this.config.syntax.version;\n }\n checkVersion() {\n if (this.config.syntax.version === undefined) {\n return; // handled in getVersion\n }\n let match = false;\n const vers = version_1.Version;\n for (const v in version_1.Version) {\n if (vers[v] === this.config.syntax.version) {\n match = true;\n break;\n }\n }\n if (match === false) {\n this.config.syntax.version = version_1.defaultVersion;\n }\n }\n}\nexports.Config = Config;\n//# sourceMappingURL=config.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/config.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddic.js": +/*!*******************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddic.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDIC = void 0;\nconst Types = __webpack_require__(/*! ./abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst basic_1 = __webpack_require__(/*! ./abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass DDIC {\n constructor(reg) {\n this.reg = reg;\n }\n // the class might be local with a local super class with a global exception class as super\n // todo: returns true for both local and global exception classes\n isException(def, _obj) {\n var _a;\n if (def === undefined) {\n return false;\n }\n if (def.name.toUpperCase() === \"CX_ROOT\") {\n return true;\n }\n let superClassName = def.superClassName;\n if (superClassName === undefined) {\n return false;\n }\n let i = 0;\n // max depth, make sure not to hit cyclic super class defintions\n while (i++ < 10 && superClassName !== undefined) {\n const found = this.reg.getObject(\"CLAS\", superClassName);\n if (found === undefined) {\n break;\n }\n const superDef = (_a = found.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getInfo().getClassDefinitionByName(superClassName);\n if (superDef === undefined) {\n break;\n }\n if (superDef.superClassName) {\n superClassName = superDef.superClassName;\n }\n else {\n break;\n }\n }\n // todo, this should check for \"CX_ROOT\"\n const isException = ((superClassName === null || superClassName === void 0 ? void 0 : superClassName.match(/^.?cx_.*$/i)) || (superClassName === null || superClassName === void 0 ? void 0 : superClassName.match(/^\\/.+\\/cx_.*$/i))) ? true : false;\n return isException;\n }\n lookupBuiltinType(name, length, decimals, qualifiedName) {\n switch (name) {\n case \"STRING\":\n return Types.StringType.get({ qualifiedName: qualifiedName || name });\n case \"XSTRING\":\n return new Types.XStringType({ qualifiedName: qualifiedName || name });\n case \"D\":\n return new Types.DateType({ qualifiedName: qualifiedName || name });\n case \"T\":\n return new Types.TimeType({ qualifiedName: qualifiedName || name });\n case \"XSEQUENCE\":\n return new Types.XSequenceType({ qualifiedName: qualifiedName });\n case \"CLIKE\":\n return Types.CLikeType.get();\n case \"DECFLOAT\":\n return new Types.DecFloatType({ qualifiedName: qualifiedName });\n case \"ANY\":\n return new Types.AnyType({ qualifiedName: qualifiedName });\n case \"SIMPLE\":\n return new Types.SimpleType({ qualifiedName: qualifiedName });\n case \"%_C_POINTER\":\n return new Types.HexType(8, qualifiedName);\n case \"TABLE\":\n return new Types.TableType(new Types.AnyType(), { withHeader: false, keyType: Types.TableKeyType.default });\n case \"DATA\":\n return new Types.AnyType({ qualifiedName: qualifiedName });\n case \"NUMERIC\":\n return new Types.NumericGenericType({ qualifiedName: qualifiedName });\n case \"UTCLONG\": // todo, take version into account\n return new Types.UTCLongType({ qualifiedName: qualifiedName });\n case \"DECFLOAT16\":\n return new Types.DecFloat16Type({ qualifiedName: qualifiedName });\n case \"DECFLOAT34\":\n return new Types.DecFloat34Type({ qualifiedName: qualifiedName });\n case \"CSEQUENCE\":\n return new Types.CSequenceType({ qualifiedName: qualifiedName });\n case \"I\":\n return Types.IntegerType.get({ qualifiedName: qualifiedName || name });\n case \"INT8\": // todo, take version into account\n return new Types.Integer8Type({ qualifiedName: qualifiedName || name });\n case \"F\":\n return new Types.FloatType({ qualifiedName: qualifiedName || name });\n case \"P\":\n if (length && decimals) {\n return new Types.PackedType(length, decimals, { qualifiedName: qualifiedName });\n }\n else if (length) {\n return new Types.PackedType(length, 0, { qualifiedName: qualifiedName });\n }\n else {\n return new Types.PackedType(1, 0, { qualifiedName: qualifiedName });\n }\n case \"C\":\n if (length) {\n return new Types.CharacterType(length, { qualifiedName: qualifiedName });\n }\n else {\n return new Types.CharacterType(1, { qualifiedName: qualifiedName });\n }\n case \"X\":\n if (length) {\n return new Types.HexType(length, qualifiedName);\n }\n else {\n return new Types.HexType(1, qualifiedName);\n }\n case \"N\":\n if (length) {\n return new Types.NumericType(length, qualifiedName);\n }\n else {\n return new Types.NumericType(1, qualifiedName);\n }\n }\n return undefined;\n }\n inErrorNamespace(name) {\n if (name === undefined) {\n return true;\n }\n return this.reg.inErrorNamespace(name);\n }\n lookupObject(name) {\n const clas = this.reg.getObject(\"CLAS\", name);\n const globalClas = clas === null || clas === void 0 ? void 0 : clas.getIdentifier();\n if (globalClas) {\n return {\n type: new basic_1.ObjectReferenceType(globalClas, { qualifiedName: name, RTTIName: \"\\\\CLASS=\" + name }),\n object: clas,\n };\n }\n const intf = this.reg.getObject(\"INTF\", name);\n const globalIntf = intf === null || intf === void 0 ? void 0 : intf.getIdentifier();\n if (globalIntf) {\n return {\n type: new basic_1.ObjectReferenceType(globalIntf, { qualifiedName: name, RTTIName: \"\\\\INTERFACE=\" + name }),\n object: intf,\n };\n }\n if (this.inErrorNamespace(name) === true) {\n return { type: new basic_1.UnknownType(name) };\n }\n else {\n return { type: new basic_1.VoidType(name) };\n }\n }\n lookupNoVoid(name) {\n const foundTABL = this.reg.getObject(\"TABL\", name);\n if (foundTABL) {\n return { type: foundTABL.parseType(this.reg), object: foundTABL };\n }\n const foundVIEW = this.reg.getObject(\"VIEW\", name);\n if (foundVIEW) {\n return { type: foundVIEW.parseType(this.reg), object: foundVIEW };\n }\n const foundTTYP = this.reg.getObject(\"TTYP\", name);\n if (foundTTYP) {\n return { type: foundTTYP.parseType(this.reg), object: foundTTYP };\n }\n const foundDTEL = this.reg.getObject(\"DTEL\", name);\n if (foundDTEL) {\n return { type: foundDTEL.parseType(this.reg), object: foundDTEL };\n }\n const foundDDLS = this.lookupDDLS(name);\n if (foundDDLS) {\n return foundDDLS;\n }\n return undefined;\n }\n lookupDDLS(name) {\n var _a;\n if (name === undefined) {\n return undefined;\n }\n const upper = name.toUpperCase();\n for (const obj of this.reg.getObjectsByType(\"DDLS\")) {\n const ddls = obj;\n if (ddls.getSQLViewName() === upper || ((_a = ddls.getDefinitionName()) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === upper) {\n return { type: ddls.parseType(this.reg), object: ddls };\n }\n }\n return undefined;\n }\n /** lookup with voiding and unknown types */\n lookup(name) {\n const found = this.lookupNoVoid(name);\n if (found) {\n return found;\n }\n if (this.reg.inErrorNamespace(name)) {\n return { type: new Types.UnknownType(name + \" not found, lookup\") };\n }\n else {\n return { type: new Types.VoidType(name) };\n }\n }\n lookupDomain(name, dataElement) {\n const found = this.reg.getObject(\"DOMA\", name);\n if (found) {\n return { type: found.parseType(this.reg, dataElement), object: found };\n }\n else if (this.reg.inErrorNamespace(name)) {\n return { type: new Types.UnknownType(name + \", lookupDomain\"), object: undefined };\n }\n else {\n return { type: new Types.VoidType(name), object: undefined };\n }\n }\n lookupDataElement(name) {\n if (name === undefined) {\n return { type: new Types.UnknownType(\"undefined, lookupDataElement\") };\n }\n const found = this.reg.getObject(\"DTEL\", name);\n if (found) {\n return { type: found.parseType(this.reg), object: found };\n }\n else if (this.reg.inErrorNamespace(name)) {\n return { type: new Types.UnknownType(name + \" not found, lookupDataElement\") };\n }\n else {\n return { type: new Types.VoidType(name) };\n }\n }\n lookupTableOrView(name) {\n if (name === undefined) {\n return { type: new Types.UnknownType(\"undefined, lookupTableOrView\") };\n }\n const foundTABL = this.reg.getObject(\"TABL\", name);\n if (foundTABL) {\n return { type: foundTABL.parseType(this.reg), object: foundTABL };\n }\n const foundDDLS = this.lookupDDLS(name);\n if (foundDDLS) {\n return foundDDLS;\n }\n return this.lookupView(name);\n }\n /** this method only looks up the object, does not parse the type */\n lookupTableOrView2(name) {\n if (name === undefined) {\n return undefined;\n }\n const foundTABL = this.reg.getObject(\"TABL\", name);\n if (foundTABL) {\n return foundTABL;\n }\n const foundVIEW = this.reg.getObject(\"VIEW\", name);\n if (foundVIEW) {\n return foundVIEW;\n }\n const foundDDLS = this.lookupDDLS(name);\n if (foundDDLS) {\n return foundDDLS.object;\n }\n return undefined;\n }\n lookupTable(name) {\n if (name === undefined) {\n return new Types.UnknownType(\"undefined, lookupTable\");\n }\n const found = this.reg.getObject(\"TABL\", name);\n if (found) {\n return found.parseType(this.reg);\n }\n else if (this.reg.inErrorNamespace(name)) {\n return new Types.UnknownType(name + \" not found, lookupTable\");\n }\n else {\n return new Types.VoidType(name);\n }\n }\n lookupView(name) {\n if (name === undefined) {\n return { type: new Types.UnknownType(\"undefined, lookupView\") };\n }\n const found = this.reg.getObject(\"VIEW\", name);\n if (found) {\n return { type: found.parseType(this.reg), object: found };\n }\n else if (this.reg.inErrorNamespace(name)) {\n return { type: new Types.UnknownType(name + \" not found, lookupView\") };\n }\n else {\n return { type: new Types.VoidType(name) };\n }\n }\n lookupTableType(name) {\n if (name === undefined) {\n return { type: new Types.UnknownType(\"undefined, lookupTableType\") };\n }\n const found = this.reg.getObject(\"TTYP\", name);\n if (found) {\n return { type: found.parseType(this.reg), object: found };\n }\n else if (this.reg.inErrorNamespace(name)) {\n return { type: new Types.UnknownType(name + \" not found, lookupTableType\") };\n }\n else {\n return { type: new Types.VoidType(name) };\n }\n }\n textToType(text, length, decimals, infoText, qualifiedName, conversionExit, ddicName) {\n // todo: support short strings, and length of different integers, NUMC vs CHAR, min/max length\n switch (text) {\n case \"DEC\": // 1 <= len <= 31\n case \"D16F\": // 1 <= len <= 31\n case \"D34F\": // 1 <= len <= 31\n case \"DF16_DEC\": // 1 <= len <= 31\n case \"DF34_DEC\": // 1 <= len <= 31\n case \"CURR\": // 1 <= len <= 31\n case \"QUAN\": // 1 <= len <= 31\n if (length === undefined) {\n return new Types.UnknownType(text + \" unknown length, \" + infoText, infoText);\n }\n else if (decimals === undefined) {\n return new Types.PackedType(parseInt(length, 10), 0, { qualifiedName, conversionExit, ddicName });\n }\n return new Types.PackedType(parseInt(length, 10), parseInt(decimals, 10), { qualifiedName, conversionExit, ddicName });\n case \"ACCP\":\n return new Types.CharacterType(6, { qualifiedName, conversionExit, ddicName }); // YYYYMM\n case \"LANG\":\n return new Types.CharacterType(1, { qualifiedName, conversionExit, ddicName });\n case \"CLNT\":\n return new Types.CharacterType(3, { qualifiedName, conversionExit, ddicName });\n case \"CUKY\":\n return new Types.CharacterType(5, { qualifiedName, conversionExit, ddicName });\n case \"UNIT\": // 2 <= len <= 3\n return new Types.CharacterType(3, { qualifiedName, conversionExit, ddicName });\n case \"UTCLONG\":\n return new Types.CharacterType(27, { qualifiedName, conversionExit, ddicName });\n case \"NUMC\": // 1 <= len <= 255\n if (length === undefined) {\n return new Types.UnknownType(text + \" unknown length\", infoText);\n }\n return new Types.NumericType(parseInt(length, 10), qualifiedName);\n case \"CHAR\": // 1 <= len <= 30000 (1333 for table fields)\n case \"LCHR\": // 256 <= len <= 32000\n if (length === undefined) {\n return new Types.UnknownType(text + \" unknown length\", infoText);\n }\n return new Types.CharacterType(parseInt(length, 10), { qualifiedName, conversionExit, ddicName });\n case \"RAW\": // 1 <= len <= 32000\n case \"LRAW\": // 256 <= len <= 32000\n if (length === undefined) {\n return new Types.UnknownType(text + \" unknown length\", infoText);\n }\n return new Types.HexType(parseInt(length, 10), qualifiedName);\n case \"TIMN\": // Native HANA\n case \"TIMS\":\n return new Types.TimeType({ qualifiedName: qualifiedName }); //HHMMSS\n case \"DECFLOAT16\": // len = 16\n case \"DECFLOAT34\": // len = 34\n case \"D16R\": // len = 16\n case \"D34R\": // len = 34\n case \"DF16_RAW\": // len = 16\n case \"DF34_RAW\": // len = 34\n case \"FLTP\": // len = 16\n if (length === undefined) {\n return new Types.UnknownType(text + \" unknown length\", infoText);\n }\n return new Types.FloatingPointType(parseInt(length, 10), qualifiedName);\n case \"DATN\": // Native HANA\n case \"DATS\":\n return new Types.DateType({ qualifiedName: qualifiedName }); //YYYYMMDD\n case \"INT1\":\n case \"INT2\":\n case \"INT4\":\n return Types.IntegerType.get({ qualifiedName: qualifiedName });\n case \"INT8\":\n return new Types.Integer8Type({ qualifiedName: qualifiedName });\n case \"SSTR\": // 1 <= len <= 1333\n case \"SSTRING\": // 1 <= len <= 1333\n case \"STRG\": // 256 <= len\n case \"STRING\": // 256 <= len\n return Types.StringType.get({ qualifiedName: qualifiedName });\n case \"RSTR\": // 256 <= len\n case \"RAWSTRING\": // 256 <= len\n case \"GEOM_EWKB\":\n return new Types.XStringType({ qualifiedName: qualifiedName });\n case \"D16S\":\n case \"D34S\":\n case \"DF16_SCL\":\n case \"DF34_SCL\":\n case \"PREC\":\n case \"VARC\":\n return new Types.UnknownType(text + \" is an obsolete data type\", infoText);\n default:\n return new Types.UnknownType(text + \" unknown\", infoText);\n }\n }\n}\nexports.DDIC = DDIC;\n//# sourceMappingURL=ddic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddic_references.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddic_references.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDICReferences = void 0;\nclass DDICReferences {\n constructor() {\n this.nameTypeIndex = {};\n this.filenameIndex = {};\n }\n setUsing(obj, using) {\n this.clear(obj);\n for (const u of using) {\n this.addUsing(obj, u);\n }\n }\n addUsing(obj, using) {\n if (using === undefined) {\n return;\n }\n // add to name and type index\n const newName = obj.getName().toUpperCase();\n const newType = obj.getType();\n if (this.nameTypeIndex[newName] === undefined) {\n this.nameTypeIndex[newName] = {};\n }\n if (this.nameTypeIndex[newName][newType] === undefined) {\n this.nameTypeIndex[newName][newType] = [];\n }\n this.nameTypeIndex[newName][newType].push(using);\n // add to filename index\n if (using.filename && using.token) {\n if (this.filenameIndex[using.filename] === undefined) {\n this.filenameIndex[using.filename] = {};\n }\n if (this.filenameIndex[using.filename][using.token.getRow()] === undefined) {\n this.filenameIndex[using.filename][using.token.getRow()] = [];\n }\n this.filenameIndex[using.filename][using.token.getRow()].push(using);\n }\n }\n clear(obj) {\n var _a, _b;\n // remove from filenameIndex first\n for (const u of this.listUsing(obj)) {\n if (u.filename && u.token) {\n const found = (_a = this.filenameIndex[u.filename]) === null || _a === void 0 ? void 0 : _a[u.token.getRow()];\n if (found) {\n found.pop(); // TODODOD, this assumes there is max one reference on each line\n }\n }\n }\n // remove from name + type index\n const name = obj.getName().toUpperCase();\n const type = obj.getType();\n if ((_b = this.nameTypeIndex[name]) === null || _b === void 0 ? void 0 : _b[type]) {\n this.nameTypeIndex[name][type] = [];\n }\n }\n listByFilename(filename, line) {\n var _a;\n return ((_a = this.filenameIndex[filename]) === null || _a === void 0 ? void 0 : _a[line]) || [];\n }\n listUsing(obj) {\n var _a;\n const newName = obj.getName().toUpperCase();\n const newType = obj.getType();\n const found = (_a = this.nameTypeIndex[newName]) === null || _a === void 0 ? void 0 : _a[newType];\n if (found !== undefined) {\n return found;\n }\n else {\n return [];\n }\n }\n listWhereUsed(obj) {\n // todo, add reverse index, this is slow\n const ret = [];\n const searchName = obj.getName().toUpperCase();\n const searchType = obj.getType();\n for (const name in this.nameTypeIndex) {\n for (const type in this.nameTypeIndex[name]) {\n for (const f of this.nameTypeIndex[name][type]) {\n if (f.object && f.object.getType() === searchType && f.object.getName() === searchName) {\n ret.push({ type, name, token: f.token, filename: f.filename });\n }\n }\n }\n }\n return ret;\n }\n}\nexports.DDICReferences = DDICReferences;\n//# sourceMappingURL=ddic_references.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddic_references.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLLexer = void 0;\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass DDLLexer {\n static run(file) {\n const step1 = [];\n const lines = file.getRaw().replace(/\\r/g, \"\").split(\"\\n\");\n for (const l of lines) {\n if (l.startsWith(\"@\")) {\n continue; // skip annotations for now\n }\n step1.push(...l.split(\" \"));\n }\n const step2 = [];\n for (const t of step1) {\n if (t === \"\") {\n continue;\n }\n else if (t.endsWith(\";\")) {\n step2.push(t.substr(0, t.length - 1));\n step2.push(\";\");\n }\n else {\n step2.push(t);\n }\n }\n return step2.map(t => new tokens_1.Identifier(new position_1.Position(1, 1), t));\n }\n}\nexports.DDLLexer = DDLLexer;\n//# sourceMappingURL=ddl_lexer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/ddl_parser.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/ddl_parser.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLParser = exports.DDLKind = void 0;\nconst combi_1 = __webpack_require__(/*! ../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst ddl_lexer_1 = __webpack_require__(/*! ./ddl_lexer */ \"./node_modules/@abaplint/core/build/src/ddl/ddl_lexer.js\");\nconst Expressions = __webpack_require__(/*! ./expressions */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/index.js\");\nvar DDLKind;\n(function (DDLKind) {\n DDLKind[\"Structure\"] = \"structure\";\n DDLKind[\"Table\"] = \"table\";\n})(DDLKind || (exports.DDLKind = DDLKind = {}));\nclass DDLParser {\n parse(file) {\n const tokens = ddl_lexer_1.DDLLexer.run(file);\n let res = combi_1.Combi.run(new Expressions.DDLStructure(), tokens, version_1.defaultVersion);\n if (res === undefined) {\n res = combi_1.Combi.run(new Expressions.DDLTable(), tokens, version_1.defaultVersion);\n }\n if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {\n return undefined;\n }\n return this.parsedToResult(res[0]);\n }\n parsedToResult(node) {\n var _a, _b;\n const fields = [];\n let found = node.findDirectExpressions(Expressions.DDLStructureField);\n found = found.concat(node.findDirectExpressions(Expressions.DDLTableField));\n found = found.concat(node.findDirectExpressions(Expressions.DDLInclude));\n for (const f of found) {\n const name = ((_a = f.findDirectExpression(Expressions.DDLName)) === null || _a === void 0 ? void 0 : _a.concatTokens()) || \"\";\n if (f.get() instanceof Expressions.DDLInclude) {\n fields.push({\n name: \".INCLUDE\",\n type: name,\n key: false,\n notNull: false,\n });\n }\n else {\n const type = ((_b = f.findDirectExpression(Expressions.DDLType)) === null || _b === void 0 ? void 0 : _b.concatTokens()) || \"\";\n fields.push({\n name,\n type,\n key: false,\n notNull: false,\n });\n }\n }\n const result = {\n name: node.findDirectExpression(Expressions.DDLName).concatTokens(),\n kind: node.get() instanceof Expressions.DDLStructure ? DDLKind.Structure : DDLKind.Table,\n fields,\n };\n return result;\n }\n}\nexports.DDLParser = DDLParser;\n//# sourceMappingURL=ddl_parser.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/ddl_parser.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLInclude = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst ddl_name_1 = __webpack_require__(/*! ./ddl_name */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js\");\nclass DDLInclude extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"INCLUDE\", ddl_name_1.DDLName, \";\");\n }\n}\nexports.DDLInclude = DDLInclude;\n//# sourceMappingURL=ddl_include.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLName = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass DDLName extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^\\w+$/);\n }\n}\nexports.DDLName = DDLName;\n//# sourceMappingURL=ddl_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLStructure = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst ddl_structure_field_1 = __webpack_require__(/*! ./ddl_structure_field */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js\");\nconst ddl_name_1 = __webpack_require__(/*! ./ddl_name */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js\");\nconst ddl_include_1 = __webpack_require__(/*! ./ddl_include */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js\");\nclass DDLStructure extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"DEFINE STRUCTURE\", ddl_name_1.DDLName, \"{\", (0, combi_1.plusPrio)((0, combi_1.altPrio)(ddl_structure_field_1.DDLStructureField, ddl_include_1.DDLInclude)), \"}\");\n }\n}\nexports.DDLStructure = DDLStructure;\n//# sourceMappingURL=ddl_structure.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLStructureField = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst ddl_name_1 = __webpack_require__(/*! ./ddl_name */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js\");\nconst ddl_type_1 = __webpack_require__(/*! ./ddl_type */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js\");\nclass DDLStructureField extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(ddl_name_1.DDLName, \":\", ddl_type_1.DDLType, \";\");\n }\n}\nexports.DDLStructureField = DDLStructureField;\n//# sourceMappingURL=ddl_structure_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLTable = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst ddl_include_1 = __webpack_require__(/*! ./ddl_include */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js\");\nconst ddl_name_1 = __webpack_require__(/*! ./ddl_name */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js\");\nconst ddl_table_field_1 = __webpack_require__(/*! ./ddl_table_field */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js\");\nclass DDLTable extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)(\"DEFINE TABLE\", ddl_name_1.DDLName, \"{\", (0, combi_1.plusPrio)((0, combi_1.altPrio)(ddl_table_field_1.DDLTableField, ddl_include_1.DDLInclude)), \"}\");\n }\n}\nexports.DDLTable = DDLTable;\n//# sourceMappingURL=ddl_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLTableField = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst ddl_name_1 = __webpack_require__(/*! ./ddl_name */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js\");\nconst ddl_type_1 = __webpack_require__(/*! ./ddl_type */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js\");\nclass DDLTableField extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.seq)((0, combi_1.optPrio)(\"KEY\"), ddl_name_1.DDLName, \":\", ddl_type_1.DDLType, (0, combi_1.optPrio)(\"NOT NULL\"), \";\");\n }\n}\nexports.DDLTableField = DDLTableField;\n//# sourceMappingURL=ddl_table_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DDLType = void 0;\nconst combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nclass DDLType extends combi_1.Expression {\n getRunnable() {\n return (0, combi_1.regex)(/^(abap\\.)?\\w+(\\(\\d+\\))?$/);\n }\n}\nexports.DDLType = DDLType;\n//# sourceMappingURL=ddl_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/ddl/expressions/index.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/ddl/expressions/index.js ***! + \************************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./ddl_include */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_include.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ddl_name */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ddl_structure_field */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ddl_structure */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_structure.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ddl_table_field */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ddl_table */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_table.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ddl_type */ \"./node_modules/@abaplint/core/build/src/ddl/expressions/ddl_type.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/ddl/expressions/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/edit_helper.js": +/*!**************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/edit_helper.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.applyEditList = exports.applyEditSingle = exports.EditHelper = exports.EditDraft = void 0;\nconst position_1 = __webpack_require__(/*! ./position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst memory_file_1 = __webpack_require__(/*! ./files/memory_file */ \"./node_modules/@abaplint/core/build/src/files/memory_file.js\");\nclass EditDraft {\n constructor(file) {\n this.start = undefined;\n this.end = undefined;\n this.rows = file.getRawRows();\n this.file = file;\n }\n /** replace existing text, insert text wont work */\n replace(pos, value) {\n if (this.start === undefined || pos.isBefore(this.start)) {\n this.start = pos;\n }\n const end = new position_1.Position(pos.getRow(), pos.getCol() + value.length);\n if (this.end === undefined || end.isAfter(this.end)) {\n this.end = end;\n }\n const str = this.rows[pos.getRow() - 1];\n this.rows[pos.getRow() - 1] = str.substr(0, pos.getCol() - 1) + value + str.substr(pos.getCol() + value.length - 1);\n }\n toEdit() {\n if (this.start === undefined) {\n throw \"EditDraft, start undefined\";\n }\n else if (this.end === undefined) {\n throw \"EditDraft, end undefined\";\n }\n let value = \"\";\n for (let row = this.start.getRow(); row <= this.end.getRow(); row++) {\n if (row === this.start.getRow() && row === this.end.getRow()) {\n // first and last row\n value = this.rows[row - 1].substring(this.start.getCol() - 1, this.end.getCol() - 1);\n }\n else if (row === this.start.getRow()) {\n // first row\n value = this.rows[row - 1].substring(this.start.getCol() - 1);\n }\n else if (row === this.end.getRow()) {\n // last row\n value += \"\\n\" + this.rows[row - 1].substring(0, this.end.getCol() - 1);\n }\n else {\n // middle row\n value += \"\\n\" + this.rows[row - 1];\n }\n }\n return EditHelper.replaceRange(this.file, this.start, this.end, value);\n }\n}\nexports.EditDraft = EditDraft;\nclass EditHelper {\n static mergeList(fixes) {\n const results = {};\n for (const f of fixes) {\n for (const filename in f) {\n if (results[filename] === undefined) {\n results[filename] = [];\n }\n results[filename] = results[filename].concat(f[filename]);\n }\n }\n return results;\n }\n static merge(fix1, fix2) {\n const ret = {};\n for (const k of Object.keys(fix1)) {\n if (ret[k] === undefined) {\n ret[k] = [];\n }\n ret[k] = ret[k].concat(fix1[k]);\n }\n for (const k of Object.keys(fix2)) {\n if (ret[k] === undefined) {\n ret[k] = [];\n }\n ret[k] = ret[k].concat(fix2[k]);\n }\n return ret;\n }\n static findStatement(token, file) {\n if (file === undefined) {\n return undefined;\n }\n for (const s of file.getStatements()) {\n if (s.includesToken(token)) {\n return s;\n }\n }\n return undefined;\n }\n static deleteStatement(file, statement) {\n const scolon = statement.getColon();\n if (scolon === undefined) {\n return EditHelper.deleteRange(file, statement.getFirstToken().getStart(), statement.getLastToken().getEnd());\n }\n let setPrevious = true;\n let setNext = true;\n /** previous statement in the chain */\n let previousStatement = undefined;\n /** next statement in the chain */\n let nextStatement = undefined;\n for (const s of file.getStatements()) {\n const colon = s.getColon();\n if (colon === undefined) {\n continue;\n }\n else if (s === statement) {\n setPrevious = false;\n setNext = true;\n continue;\n }\n else if (setPrevious === true) {\n if (scolon.getStart().equals(colon.getStart())) {\n previousStatement = s;\n }\n }\n else if (setNext === true) {\n if (scolon.getStart().equals(colon.getStart())) {\n nextStatement = s;\n }\n break;\n }\n }\n if (previousStatement === undefined && nextStatement === undefined) {\n // the statement to be deleted is the only one in the chain\n return EditHelper.deleteRange(file, statement.getFirstToken().getStart(), statement.getLastToken().getEnd());\n }\n // the start of deletion should happen for tokens after the colon\n let startDelete = statement.getFirstToken().getStart();\n for (const t of statement.getTokens()) {\n if (t.getStart().isAfter(scolon.getEnd())) {\n startDelete = t.getStart();\n break;\n }\n }\n const colon = statement.getColon();\n if (statement.getLastToken().getStr() === \".\" && previousStatement) {\n // last statement in chain\n const edit1 = EditHelper.replaceToken(file, previousStatement.getLastToken(), \".\");\n const edit2 = EditHelper.deleteRange(file, previousStatement.getLastToken().getEnd(), statement.getLastToken().getEnd());\n return EditHelper.merge(edit1, edit2);\n }\n else if (previousStatement === undefined && colon && nextStatement) {\n // first statement in chain\n return EditHelper.deleteRange(file, this.firstAfterColon(statement), this.firstAfterColon(nextStatement));\n }\n else {\n // middle statement\n return EditHelper.deleteRange(file, startDelete, this.firstAfterColon(nextStatement));\n }\n }\n static firstAfterColon(statement) {\n const colon = statement.getColon().getStart();\n for (const t of statement.getTokens()) {\n if (t.getStart().isAfter(colon)) {\n return t.getStart();\n }\n }\n throw new Error(\"firstAfterColon, emtpy statement?\");\n }\n static deleteToken(file, token) {\n const filename = file.getFilename();\n const range = { start: token.getStart(), end: token.getEnd() };\n return { [filename]: [{ range, newText: \"\" }] };\n }\n static deleteRange(file, start, end) {\n const filename = file.getFilename();\n const range = { start, end };\n return { [filename]: [{ range, newText: \"\" }] };\n }\n static insertAt(file, pos, text) {\n const filename = file.getFilename();\n const range = { start: pos, end: pos };\n return { [filename]: [{ range, newText: text }] };\n }\n static replaceToken(file, token, text) {\n return this.replaceRange(file, token.getStart(), token.getEnd(), text);\n }\n static replaceRange(file, start, end, text) {\n const filename = file.getFilename();\n const range = { start, end };\n return { [filename]: [{ range, newText: text }] };\n }\n}\nexports.EditHelper = EditHelper;\nfunction applyEditSingle(reg, edit) {\n var _a;\n for (const filename in edit) {\n let rows = (_a = reg.getFileByName(filename)) === null || _a === void 0 ? void 0 : _a.getRawRows();\n if (rows === undefined) {\n throw new Error(\"applyEdit, file not found\");\n }\n for (const e of edit[filename]) {\n if (e.range.start.getRow() === e.range.end.getRow()) {\n const line = rows[e.range.start.getRow() - 1];\n rows[e.range.start.getRow() - 1] =\n line.substr(0, e.range.start.getCol() - 1) +\n e.newText +\n line.substr(e.range.end.getCol() - 1);\n }\n else {\n const first = rows[e.range.start.getRow() - 1];\n let res = first.substr(0, e.range.start.getCol() - 1) + e.newText;\n const last = rows[e.range.end.getRow() - 1];\n res = res + last.substr(e.range.end.getCol() - 1);\n // delete middle lines\n rows.splice(e.range.start.getRow(), e.range.end.getRow() - e.range.start.getRow());\n // clean up\n rows[e.range.start.getRow() - 1] = res;\n rows = rows.join(\"\\n\").split(\"\\n\"); // if the edit contained newlines and multiple edits\n }\n }\n const result = new memory_file_1.MemoryFile(filename, rows.join(\"\\n\"));\n reg.updateFile(result);\n }\n}\nexports.applyEditSingle = applyEditSingle;\n/** returns list of filenames which were changed */\nfunction applyEditList(reg, edits) {\n const ret = [];\n let length = 0;\n const merged = {};\n for (const e of edits) {\n for (const f in e) {\n if (merged[f] === undefined) {\n merged[f] = [];\n length = length + 1;\n }\n merged[f] = merged[f].concat(e[f]);\n }\n }\n for (const f in merged) {\n const singleFile = {};\n // sort, start with the last position first\n singleFile[f] = merged[f].sort((a, b) => {\n let val = b.range.start.getRow() - a.range.start.getRow();\n if (val === 0) {\n val = b.range.start.getCol() - a.range.start.getCol();\n }\n return val;\n });\n applyEditSingle(reg, singleFile);\n ret.push(f);\n }\n return ret;\n}\nexports.applyEditList = applyEditList;\n//# sourceMappingURL=edit_helper.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/edit_helper.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/files/_abstract_file.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/files/_abstract_file.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AbstractFile = void 0;\nclass AbstractFile {\n constructor(filename) {\n this.filename = filename;\n }\n getFilename() {\n return this.filename;\n }\n baseName() {\n const first = this.getFilename().split(\"\\\\\");\n const base1 = first[first.length - 1];\n const base2 = base1.split(\"/\");\n return base2[base2.length - 1];\n }\n getObjectType() {\n var _a;\n const split = this.baseName().split(\".\");\n return (_a = split[1]) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n }\n getObjectName() {\n const split = this.baseName().split(\".\");\n // handle url escaped namespace\n split[0] = split[0].replace(/%23/g, \"#\");\n // handle additional escaping\n split[0] = split[0].replace(/%3e/g, \">\");\n split[0] = split[0].replace(/%3c/g, \"<\");\n // handle namespace\n return split[0].toUpperCase().replace(/#/g, \"/\");\n }\n}\nexports.AbstractFile = AbstractFile;\n//# sourceMappingURL=_abstract_file.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/files/_abstract_file.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/files/memory_file.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/files/memory_file.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MemoryFile = void 0;\nconst _abstract_file_1 = __webpack_require__(/*! ./_abstract_file */ \"./node_modules/@abaplint/core/build/src/files/_abstract_file.js\");\nclass MemoryFile extends _abstract_file_1.AbstractFile {\n constructor(filename, raw) {\n super(filename);\n this.raw = raw;\n }\n getRaw() {\n return this.raw;\n }\n getRawRows() {\n return this.raw.split(\"\\n\");\n }\n}\nexports.MemoryFile = MemoryFile;\n//# sourceMappingURL=memory_file.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/files/memory_file.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/index.js": +/*!********************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Severity = exports.Visibility = exports.Info = exports.Rename = exports.PrettyPrinter = exports.Position = exports.CurrentScope = exports.ABAPFile = exports.RulesRunner = exports.SpaghettiScope = exports.SyntaxLogic = exports.ABAPObject = exports.Tokens = exports.ExpressionsCDS = exports.CDSParser = exports.LanguageServerTypes = exports.DDLParser = exports.applyEditList = exports.applyEditSingle = exports.SpaghettiScopeNode = exports.AbstractFile = exports.Token = exports.ScopeType = exports.BasicTypes = exports.TypedIdentifier = exports.AbstractType = exports.VirtualPosition = exports.Comment = exports.Unknown = exports.Empty = exports.Identifier = exports.Nodes = exports.Types = exports.Expressions = exports.Statements = exports.Structures = exports.Objects = exports.ArtifactsRules = exports.ArtifactsObjects = exports.ArtifactsABAP = exports.BuiltIn = exports.MethodLengthStats = exports.LanguageServer = exports.Registry = exports.CyclomaticComplexityStats = exports.ReferenceType = exports.Version = exports.Config = exports.Issue = exports.MemoryFile = void 0;\nexports.RuleTag = void 0;\nconst issue_1 = __webpack_require__(/*! ./issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nObject.defineProperty(exports, \"Issue\", ({ enumerable: true, get: function () { return issue_1.Issue; } }));\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nObject.defineProperty(exports, \"Config\", ({ enumerable: true, get: function () { return config_1.Config; } }));\nconst version_1 = __webpack_require__(/*! ./version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nObject.defineProperty(exports, \"Version\", ({ enumerable: true, get: function () { return version_1.Version; } }));\nconst registry_1 = __webpack_require__(/*! ./registry */ \"./node_modules/@abaplint/core/build/src/registry.js\");\nObject.defineProperty(exports, \"Registry\", ({ enumerable: true, get: function () { return registry_1.Registry; } }));\nconst method_length_stats_1 = __webpack_require__(/*! ./utils/method_length_stats */ \"./node_modules/@abaplint/core/build/src/utils/method_length_stats.js\");\nObject.defineProperty(exports, \"MethodLengthStats\", ({ enumerable: true, get: function () { return method_length_stats_1.MethodLengthStats; } }));\nconst language_server_1 = __webpack_require__(/*! ./lsp/language_server */ \"./node_modules/@abaplint/core/build/src/lsp/language_server.js\");\nObject.defineProperty(exports, \"LanguageServer\", ({ enumerable: true, get: function () { return language_server_1.LanguageServer; } }));\nconst LanguageServerTypes = __webpack_require__(/*! ./lsp/_interfaces */ \"./node_modules/@abaplint/core/build/src/lsp/_interfaces.js\");\nexports.LanguageServerTypes = LanguageServerTypes;\nconst artifacts_1 = __webpack_require__(/*! ./abap/artifacts */ \"./node_modules/@abaplint/core/build/src/abap/artifacts.js\");\nObject.defineProperty(exports, \"ArtifactsABAP\", ({ enumerable: true, get: function () { return artifacts_1.ArtifactsABAP; } }));\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nObject.defineProperty(exports, \"ArtifactsObjects\", ({ enumerable: true, get: function () { return artifacts_objects_1.ArtifactsObjects; } }));\nconst artifacts_rules_1 = __webpack_require__(/*! ./artifacts_rules */ \"./node_modules/@abaplint/core/build/src/artifacts_rules.js\");\nObject.defineProperty(exports, \"ArtifactsRules\", ({ enumerable: true, get: function () { return artifacts_rules_1.ArtifactsRules; } }));\nconst _abap_object_1 = __webpack_require__(/*! ./objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nObject.defineProperty(exports, \"ABAPObject\", ({ enumerable: true, get: function () { return _abap_object_1.ABAPObject; } }));\nconst syntax_1 = __webpack_require__(/*! ./abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nObject.defineProperty(exports, \"SyntaxLogic\", ({ enumerable: true, get: function () { return syntax_1.SyntaxLogic; } }));\nconst spaghetti_scope_1 = __webpack_require__(/*! ./abap/5_syntax/spaghetti_scope */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/spaghetti_scope.js\");\nObject.defineProperty(exports, \"SpaghettiScope\", ({ enumerable: true, get: function () { return spaghetti_scope_1.SpaghettiScope; } }));\nObject.defineProperty(exports, \"SpaghettiScopeNode\", ({ enumerable: true, get: function () { return spaghetti_scope_1.SpaghettiScopeNode; } }));\nconst _typed_identifier_1 = __webpack_require__(/*! ./abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nObject.defineProperty(exports, \"TypedIdentifier\", ({ enumerable: true, get: function () { return _typed_identifier_1.TypedIdentifier; } }));\nconst _abstract_type_1 = __webpack_require__(/*! ./abap/types/basic/_abstract_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/_abstract_type.js\");\nObject.defineProperty(exports, \"AbstractType\", ({ enumerable: true, get: function () { return _abstract_type_1.AbstractType; } }));\nconst _scope_type_1 = __webpack_require__(/*! ./abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nObject.defineProperty(exports, \"ScopeType\", ({ enumerable: true, get: function () { return _scope_type_1.ScopeType; } }));\nconst _current_scope_1 = __webpack_require__(/*! ./abap/5_syntax/_current_scope */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_current_scope.js\");\nObject.defineProperty(exports, \"CurrentScope\", ({ enumerable: true, get: function () { return _current_scope_1.CurrentScope; } }));\nconst Objects = __webpack_require__(/*! ./objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nexports.Objects = Objects;\nconst _token_1 = __webpack_require__(/*! ./abap/1_lexer/tokens/_token */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/_token.js\");\nObject.defineProperty(exports, \"Token\", ({ enumerable: true, get: function () { return _token_1.Token; } }));\nconst Statements = __webpack_require__(/*! ./abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nexports.Statements = Statements;\nconst Expressions = __webpack_require__(/*! ./abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nexports.Expressions = Expressions;\nconst ExpressionsCDS = __webpack_require__(/*! ./cds/expressions */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nexports.ExpressionsCDS = ExpressionsCDS;\nconst Structures = __webpack_require__(/*! ./abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nexports.Structures = Structures;\nconst Nodes = __webpack_require__(/*! ./abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nexports.Nodes = Nodes;\nconst BasicTypes = __webpack_require__(/*! ./abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nexports.BasicTypes = BasicTypes;\nconst Types = __webpack_require__(/*! ./abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nexports.Types = Types;\nconst Tokens = __webpack_require__(/*! ./abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nexports.Tokens = Tokens;\nconst position_1 = __webpack_require__(/*! ./position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nObject.defineProperty(exports, \"Position\", ({ enumerable: true, get: function () { return position_1.Position; } }));\nObject.defineProperty(exports, \"VirtualPosition\", ({ enumerable: true, get: function () { return position_1.VirtualPosition; } }));\nconst _abstract_file_1 = __webpack_require__(/*! ./files/_abstract_file */ \"./node_modules/@abaplint/core/build/src/files/_abstract_file.js\");\nObject.defineProperty(exports, \"AbstractFile\", ({ enumerable: true, get: function () { return _abstract_file_1.AbstractFile; } }));\nconst pretty_printer_1 = __webpack_require__(/*! ./pretty_printer/pretty_printer */ \"./node_modules/@abaplint/core/build/src/pretty_printer/pretty_printer.js\");\nObject.defineProperty(exports, \"PrettyPrinter\", ({ enumerable: true, get: function () { return pretty_printer_1.PrettyPrinter; } }));\nconst _statement_1 = __webpack_require__(/*! ./abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nObject.defineProperty(exports, \"Empty\", ({ enumerable: true, get: function () { return _statement_1.Empty; } }));\nObject.defineProperty(exports, \"Unknown\", ({ enumerable: true, get: function () { return _statement_1.Unknown; } }));\nObject.defineProperty(exports, \"Comment\", ({ enumerable: true, get: function () { return _statement_1.Comment; } }));\nconst edit_helper_1 = __webpack_require__(/*! ./edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nObject.defineProperty(exports, \"applyEditSingle\", ({ enumerable: true, get: function () { return edit_helper_1.applyEditSingle; } }));\nObject.defineProperty(exports, \"applyEditList\", ({ enumerable: true, get: function () { return edit_helper_1.applyEditList; } }));\nconst _reference_1 = __webpack_require__(/*! ./abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nObject.defineProperty(exports, \"ReferenceType\", ({ enumerable: true, get: function () { return _reference_1.ReferenceType; } }));\nconst _builtin_1 = __webpack_require__(/*! ./abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nObject.defineProperty(exports, \"BuiltIn\", ({ enumerable: true, get: function () { return _builtin_1.BuiltIn; } }));\nconst abap_file_1 = __webpack_require__(/*! ./abap/abap_file */ \"./node_modules/@abaplint/core/build/src/abap/abap_file.js\");\nObject.defineProperty(exports, \"ABAPFile\", ({ enumerable: true, get: function () { return abap_file_1.ABAPFile; } }));\nconst memory_file_1 = __webpack_require__(/*! ./files/memory_file */ \"./node_modules/@abaplint/core/build/src/files/memory_file.js\");\nObject.defineProperty(exports, \"MemoryFile\", ({ enumerable: true, get: function () { return memory_file_1.MemoryFile; } }));\nconst renamer_1 = __webpack_require__(/*! ./objects/rename/renamer */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer.js\");\nObject.defineProperty(exports, \"Rename\", ({ enumerable: true, get: function () { return renamer_1.Renamer; } }));\nconst Info = __webpack_require__(/*! ./abap/4_file_information/_abap_file_information */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js\");\nexports.Info = Info;\nconst visibility_1 = __webpack_require__(/*! ./abap/4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nObject.defineProperty(exports, \"Visibility\", ({ enumerable: true, get: function () { return visibility_1.Visibility; } }));\nconst _identifier_1 = __webpack_require__(/*! ./abap/4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nObject.defineProperty(exports, \"Identifier\", ({ enumerable: true, get: function () { return _identifier_1.Identifier; } }));\nconst severity_1 = __webpack_require__(/*! ./severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nObject.defineProperty(exports, \"Severity\", ({ enumerable: true, get: function () { return severity_1.Severity; } }));\nconst ddl_parser_1 = __webpack_require__(/*! ./ddl/ddl_parser */ \"./node_modules/@abaplint/core/build/src/ddl/ddl_parser.js\");\nObject.defineProperty(exports, \"DDLParser\", ({ enumerable: true, get: function () { return ddl_parser_1.DDLParser; } }));\nconst cds_parser_1 = __webpack_require__(/*! ./cds/cds_parser */ \"./node_modules/@abaplint/core/build/src/cds/cds_parser.js\");\nObject.defineProperty(exports, \"CDSParser\", ({ enumerable: true, get: function () { return cds_parser_1.CDSParser; } }));\nconst rules_runner_1 = __webpack_require__(/*! ./rules_runner */ \"./node_modules/@abaplint/core/build/src/rules_runner.js\");\nObject.defineProperty(exports, \"RulesRunner\", ({ enumerable: true, get: function () { return rules_runner_1.RulesRunner; } }));\nconst _irule_1 = __webpack_require__(/*! ./rules/_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nObject.defineProperty(exports, \"RuleTag\", ({ enumerable: true, get: function () { return _irule_1.RuleTag; } }));\nconst cyclomatic_complexity_stats_1 = __webpack_require__(/*! ./utils/cyclomatic_complexity_stats */ \"./node_modules/@abaplint/core/build/src/utils/cyclomatic_complexity_stats.js\");\nObject.defineProperty(exports, \"CyclomaticComplexityStats\", ({ enumerable: true, get: function () { return cyclomatic_complexity_stats_1.CyclomaticComplexityStats; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/issue.js": +/*!********************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/issue.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Issue = void 0;\nconst position_1 = __webpack_require__(/*! ./position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst severity_1 = __webpack_require__(/*! ./severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nclass Issue {\n //////////////////////////\n static atRow(file, row, message, key, severity) {\n const start = new position_1.Position(row, 1);\n const end = new position_1.Position(row, file.getRawRows()[row - 1].length + 1);\n severity = severity !== null && severity !== void 0 ? severity : severity_1.Severity.Error;\n return new Issue({\n filename: file.getFilename(),\n message,\n key,\n start,\n end,\n severity,\n });\n }\n static atStatement(file, statement, message, key, severity, fix) {\n return this.atRange(file, statement.getStart(), statement.getEnd(), message, key, severity, fix);\n }\n static atPosition(file, start, message, key, severity, fix) {\n const row = start.getRow();\n const end = new position_1.Position(row, file.getRawRows()[row - 1].length + 1);\n severity = severity !== null && severity !== void 0 ? severity : severity_1.Severity.Error;\n return new Issue({\n filename: file.getFilename(),\n message,\n key,\n start,\n end,\n fix,\n severity,\n });\n }\n static atRowRange(file, row, startCol, endCol, message, key, severity, fix) {\n const start = new position_1.Position(row, startCol);\n const end = new position_1.Position(row, endCol);\n severity = severity !== null && severity !== void 0 ? severity : severity_1.Severity.Error;\n return new Issue({\n filename: file.getFilename(),\n message,\n key,\n start,\n end,\n fix,\n severity,\n });\n }\n static atRange(file, start, end, message, key, severity, fix) {\n severity = severity !== null && severity !== void 0 ? severity : severity_1.Severity.Error;\n return new Issue({\n filename: file.getFilename(),\n message,\n key,\n start,\n end,\n fix,\n severity,\n });\n }\n static atToken(file, token, message, key, severity, fix) {\n severity = severity !== null && severity !== void 0 ? severity : severity_1.Severity.Error;\n return new Issue({\n filename: file.getFilename(),\n message,\n key,\n start: token.getStart(),\n end: token.getEnd(),\n severity,\n fix,\n });\n }\n static atIdentifier(identifier, message, key, severity, fix) {\n severity = severity !== null && severity !== void 0 ? severity : severity_1.Severity.Error;\n return new Issue({\n filename: identifier.getFilename(),\n message,\n key,\n start: identifier.getStart(),\n end: identifier.getEnd(),\n severity,\n fix,\n });\n }\n constructor(data) {\n this.data = data;\n if (this.data.start instanceof position_1.VirtualPosition) {\n // no quick fixes inside macros\n this.data.fix = undefined;\n }\n if (this.data.start.getCol() < 1) {\n throw new Error(\"issue, start col < 1\");\n }\n else if (this.data.end.getCol() < 1) {\n throw new Error(\"issue, end col < 1\");\n }\n }\n getData() {\n return this.data;\n }\n getMessage() {\n return this.data.message;\n }\n getKey() {\n return this.data.key;\n }\n getStart() {\n return this.data.start;\n }\n getEnd() {\n return this.data.end;\n }\n getFilename() {\n return this.data.filename;\n }\n getFix() {\n return this.data.fix;\n }\n getSeverity() {\n return this.data.severity;\n }\n}\nexports.Issue = Issue;\n//# sourceMappingURL=issue.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/issue.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/_edit.js": +/*!************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/_edit.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LSPEdit = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nclass LSPEdit {\n static mapEdits(edits) {\n const workspace = { changes: {} };\n for (const edit of edits) {\n for (const filename in edit) {\n if (workspace.changes[filename] === undefined) {\n workspace.changes[filename] = [];\n }\n workspace.changes[filename] = workspace.changes[filename].concat(this.mapText(edit[filename]));\n }\n }\n return workspace;\n }\n /*\n public static mapEditsDocument(edit: IEdit): LServer.WorkspaceEdit {\n const workspace: LServer.WorkspaceEdit = {documentChanges: []};\n for (const filename in edit) {\n const doc: LServer.VersionedTextDocumentIdentifier = {uri: filename, version: 1};\n \n const e = LServer.TextDocumentEdit.create(doc, this.mapText(edit[filename]));\n workspace.documentChanges?.push(e);\n }\n // @ts-ignore\n console.dir(workspace.documentChanges![0].edits[0]);\n // @ts-ignore\n console.dir(workspace.documentChanges![0].edits[1]);\n return workspace;\n }\n */\n static mapEdit(edit) {\n const workspace = { changes: {} };\n for (const filename in edit) {\n workspace.changes[filename] = this.mapText(edit[filename]);\n }\n return workspace;\n }\n static mapText(edit) {\n const result = [];\n for (const e of edit) {\n const range = LServer.Range.create(e.range.start.getRow() - 1, e.range.start.getCol() - 1, e.range.end.getRow() - 1, e.range.end.getCol() - 1);\n result.push({ range, newText: e.newText });\n }\n return result;\n }\n}\nexports.LSPEdit = LSPEdit;\n//# sourceMappingURL=_edit.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/_edit.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/_interfaces.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/_interfaces.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n//# sourceMappingURL=_interfaces.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/_interfaces.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/_lookup.js": +/*!**************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/_lookup.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LSPLookup = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nclass LSPLookup {\n static lookup(cursor, reg, obj) {\n var _a, _b;\n const inc = this.findInclude(cursor, reg);\n if (inc) {\n const found = this.ABAPFileResult(inc);\n return { hover: \"Include\", definition: found, implementation: found };\n }\n const fm = this.findFunctionModule(cursor);\n if (fm) {\n return { hover: \"Function Module \" + fm };\n }\n const bottomScope = new syntax_1.SyntaxLogic(reg, obj).run().spaghetti.lookupPosition(cursor.identifier.getStart(), cursor.identifier.getFilename());\n if (bottomScope === undefined) {\n return undefined;\n }\n const clas = bottomScope.findClassDefinition(cursor.token.getStr());\n if (clas && clas.getStart().equals(cursor.token.getStart())) {\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(clas);\n return {\n hover: \"Class Definition, \" + cursor.token.getStr(),\n definition: found,\n definitionId: clas,\n implementation: undefined,\n scope: bottomScope,\n };\n }\n const intf = bottomScope.findInterfaceDefinition(cursor.token.getStr());\n if (intf && intf.getStart().equals(cursor.token.getStart())) {\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(intf);\n return {\n hover: \"Interface Definition, \" + cursor.token.getStr(),\n definition: found,\n definitionId: intf,\n implementation: undefined,\n scope: bottomScope,\n };\n }\n const type = bottomScope.findType(cursor.token.getStr());\n if (type !== undefined && type.getStart().equals(cursor.token.getStart())) {\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(type);\n const hover = \"Type Definition, \" + cursor.token.getStr() + \"\\n\\n\" + this.dumpType(type);\n return { hover, definition: found, definitionId: type, scope: bottomScope };\n }\n const method = this.findMethodDefinition(cursor, bottomScope);\n if (method !== undefined && method.getStart().equals(cursor.token.getStart())) {\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(method);\n const hover = \"Method Definition \\\"\" + method.getName() + \"\\\"\";\n return { hover, definition: found, definitionId: method, scope: bottomScope };\n }\n let hoverValue = \"\";\n const ddicRefs = reg.getDDICReferences().listByFilename(cursor.identifier.getFilename(), cursor.identifier.getStart().getRow());\n for (const d of ddicRefs) {\n if (d.object && d.token && d.token.getStart().equals(cursor.identifier.getStart())) {\n hoverValue += `DDIC: ${d.object.getType()} ${d.object.getName()}`;\n }\n }\n const variable = bottomScope.findVariable(cursor.token.getStr());\n if (variable !== undefined && variable.getStart().equals(cursor.token.getStart())) {\n const hover = \"Variable Definition\\n\\n\" + this.dumpType(variable);\n if (hoverValue !== \"\") {\n hoverValue = hover + \"\\n_________________\\n\" + hoverValue;\n }\n else {\n hoverValue = hover;\n }\n let location = undefined;\n if (variable.getMeta().includes(\"built-in\" /* IdentifierMeta.BuiltIn */) === false) {\n location = _lsp_utils_1.LSPUtils.identiferToLocation(variable);\n }\n return { hover: hoverValue, definition: location, implementation: location, definitionId: variable, scope: bottomScope };\n }\n for (const c of bottomScope.listClassDefinitions()) {\n for (const m of ((_a = c.getMethodDefinitions()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\n for (const p of ((_b = m.getParameters()) === null || _b === void 0 ? void 0 : _b.getAll()) || []) {\n if (p.getStart().equals(cursor.token.getStart())) {\n const found = _lsp_utils_1.LSPUtils.identiferToLocation(p);\n return {\n hover: \"Method Parameter, \" + cursor.token.getStr(),\n definition: found,\n definitionId: p,\n implementation: undefined,\n scope: bottomScope,\n };\n }\n }\n }\n }\n const refs = this.searchReferences(bottomScope, cursor.token);\n if (refs.length > 0) {\n for (const ref of refs) {\n if (hoverValue !== \"\") {\n hoverValue += \"\\n_________________\\n\";\n }\n hoverValue += this.referenceHover(ref, bottomScope, reg);\n }\n let definition = undefined;\n let implementation = undefined;\n if (refs[0].resolved) {\n definition = _lsp_utils_1.LSPUtils.identiferToLocation(refs[0].resolved);\n if (definition.uri === _builtin_1.BuiltIn.filename) {\n definition = undefined;\n }\n if (refs[0].resolved instanceof types_1.FormDefinition) {\n implementation = definition;\n }\n }\n return {\n hover: hoverValue,\n definition: definition,\n implementation: implementation,\n definitionId: refs[0].resolved,\n scope: bottomScope,\n };\n }\n if (hoverValue !== \"\") {\n return { hover: hoverValue, scope: bottomScope };\n }\n return undefined;\n }\n ////////////////////////////////////////////\n static dumpType(variable) {\n let value = variable.toText() + \"\\n\\nType: \" + variable.getType().toText(0);\n if (variable.getValue()) {\n value += \"\\n\\nValue: ```\" + variable.getValue() + \"```\";\n }\n if (variable.getMeta().length > 0) {\n value += \"\\n\\nMeta: \" + variable.getMeta().join(\", \");\n }\n if (variable.getType().containsVoid() === true) {\n value += \"\\n\\nContains Void types\";\n }\n if (variable.getType().getQualifiedName()) {\n value += \"\\n\\nQualified Type Name: ```\" + variable.getType().getQualifiedName() + \"```\";\n }\n if (variable.getType().getRTTIName()) {\n value += \"\\n\\nRTTI Name: ```\" + variable.getType().getRTTIName() + \"```\";\n }\n if (variable.getType().isGeneric() === true) {\n value += \"\\n\\nIs Generic Type\";\n }\n if (variable.getType().getConversionExit() !== undefined) {\n value += \"\\n\\nConversion Exit: ```\" + variable.getType().getConversionExit() + \"```\";\n }\n if (variable.getType().getDDICName() !== undefined) {\n value += \"\\n\\nDDIC Name: ```\" + variable.getType().getDDICName() + \"```\";\n }\n return value;\n }\n static referenceHover(ref, scope, reg) {\n var _a, _b, _c, _d, _e;\n let name = \"\";\n if (ref.resolved) {\n name = \"```\" + ref.resolved.getName() + \"```\";\n }\n let ret = `${ref.referenceType} ${name}`;\n if (ref.referenceType === _reference_1.ReferenceType.MethodReference && ((_a = ref.extra) === null || _a === void 0 ? void 0 : _a.ooName)) {\n let cdef = scope.findClassDefinition(ref.extra.ooName);\n if (cdef === undefined) {\n cdef = scope.findInterfaceDefinition(ref.extra.ooName);\n }\n if (cdef === undefined) {\n cdef = (_b = reg.getObject(\"CLAS\", ref.extra.ooName)) === null || _b === void 0 ? void 0 : _b.getDefinition();\n }\n if (cdef === undefined) {\n cdef = (_c = reg.getObject(\"INTF\", ref.extra.ooName)) === null || _c === void 0 ? void 0 : _c.getDefinition();\n }\n ret += \"\\n\\n\" + this.hoverMethod(ref.position.getName(), cdef);\n }\n else if (ref.resolved instanceof _typed_identifier_1.TypedIdentifier) {\n ret += \"\\n\\n\" + this.dumpType(ref.resolved);\n }\n else if (ref.referenceType === _reference_1.ReferenceType.BuiltinMethodReference) {\n const builtinDef = new _builtin_1.BuiltIn().searchBuiltin((_e = (_d = ref.resolved) === null || _d === void 0 ? void 0 : _d.getName()) === null || _e === void 0 ? void 0 : _e.toUpperCase());\n if (builtinDef === undefined) {\n return \"Error: builtin method signature not found\";\n }\n ret += \"\\n\\n\" + this.methodParameters(builtinDef);\n }\n if (ref.resolved) {\n ret += \"\\n\\n(Resolved)\";\n }\n if (ref.extra !== undefined && Object.keys(ref.extra).length > 0) {\n ret += \"\\n\\nExtra: \" + JSON.stringify(ref.extra);\n }\n return ret;\n }\n static hoverMethod(method, classDef) {\n if (classDef === undefined) {\n return \"class not found\";\n }\n const methodDef = classDef.getMethodDefinitions().getByName(method);\n if (methodDef === undefined) {\n return \"method not found in definition\";\n }\n return this.methodParameters(methodDef);\n }\n static methodParameters(methodDef) {\n let ret = \"\";\n const parameters = methodDef.getParameters();\n const importing = parameters.getImporting();\n if (importing.length > 0) {\n ret += \"IMPORTING\\n\";\n for (const p of importing) {\n ret += this.singleParameter(p);\n }\n }\n const exporting = parameters.getExporting();\n if (exporting.length > 0) {\n ret += \"EXPORTING\\n\";\n for (const p of exporting) {\n ret += this.singleParameter(p);\n }\n }\n const changing = parameters.getChanging();\n if (changing.length > 0) {\n ret += \"CHANGING\\n\";\n for (const p of changing) {\n ret += this.singleParameter(p);\n }\n }\n const r = parameters.getReturning();\n if (r) {\n ret += \"RETURNING\\n\" + this.singleParameter(r);\n }\n if (methodDef.getRaising().length > 0) {\n ret += \"RAISING\\n\";\n for (const p of methodDef.getRaising()) {\n ret += \"* \" + p + \"\\n\";\n }\n }\n return ret;\n }\n static singleParameter(p) {\n let extra = p.getMeta().join(\", \");\n if (extra !== \"\") {\n extra = \"(Meta: \" + extra + \")\";\n }\n return \"* \" + p.getName() + extra + \" TYPE \" + p.getType().toText(1) + \"\\n\\n\";\n }\n static searchReferences(scope, token) {\n const ret = [];\n for (const r of scope.getData().references) {\n if (r.position.getStart().equals(token.getStart())) {\n ret.push(r);\n }\n }\n const parent = scope.getParent();\n if (parent) {\n ret.push(...this.searchReferences(parent, token));\n }\n return ret;\n }\n static ABAPFileResult(abap) {\n return {\n uri: abap.getFilename(),\n range: LServer.Range.create(0, 0, 0, 0),\n };\n }\n static findMethodDefinition(found, scope) {\n var _a, _b, _c, _d;\n if (scope.getIdentifier().stype !== _scope_type_1.ScopeType.ClassDefinition\n || !(found.snode.get() instanceof Statements.MethodDef)) {\n return undefined;\n }\n const nameToken = (_a = found.snode.findFirstExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (nameToken === undefined) {\n return undefined;\n }\n if (found.snode.findFirstExpression(Expressions.Redefinition)) {\n return undefined;\n }\n // check the cursor is at the right token\n if (nameToken.getStart().getCol() !== found.token.getStart().getCol()\n || nameToken.getStart().getRow() !== found.token.getStart().getRow()) {\n return undefined;\n }\n const def = (_d = (_c = (_b = scope.getParent()) === null || _b === void 0 ? void 0 : _b.findClassDefinition(scope.getIdentifier().sname)) === null || _c === void 0 ? void 0 : _c.getMethodDefinitions()) === null || _d === void 0 ? void 0 : _d.getByName(nameToken.getStr());\n return def;\n }\n static findFunctionModule(found) {\n if (!(found.snode.get() instanceof Statements.CallFunction)) {\n return undefined;\n }\n const name = found.snode.findFirstExpression(Expressions.FunctionName);\n if (name === undefined) {\n return undefined;\n }\n // check the cursor is at the right token\n const token = name.getFirstToken();\n if (token.getStart().getCol() !== found.token.getStart().getCol()\n || token.getStart().getRow() !== found.token.getStart().getRow()) {\n return undefined;\n }\n return token.getStr();\n }\n static findInclude(found, reg) {\n if (!(found.snode.get() instanceof Statements.Include)) {\n return;\n }\n const name = found.snode.findFirstExpression(Expressions.IncludeName);\n if (name === undefined) {\n return undefined;\n }\n // check the cursor is at the right token\n const token = name.getFirstToken();\n if (token.getStart().getCol() !== found.token.getStart().getCol()\n || token.getStart().getRow() !== found.token.getStart().getRow()) {\n return undefined;\n }\n const obj = reg.getObject(\"PROG\", token.getStr());\n if (obj) {\n return obj.getABAPFiles()[0];\n }\n return undefined;\n }\n}\nexports.LSPLookup = LSPLookup;\n//# sourceMappingURL=_lookup.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/_lookup.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LSPUtils = void 0;\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _identifier_1 = __webpack_require__(/*! ../abap/4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nclass LSPUtils {\n static getABAPFile(reg, filename) {\n const file = reg.getFileByName(filename);\n if (file === undefined) {\n return undefined;\n }\n const obj = reg.findObjectForFile(file);\n obj === null || obj === void 0 ? void 0 : obj.parse();\n if (obj instanceof _abap_object_1.ABAPObject) {\n for (const abapfile of obj.getABAPFiles()) {\n if (abapfile.getFilename().toUpperCase() === filename.toUpperCase()) {\n return abapfile;\n }\n }\n }\n return undefined;\n }\n static tokenToRange(token) {\n return LServer.Range.create(token.getStart().getRow() - 1, token.getStart().getCol() - 1, token.getEnd().getRow() - 1, token.getEnd().getCol() - 1);\n }\n static positionToLS(pos) {\n return LServer.Position.create(pos.getRow() - 1, pos.getCol() - 1);\n }\n static identiferToLocation(identifier) {\n return {\n uri: identifier.getFilename(),\n range: LSPUtils.tokenToRange(identifier.getToken()),\n };\n }\n static findCursor(reg, pos) {\n const file = LSPUtils.getABAPFile(reg, pos.textDocument.uri);\n if (file === undefined) {\n return undefined;\n }\n const search = new position_1.Position(pos.position.line + 1, pos.position.character + 1);\n for (const statement of file.getStatements()) {\n const res = this.buildStack(statement, search, [statement]);\n if (res !== undefined) {\n return {\n token: res.token,\n identifier: new _identifier_1.Identifier(res.token, file.getFilename()),\n stack: res.stack,\n snode: statement\n };\n }\n }\n return undefined;\n }\n static buildStack(node, search, parents) {\n const stack = parents;\n for (const c of node.getChildren()) {\n if (c instanceof nodes_1.TokenNode) {\n const token = c.getFirstToken();\n if (token.getRow() === search.getRow()\n && token.getCol() <= search.getCol()\n && token.getCol() + token.getStr().length > search.getCol()) {\n return { token, stack };\n }\n }\n else {\n const res = this.buildStack(c, search, stack.concat([c]));\n if (res !== undefined) {\n return res;\n }\n }\n }\n return undefined;\n }\n}\nexports.LSPUtils = LSPUtils;\n//# sourceMappingURL=_lsp_utils.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/code_actions.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/code_actions.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CodeActions = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst diagnostics_1 = __webpack_require__(/*! ./diagnostics */ \"./node_modules/@abaplint/core/build/src/lsp/diagnostics.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _edit_1 = __webpack_require__(/*! ./_edit */ \"./node_modules/@abaplint/core/build/src/lsp/_edit.js\");\nclass CodeActions {\n constructor(reg) {\n this.reg = reg;\n }\n find(params) {\n const diag = new diagnostics_1.Diagnostics(this.reg);\n const issues = diag.findIssues(params.textDocument);\n const totals = {};\n const shown = new Set();\n const ret = [];\n for (const i of issues) {\n const fix = i.getFix();\n if (fix === undefined) {\n continue;\n }\n if (totals[i.getKey()] === undefined) {\n totals[i.getKey()] = 1;\n }\n else {\n totals[i.getKey()]++;\n }\n if (this.inRange(i, params.range) === false) {\n continue;\n }\n ret.push({\n title: \"Apply fix, \" + i.getKey(),\n kind: LServer.CodeActionKind.QuickFix,\n diagnostics: [diagnostics_1.Diagnostics.mapDiagnostic(i)],\n isPreferred: true,\n edit: _edit_1.LSPEdit.mapEdit(fix),\n });\n shown.add(i.getKey());\n }\n for (const s of shown) {\n if (totals[s] > 1) {\n const foo = this.fixAlls(s, issues);\n ret.push(foo);\n }\n }\n return ret;\n }\n //////////////////////\n fixAlls(key, issues) {\n const diagnostics = [];\n const fixes = [];\n for (const i of issues) {\n const fix = i.getFix();\n if (fix === undefined) {\n continue;\n }\n fixes.push(fix);\n diagnostics.push(diagnostics_1.Diagnostics.mapDiagnostic(i));\n }\n return {\n title: \"Fix all, \" + key,\n kind: LServer.CodeActionKind.QuickFix,\n diagnostics,\n isPreferred: true,\n edit: _edit_1.LSPEdit.mapEdits(fixes),\n };\n }\n inRange(i, range) {\n const start = new position_1.Position(range.start.line + 1, range.start.character + 1);\n const end = new position_1.Position(range.end.line + 1, range.end.character + 1);\n return i.getStart().isBetween(start, end)\n || i.getEnd().isBetween(start, end)\n || start.isBetween(i.getStart(), i.getEnd())\n || end.isBetween(i.getStart(), i.getEnd())\n || end.equals(i.getEnd());\n }\n}\nexports.CodeActions = CodeActions;\n//# sourceMappingURL=code_actions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/code_actions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/code_lens.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/code_lens.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CodeLens = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass CodeLens {\n constructor(reg) {\n this.reg = reg;\n }\n list(textDocument, settings = { messageText: true }) {\n var _a;\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, textDocument.uri);\n if (file === undefined) {\n return [];\n }\n const obj = this.reg.findObjectForFile(file);\n if (obj === undefined || !(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n new syntax_1.SyntaxLogic(this.reg, obj).run();\n const ret = [];\n if (settings.messageText === true) {\n const list = this.reg.getMSAGReferences().listByFilename(file.getFilename());\n for (const l of list) {\n const msag = this.reg.getObject(\"MSAG\", l.messageClass);\n if (msag === undefined) {\n continue;\n }\n const text = (_a = msag.getByNumber(l.number)) === null || _a === void 0 ? void 0 : _a.getMessage();\n if (text === undefined) {\n continue;\n }\n ret.push({\n range: _lsp_utils_1.LSPUtils.tokenToRange(l.token),\n command: LServer.Command.create(text, \"\"),\n });\n }\n }\n return ret;\n }\n}\nexports.CodeLens = CodeLens;\n//# sourceMappingURL=code_lens.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/code_lens.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/definition.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/definition.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Definition = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst _lookup_1 = __webpack_require__(/*! ./_lookup */ \"./node_modules/@abaplint/core/build/src/lsp/_lookup.js\");\n// go to definition\nclass Definition {\n constructor(reg) {\n this.reg = reg;\n }\n find(textDocument, position) {\n var _a;\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, textDocument.uri);\n if (file === undefined) {\n return undefined;\n }\n const obj = this.reg.getObject(file.getObjectType(), file.getObjectName());\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return undefined;\n }\n const found = _lsp_utils_1.LSPUtils.findCursor(this.reg, { textDocument, position });\n if (found === undefined) {\n return undefined;\n }\n return (_a = _lookup_1.LSPLookup.lookup(found, this.reg, obj)) === null || _a === void 0 ? void 0 : _a.definition;\n }\n}\nexports.Definition = Definition;\n//# sourceMappingURL=definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/diagnostics.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/diagnostics.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Diagnostics = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst severity_1 = __webpack_require__(/*! ../severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nclass Diagnostics {\n constructor(reg) {\n this.reg = reg;\n }\n findIssues(textDocument) {\n this.reg.parse();\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, textDocument.uri); // todo, this sould also run for xml files\n if (file === undefined) {\n return [];\n }\n const obj = this.reg.findObjectForFile(file);\n if (obj === undefined) {\n return [];\n }\n let issues = this.reg.findIssuesObject(obj);\n issues = issues.filter(i => i.getFilename() === file.getFilename());\n return issues;\n }\n static mapDiagnostic(issue) {\n const diagnosic = {\n severity: this.mapSeverity(issue.getSeverity()),\n range: {\n start: { line: issue.getStart().getRow() - 1, character: issue.getStart().getCol() - 1 },\n end: { line: issue.getEnd().getRow() - 1, character: issue.getEnd().getCol() - 1 },\n },\n code: issue.getKey(),\n codeDescription: { href: \"https://rules.abaplint.org/\" + issue.getKey() + \"/\" },\n message: issue.getMessage().toString(),\n source: \"abaplint\",\n };\n return diagnosic;\n }\n find(textDocument) {\n const issues = this.findIssues(textDocument);\n const diagnostics = [];\n for (const issue of issues) {\n diagnostics.push(Diagnostics.mapDiagnostic(issue));\n }\n return diagnostics;\n }\n static mapSeverity(severity) {\n switch (severity) {\n case severity_1.Severity.Error:\n return LServer.DiagnosticSeverity.Error;\n case severity_1.Severity.Warning:\n return LServer.DiagnosticSeverity.Warning;\n case severity_1.Severity.Info:\n return LServer.DiagnosticSeverity.Information;\n default:\n return LServer.DiagnosticSeverity.Error;\n }\n }\n}\nexports.Diagnostics = Diagnostics;\n//# sourceMappingURL=diagnostics.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/diagnostics.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/dump_scope.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/dump_scope.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DumpScope = void 0;\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nclass DumpScope {\n static dump(spaghetti) {\n let ret = \"
Spaghetti Scope:

\\n\";\n ret = ret + this.traverseSpaghetti(spaghetti.getTop(), 0);\n return ret;\n }\n static traverseSpaghetti(node, indent) {\n const identifier = node.getIdentifier();\n const coverage = node.calcCoverage();\n const sident = \" \".repeat(indent * 2);\n let ret = sident + \"\" + identifier.stype + \", \" + identifier.sname + \"\";\n ret += \", (\" + coverage.start.getRow() + \", \" + coverage.start.getCol() + \")\";\n if (coverage.end.getRow() === Number.MAX_SAFE_INTEGER\n && coverage.end.getCol() === Number.MAX_SAFE_INTEGER) {\n ret += \", (max, max)\";\n }\n else {\n ret += \", (\" + coverage.end.getRow() + \", \" + coverage.end.getCol() + \")\";\n }\n ret += \"
\";\n if (node.getIdentifier().stype === _scope_type_1.ScopeType.BuiltIn) {\n ret += sident + node.getData().types.length + \" type definitions
\";\n ret += sident + node.getData().vars.length + \" data definitions
\";\n }\n else {\n ret = ret + this.dumpNode(node, indent);\n }\n ret = ret + \"
\";\n for (const c of node.getChildren()) {\n ret = ret + this.traverseSpaghetti(c, indent + 1);\n }\n return ret;\n }\n static dumpNode(node, indent) {\n let ret = \"\";\n const sident = \" \".repeat(indent * 2);\n const types = node.getData().types;\n if (Object.keys(types).length === 0) {\n ret = ret + sident + \"0 type definitions
\";\n }\n else {\n ret = ret + sident + \"Types:
\";\n }\n for (const name in types) {\n const identifier = types[name];\n ret = ret + sident + \"\" + this.escape(name) + \"\";\n const pos = identifier.getStart();\n ret = ret + \"(\" + pos.getRow().toString() + \", \" + pos.getCol().toString() + \") \";\n ret = ret + identifier.getType().toText(0);\n ret = ret + \"
\";\n }\n const vars = node.getData().vars;\n if (Object.keys(vars).length === 0) {\n ret = ret + sident + \"0 data definitions
\";\n }\n else {\n ret = ret + sident + \"Data:
\";\n }\n for (const name in vars) {\n const identifier = vars[name];\n ret = ret + sident + \"\" + this.escape(name.toLowerCase()) + \"\";\n const pos = identifier.getStart();\n ret = ret + \"(\" + pos.getRow().toString() + \", \" + pos.getCol().toString() + \") \";\n ret = ret + identifier.getType().toText(0);\n const meta = identifier.getMeta();\n if (meta) {\n ret = ret + \", \" + meta;\n }\n ret = ret + \"
\";\n }\n ret += sident + Object.keys(node.getData().cdefs).length + \" class definitions
\";\n ret += sident + node.getData().idefs.length + \" interface definitions
\";\n ret += sident + node.getData().forms.length + \" form definitions
\";\n ret += sident + node.getData().references.length + \" references
\";\n for (const r of node.getData().references) {\n ret += sident + \"  \" + r.referenceType + \", line \" + r.position.getStart().getRow() + \" \" + this.escape(r.position.getFilename()) + \" \" + this.escape(r.position.getName()) + \"
\";\n }\n return ret;\n }\n // todo, refactor, this method exists in multiple classes\n static escape(str) {\n str = str.replace(/&/g, \"&\");\n str = str.replace(/>/g, \">\");\n str = str.replace(/ { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Help = void 0;\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst dump_scope_1 = __webpack_require__(/*! ./dump_scope */ \"./node_modules/@abaplint/core/build/src/lsp/dump_scope.js\");\nclass Help {\n static find(reg, textDocument, position) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(reg, textDocument.uri);\n if (file === undefined) {\n return \"file not found\";\n }\n else {\n return this.dumpABAP(file, reg, textDocument, position);\n }\n }\n /////////////////////////////////////////////////\n static dumpABAP(file, reg, textDocument, position) {\n let content = \"\";\n content = `\r\n Tokens |\r\n Statements |\r\n Structure |\r\n Files |\r\n Info Dump\r\n
\r\n ` +\n \"\" + textDocument.uri + \" (\" +\n (position.line + 1) + \", \" +\n (position.character + 1) + \")\";\n content = content + \"
\";\n content = content + this.cursorInformation(reg, textDocument, position, file);\n content = content + this.fileInformation(file);\n content = content + \"
\";\n content = content + this.dumpFiles(reg);\n content = content + \"
\";\n content = content + this.dumpInfo(file);\n return content;\n }\n static dumpInfo(file) {\n const info = file.getInfo();\n const dump = {\n classDefinitions: info.listClassDefinitions(),\n classImplementations: info.listClassImplementations(),\n interfaceDefinitions: info.listInterfaceDefinitions(),\n forms: info.listFormDefinitions(),\n };\n const text = JSON.stringify(dump, null, 2);\n return `

Info Dump

` + text + \"
\";\n }\n static cursorInformation(reg, textDocument, position, file) {\n let ret = \"\";\n const found = _lsp_utils_1.LSPUtils.findCursor(reg, { textDocument, position });\n if (found !== undefined) {\n ret = \"Statement: \" + this.linkToStatement(found.snode.get()) + \"
\\n\" +\n \"Token: \" + found.token.constructor.name + \"
\\n\" +\n this.fullPath(file, found.token).value;\n }\n else {\n ret = \"No token found at cursor position\";\n }\n const obj = reg.getObject(file.getObjectType(), file.getObjectName());\n if (obj instanceof _abap_object_1.ABAPObject) {\n const spaghetti = new syntax_1.SyntaxLogic(reg, obj).run().spaghetti;\n ret = ret + dump_scope_1.DumpScope.dump(spaghetti);\n if (found !== undefined) {\n ret = ret + \"
Spaghetti Scope by Cursor Position:

\\n\";\n const lookup = spaghetti.lookupPosition(found.token.getStart(), textDocument.uri);\n if (lookup) {\n const identifier = lookup.getIdentifier();\n ret = ret + \"\" + identifier.stype + \", \" + identifier.sname + \", \" + identifier.filename;\n ret = ret + \", (\" + identifier.start.getRow() + \", \" + identifier.start.getCol() + \")
\";\n }\n else {\n ret = ret + \"Not found\";\n }\n }\n }\n return ret;\n }\n static fullPath(file, token) {\n const structure = file.getStructure();\n if (structure === undefined) {\n return { value: \"\", keyword: false };\n }\n const found = this.traverse(structure, \"\", token);\n if (found === undefined) {\n return { value: \"\", keyword: false };\n }\n return { value: \"\\n\\n\" + found.value, keyword: found.keyword };\n }\n static traverse(node, parents, search) {\n let local = parents;\n if (local !== \"\") {\n local = local + \" -> \";\n }\n if (node instanceof nodes_1.StructureNode) {\n local = local + \"Structure: \" + this.linkToStructure(node.get());\n }\n else if (node instanceof nodes_1.StatementNode) {\n local = local + \"Statement: \" + this.linkToStatement(node.get());\n }\n else if (node instanceof nodes_1.ExpressionNode) {\n local = local + \"Expression: \" + this.linkToExpression(node.get());\n }\n else if (node instanceof nodes_1.TokenNode) {\n local = local + \"Token: \" + node.get().constructor.name;\n const token = node.get();\n if (token.getStr() === search.getStr()\n && token.getCol() === search.getCol()\n && token.getRow() === search.getRow()) {\n const keyword = !(node instanceof nodes_1.TokenNodeRegex);\n return { value: local, keyword };\n }\n }\n else {\n throw new Error(\"hover, traverse, unexpected node type\");\n }\n for (const child of node.getChildren()) {\n const ret = this.traverse(child, local, search);\n if (ret) {\n return ret;\n }\n }\n return undefined;\n }\n static fileInformation(file) {\n let content = \"\";\n content = content + `

Tokens

\\n`;\n content = content + this.tokens(file);\n content = content + `

Statements

\\n`;\n content = content + this.buildStatements(file);\n content = content + `

Structure

\\n`;\n const structure = file.getStructure();\n if (structure !== undefined) {\n content = content + this.buildStructure([structure]);\n }\n else {\n content = content + \"structure undefined\";\n }\n return content;\n }\n static escape(str) {\n str = str.replace(/&/g, \"&\");\n str = str.replace(/>/g, \">\");\n str = str.replace(/${statement.constructor.name}\\n`;\n }\n static linkToStructure(structure) {\n return `${structure.constructor.name}\\n`;\n }\n static linkToExpression(expression) {\n return `${expression.constructor.name}\\n`;\n }\n static outputNodes(nodes) {\n let ret = \"\";\n }\n static tokens(file) {\n let inner = \"\";\n for (const token of file.getTokens()) {\n inner = inner + \"\";\n }\n inner = inner + \"
StringTypeRowColumn
\" +\n this.escape(token.getStr()) + \"\" +\n token.constructor.name + \"\" +\n token.getRow() + \"\" +\n token.getCol() + \"
\";\n return inner;\n }\n static buildStatements(file) {\n let output = \"\";\n for (const statement of file.getStatements()) {\n const row = statement.getStart().getRow();\n // getting the class name only works if uglify does not mangle names\n output = output +\n row + \": \" +\n this.linkToStatement(statement.get()) +\n \"\\n\" + this.outputNodes(statement.getChildren());\n }\n return output;\n }\n static buildStructure(nodes) {\n let output = \"\";\n }\n static dumpFiles(reg) {\n let output = `

Files

\\n`;\n for (const o of reg.getObjects()) {\n if (reg.isDependency(o) === true) {\n continue;\n }\n output = output + \"\\n\";\n }\n return output + \"
\" + o.getType() + \" \" + o.getName() + \"\";\n for (const f of o.getFiles()) {\n output = output + f.getFilename() + \"
\";\n }\n output = output + \"
\\n\";\n }\n}\nexports.Help = Help;\n//# sourceMappingURL=help.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/help.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/highlight.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/highlight.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Highlight = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nclass Highlight {\n constructor(reg) {\n this.reg = reg;\n }\n listDefinitionPositions(textDocument) {\n const spaghetti = this.runSyntax(textDocument);\n if (spaghetti === undefined) {\n return [];\n }\n const defs = spaghetti.listDefinitions(textDocument.uri);\n const ret = [];\n for (const d of defs) {\n ret.push(_lsp_utils_1.LSPUtils.tokenToRange(d.identifier.getToken()));\n }\n return ret;\n }\n listReadPositions(textDocument) {\n const spaghetti = this.runSyntax(textDocument);\n if (spaghetti === undefined) {\n return [];\n }\n const reads = spaghetti.listReadPositions(textDocument.uri);\n const ret = [];\n for (const d of reads) {\n ret.push(_lsp_utils_1.LSPUtils.tokenToRange(d.getToken()));\n }\n return ret;\n }\n listWritePositions(textDocument) {\n const spaghetti = this.runSyntax(textDocument);\n if (spaghetti === undefined) {\n return [];\n }\n const writes = spaghetti.listWritePositions(textDocument.uri);\n const ret = [];\n for (const d of writes) {\n ret.push(_lsp_utils_1.LSPUtils.tokenToRange(d.getToken()));\n }\n return ret;\n }\n ////////////////////////\n runSyntax(textDocument) {\n const obj = this.findObject(textDocument);\n if (obj === undefined) {\n return undefined;\n }\n return new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti;\n }\n findObject(textDocument) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, textDocument.uri);\n if (file === undefined) {\n return undefined;\n }\n const obj = this.reg.getObject(file.getObjectType(), file.getObjectName());\n if (obj instanceof _abap_object_1.ABAPObject) {\n return obj;\n }\n else {\n return undefined;\n }\n }\n}\nexports.Highlight = Highlight;\n//# sourceMappingURL=highlight.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/highlight.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/hover.js": +/*!************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/hover.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Hover = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst Tokens = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _lookup_1 = __webpack_require__(/*! ./_lookup */ \"./node_modules/@abaplint/core/build/src/lsp/_lookup.js\");\nclass Hover {\n constructor(reg) {\n this.reg = reg;\n }\n find(pos) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, pos.textDocument.uri);\n if (file === undefined) {\n return undefined;\n }\n const obj = this.reg.getObject(file.getObjectType(), file.getObjectName());\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return undefined;\n }\n const found = _lsp_utils_1.LSPUtils.findCursor(this.reg, pos);\n if (found === undefined) {\n return undefined;\n }\n else if (found.token instanceof Tokens.StringTemplate\n || found.token instanceof Tokens.StringTemplateBegin\n || found.token instanceof Tokens.StringTemplateEnd\n || found.token instanceof Tokens.StringTemplateMiddle) {\n return { kind: LServer.MarkupKind.Markdown, value: \"String Template\" };\n }\n else if (found.token instanceof Tokens.Comment) {\n let type = \"Comment\";\n if (found.token.getStr().startsWith(`\"!`)) {\n type = \"ABAP Doc Comment\";\n }\n return { kind: LServer.MarkupKind.Markdown, value: type };\n }\n const lookup = _lookup_1.LSPLookup.lookup(found, this.reg, obj);\n if (lookup === null || lookup === void 0 ? void 0 : lookup.hover) {\n return { kind: LServer.MarkupKind.Markdown, value: lookup.hover };\n }\n if (found.token instanceof Tokens.StringToken) {\n return { kind: LServer.MarkupKind.Markdown, value: \"String\" };\n }\n return undefined;\n }\n}\nexports.Hover = Hover;\n//# sourceMappingURL=hover.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/hover.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/implementation.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/implementation.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Implementation = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst _lookup_1 = __webpack_require__(/*! ./_lookup */ \"./node_modules/@abaplint/core/build/src/lsp/_lookup.js\");\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\n// note: finding implementations might be slow, ie finding method implementations currently searches the full registry\n// go to implementation\nclass Implementation {\n constructor(reg) {\n this.reg = reg;\n }\n find(textDocument, position) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, textDocument.uri);\n if (file === undefined) {\n return [];\n }\n const obj = this.reg.getObject(file.getObjectType(), file.getObjectName());\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const found = _lsp_utils_1.LSPUtils.findCursor(this.reg, { textDocument, position });\n if (found === undefined) {\n return [];\n }\n const lookup = _lookup_1.LSPLookup.lookup(found, this.reg, obj);\n if (lookup === null || lookup === void 0 ? void 0 : lookup.implementation) {\n return [lookup === null || lookup === void 0 ? void 0 : lookup.implementation];\n }\n if ((lookup === null || lookup === void 0 ? void 0 : lookup.definitionId) instanceof types_1.MethodDefinition) {\n return this.findMethodImplementations(lookup.definitionId);\n }\n return [];\n }\n findMethodImplementations(def) {\n const ret = [];\n // note that this searches _everything_\n for (const obj of this.reg.getObjects()) {\n if (this.reg.isDependency(obj) || !(obj instanceof _abap_object_1.ABAPObject)) {\n continue;\n }\n const found = this.searchReferences(new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop(), def);\n ret.push(...found);\n }\n return ret;\n }\n searchReferences(scope, id) {\n const ret = [];\n for (const r of scope.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.MethodImplementationReference\n && r.resolved\n && r.resolved.getFilename() === id.getFilename()\n && r.resolved.getStart().equals(id.getStart())) {\n ret.push(_lsp_utils_1.LSPUtils.identiferToLocation(r.position));\n }\n }\n for (const c of scope.getChildren()) {\n ret.push(...this.searchReferences(c, id));\n }\n return ret;\n }\n}\nexports.Implementation = Implementation;\n//# sourceMappingURL=implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/inlay_hints.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/inlay_hints.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlayHints = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nclass InlayHints {\n constructor(reg) {\n this.reg = reg;\n }\n list(textDocument, settings = { inferredTypes: true }) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, textDocument.uri);\n if (file === undefined) {\n return [];\n }\n const obj = this.reg.findObjectForFile(file);\n if (obj === undefined || !(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const top = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop();\n const ret = [];\n if (settings.inferredTypes === true) {\n const implicit = this.findImplicitReferences(top);\n for (const i of implicit) {\n let label = undefined;\n if (i.resolved instanceof _typed_identifier_1.TypedIdentifier) {\n label = \"TYPE \" + i.resolved.getType().toABAP();\n }\n else if (i.resolved instanceof types_1.ClassDefinition) {\n label = \"TYPE REF TO \" + i.resolved.getName();\n }\n if (label === undefined) {\n continue;\n }\n ret.push({\n label: label,\n tooltip: \"Inferred type\",\n kind: LServer.InlayHintKind.Type,\n paddingLeft: true,\n paddingRight: true,\n position: _lsp_utils_1.LSPUtils.positionToLS(i.position.getEnd()),\n });\n }\n }\n return ret;\n }\n findImplicitReferences(node) {\n const ret = [];\n for (const r of node.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.InferredType) {\n ret.push(r);\n }\n }\n for (const c of node.getChildren()) {\n ret.push(...this.findImplicitReferences(c));\n }\n return ret;\n }\n}\nexports.InlayHints = InlayHints;\n//# sourceMappingURL=inlay_hints.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/inlay_hints.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/language_server.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/language_server.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LanguageServer = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst symbols_1 = __webpack_require__(/*! ./symbols */ \"./node_modules/@abaplint/core/build/src/lsp/symbols.js\");\nconst hover_1 = __webpack_require__(/*! ./hover */ \"./node_modules/@abaplint/core/build/src/lsp/hover.js\");\nconst diagnostics_1 = __webpack_require__(/*! ./diagnostics */ \"./node_modules/@abaplint/core/build/src/lsp/diagnostics.js\");\nconst help_1 = __webpack_require__(/*! ./help */ \"./node_modules/@abaplint/core/build/src/lsp/help.js\");\nconst pretty_printer_1 = __webpack_require__(/*! ../pretty_printer/pretty_printer */ \"./node_modules/@abaplint/core/build/src/pretty_printer/pretty_printer.js\");\nconst definition_1 = __webpack_require__(/*! ./definition */ \"./node_modules/@abaplint/core/build/src/lsp/definition.js\");\nconst rename_1 = __webpack_require__(/*! ./rename */ \"./node_modules/@abaplint/core/build/src/lsp/rename.js\");\nconst highlight_1 = __webpack_require__(/*! ./highlight */ \"./node_modules/@abaplint/core/build/src/lsp/highlight.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst code_actions_1 = __webpack_require__(/*! ./code_actions */ \"./node_modules/@abaplint/core/build/src/lsp/code_actions.js\");\nconst references_1 = __webpack_require__(/*! ./references */ \"./node_modules/@abaplint/core/build/src/lsp/references.js\");\nconst implementation_1 = __webpack_require__(/*! ./implementation */ \"./node_modules/@abaplint/core/build/src/lsp/implementation.js\");\nconst semantic_1 = __webpack_require__(/*! ./semantic */ \"./node_modules/@abaplint/core/build/src/lsp/semantic.js\");\nconst statement_flow_1 = __webpack_require__(/*! ../abap/flow/statement_flow */ \"./node_modules/@abaplint/core/build/src/abap/flow/statement_flow.js\");\nconst code_lens_1 = __webpack_require__(/*! ./code_lens */ \"./node_modules/@abaplint/core/build/src/lsp/code_lens.js\");\nconst inlay_hints_1 = __webpack_require__(/*! ./inlay_hints */ \"./node_modules/@abaplint/core/build/src/lsp/inlay_hints.js\");\n// note Ranges are zero based in LSP,\n// https://github.com/microsoft/language-server-protocol/blob/main/versions/protocol-2-x.md#range\n// but 1 based in abaplint\n// the types in this file are not completely correct\n// see https://github.com/microsoft/vscode-languageserver-node/issues/354\nclass LanguageServer {\n constructor(reg) {\n this.reg = reg;\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_documentSymbol\n documentSymbol(params) {\n return new symbols_1.Symbols(this.reg).find(params.textDocument.uri);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_hover\n hover(params) {\n const hover = new hover_1.Hover(this.reg).find(params);\n if (hover) {\n return { contents: hover };\n }\n return undefined;\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_definition\n gotoDefinition(params) {\n return new definition_1.Definition(this.reg).find(params.textDocument, params.position);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_formatting\n documentFormatting(params) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, params.textDocument.uri);\n if (file === undefined) {\n return [];\n }\n const text = new pretty_printer_1.PrettyPrinter(file, this.reg.getConfig()).run();\n const rows = file.getRawRows();\n if (text === file.getRaw()) {\n return [];\n }\n else {\n return [{\n range: LServer.Range.create(0, 0, rows.length, rows[rows.length - 1].length + 1),\n newText: text,\n }];\n }\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_publishDiagnostics\n diagnostics(textDocument) {\n return new diagnostics_1.Diagnostics(this.reg).find(textDocument);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_prepareRename\n prepareRename(params) {\n return new rename_1.Rename(this.reg).prepareRename(params);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_rename\n rename(params) {\n return new rename_1.Rename(this.reg).rename(params);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_codeAction\n codeActions(params) {\n return new code_actions_1.CodeActions(this.reg).find(params);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_documentHighlight\n documentHighlight(_params) {\n // todo, implement\n return [];\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_implementation\n implementation(params) {\n return new implementation_1.Implementation(this.reg).find(params.textDocument, params.position);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textDocument_references\n references(params) {\n return new references_1.References(this.reg).references(params);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#semanticTokensLegend\n static semanticTokensLegend() {\n return semantic_1.SemanticHighlighting.semanticTokensLegend();\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#semanticTokensRangeParams\n semanticTokensRange(range) {\n return new semantic_1.SemanticHighlighting(this.reg).semanticTokensRange(range);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_codeLens\n codeLens(textDocument, settings) {\n return new code_lens_1.CodeLens(this.reg).list(textDocument, settings);\n }\n // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_inlayHint\n inlayHints(textDocument, settings) {\n return new inlay_hints_1.InlayHints(this.reg).list(textDocument, settings);\n }\n ////////////////////////////////////////\n // ______ _\n // | ____| | |\n // | |__ __ _| |_ _ __ __ ___\n // | __| \\ \\/ / __| '__/ _` / __|\n // | |____ > <| |_| | | (_| \\__ \\\n // |______/_/\\_\\\\__|_| \\__,_|___/\n // extras, abaplint specific\n ////////////////////////////////////////\n help(textDocument, position) {\n return help_1.Help.find(this.reg, textDocument, position);\n }\n listDefinitionPositions(textDocument) {\n return new highlight_1.Highlight(this.reg).listDefinitionPositions(textDocument);\n }\n listReadPositions(textDocument) {\n return new highlight_1.Highlight(this.reg).listReadPositions(textDocument);\n }\n listWritePositions(textDocument) {\n return new highlight_1.Highlight(this.reg).listWritePositions(textDocument);\n }\n dumpStatementFlows(textDocument) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, textDocument.uri);\n if (file === undefined) {\n return \"file not found\";\n }\n const stru = file.getStructure();\n if (stru === undefined) {\n return \"empty structure\";\n }\n const graphs = new statement_flow_1.StatementFlow().build(stru);\n const wiz = graphs.map(g => g.toDigraph());\n return JSON.stringify(wiz);\n }\n}\nexports.LanguageServer = LanguageServer;\n//# sourceMappingURL=language_server.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/language_server.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/references.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/references.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.References = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _lookup_1 = __webpack_require__(/*! ./_lookup */ \"./node_modules/@abaplint/core/build/src/lsp/_lookup.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nclass References {\n constructor(reg) {\n this.reg = reg;\n }\n references(pos) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, pos.textDocument.uri);\n if (file === undefined) {\n return [];\n }\n const obj = this.reg.getObject(file.getObjectType(), file.getObjectName());\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const found = _lsp_utils_1.LSPUtils.findCursor(this.reg, pos);\n if ((found === null || found === void 0 ? void 0 : found.identifier) === undefined) {\n return [];\n }\n const lookup = _lookup_1.LSPLookup.lookup(found, this.reg, obj);\n if ((lookup === null || lookup === void 0 ? void 0 : lookup.definitionId) === undefined || (lookup === null || lookup === void 0 ? void 0 : lookup.scope) === undefined) {\n return [];\n }\n const locs = this.search(lookup.definitionId, lookup.scope);\n return locs.map(_lsp_utils_1.LSPUtils.identiferToLocation);\n }\n // todo, cleanup this mehtod, some of the method parameters are not used anymore?\n search(identifier, node, exitAfterFound = false, removeDuplicates = true) {\n let ret = [];\n // todo, this first assumes that the identifier is a variable?\n const stype = node.getIdentifier().stype;\n if (stype === _scope_type_1.ScopeType.Method || stype === _scope_type_1.ScopeType.FunctionModule || stype === _scope_type_1.ScopeType.Form) {\n ret = this.findReferences(node, identifier);\n }\n if (ret.length > 1 && exitAfterFound === true) {\n return ret;\n }\n for (const o of this.reg.getObjects()) {\n if (o instanceof _abap_object_1.ABAPObject) {\n if (this.reg.isDependency(o)) {\n continue; // do not search in dependencies\n }\n ret.push(...this.findReferences(new syntax_1.SyntaxLogic(this.reg, o).run().spaghetti.getTop(), identifier));\n }\n }\n // remove duplicates, might be a changing(read and write) position\n if (removeDuplicates === true) {\n return this.removeDuplicates(ret);\n }\n else {\n return ret;\n }\n }\n ////////////////////////////////////////////\n removeDuplicates(arr) {\n const values = {};\n return arr.filter(item => {\n const val = item.getStart().getCol() + \"_\" + item.getStart().getRow() + \"_\" + item.getFilename();\n const exists = values[val];\n values[val] = true;\n return !exists;\n });\n }\n findReferences(node, identifier) {\n var _a;\n const ret = [];\n if (node.getIdentifier().stype !== _scope_type_1.ScopeType.BuiltIn) {\n const upper = identifier.getName().toUpperCase();\n // this is for finding the definitions\n const vars = node.getData().vars;\n const vid = vars[upper];\n if (vid === null || vid === void 0 ? void 0 : vid.equals(identifier)) {\n ret.push(vid);\n }\n // this is for finding the definitions\n const types = node.getData().types;\n const tid = types[upper];\n if (tid === null || tid === void 0 ? void 0 : tid.equals(identifier)) {\n ret.push(tid);\n }\n for (const r of node.getData().references) {\n if ((_a = r.resolved) === null || _a === void 0 ? void 0 : _a.equals(identifier)) {\n ret.push(r.position);\n }\n }\n }\n for (const c of node.getChildren()) {\n ret.push(...this.findReferences(c, identifier));\n }\n return ret;\n }\n}\nexports.References = References;\n//# sourceMappingURL=references.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/references.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/rename.js": +/*!*************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/rename.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Rename = exports.RenameType = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _lookup_1 = __webpack_require__(/*! ./_lookup */ \"./node_modules/@abaplint/core/build/src/lsp/_lookup.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst references_1 = __webpack_require__(/*! ./references */ \"./node_modules/@abaplint/core/build/src/lsp/references.js\");\nconst renamer_1 = __webpack_require__(/*! ../objects/rename/renamer */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer.js\");\nconst definition_1 = __webpack_require__(/*! ./definition */ \"./node_modules/@abaplint/core/build/src/lsp/definition.js\");\nvar RenameType;\n(function (RenameType) {\n RenameType[RenameType[\"GlobalClass\"] = 1] = \"GlobalClass\";\n RenameType[RenameType[\"Variable\"] = 2] = \"Variable\";\n RenameType[RenameType[\"GlobalInterface\"] = 3] = \"GlobalInterface\";\n RenameType[RenameType[\"Method\"] = 4] = \"Method\";\n})(RenameType || (exports.RenameType = RenameType = {}));\nclass Rename {\n constructor(reg) {\n this.reg = reg;\n }\n prepareRename(params) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, params.textDocument.uri);\n if (file === undefined) {\n return undefined;\n }\n const obj = this.reg.getObject(file.getObjectType(), file.getObjectName());\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return undefined;\n }\n const cursor = _lsp_utils_1.LSPUtils.findCursor(this.reg, params);\n if (cursor === undefined) {\n return undefined;\n }\n const range = _lsp_utils_1.LSPUtils.tokenToRange(cursor.token);\n let placeholder = cursor.token.getStr();\n if (placeholder.startsWith(\"!\")) {\n placeholder = placeholder.substring(1);\n range.start.character += 1;\n }\n const lookup = _lookup_1.LSPLookup.lookup(cursor, this.reg, obj);\n if ((lookup === null || lookup === void 0 ? void 0 : lookup.definitionId) instanceof _typed_identifier_1.TypedIdentifier) {\n return { range, placeholder, type: RenameType.Variable, file };\n }\n else if ((lookup === null || lookup === void 0 ? void 0 : lookup.definitionId) instanceof types_1.ClassDefinition) {\n return { range, placeholder, type: RenameType.GlobalClass, file };\n }\n else if ((lookup === null || lookup === void 0 ? void 0 : lookup.definitionId) instanceof types_1.InterfaceDefinition) {\n return { range, placeholder, type: RenameType.GlobalInterface, file };\n }\n else if ((lookup === null || lookup === void 0 ? void 0 : lookup.definitionId) instanceof types_1.MethodDefinition) {\n return { range, placeholder, type: RenameType.Method, file };\n }\n return undefined;\n }\n rename(params) {\n const prepare = this.prepareRename(params);\n if (prepare === undefined) {\n return undefined;\n }\n switch (prepare.type) {\n case RenameType.GlobalClass:\n return new renamer_1.Renamer(this.reg).buildEdits(\"CLAS\", prepare.placeholder, params.newName);\n case RenameType.GlobalInterface:\n return new renamer_1.Renamer(this.reg).buildEdits(\"INTF\", prepare.placeholder, params.newName);\n case RenameType.Variable:\n return this.renameVariable(params);\n case RenameType.Method:\n return this.renameMethod(params);\n default:\n return undefined;\n }\n }\n ////\n renameVariable(params) {\n var _a;\n const workspace = { documentChanges: [] };\n const refs = new references_1.References(this.reg).references(params);\n for (const r of refs) {\n const doc = { uri: r.uri, version: 1 };\n const edit = LServer.TextDocumentEdit.create(doc, [LServer.TextEdit.replace(r.range, params.newName)]);\n (_a = workspace.documentChanges) === null || _a === void 0 ? void 0 : _a.push(edit);\n }\n return workspace;\n }\n renameMethod(params) {\n var _a, _b;\n const workspace = { documentChanges: [] };\n const refs = new references_1.References(this.reg).references(params);\n for (const r of refs) {\n const doc = { uri: r.uri, version: 1 };\n const edit = LServer.TextDocumentEdit.create(doc, [LServer.TextEdit.replace(r.range, params.newName)]);\n (_a = workspace.documentChanges) === null || _a === void 0 ? void 0 : _a.push(edit);\n }\n const def = new definition_1.Definition(this.reg).find(params.textDocument, params.position);\n if (def) {\n const doc = { uri: params.textDocument.uri, version: 1 };\n const edit = LServer.TextDocumentEdit.create(doc, [LServer.TextEdit.replace(def === null || def === void 0 ? void 0 : def.range, params.newName)]);\n (_b = workspace.documentChanges) === null || _b === void 0 ? void 0 : _b.push(edit);\n }\n return workspace;\n }\n}\nexports.Rename = Rename;\n//# sourceMappingURL=rename.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/rename.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/semantic.js": +/*!***************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/semantic.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SemanticHighlighting = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst SOURCE_ABAP = \"source.abap\";\nconst BLOCK_ABAP = \"storage.type.block.abap\";\nclass SemanticHighlighting {\n constructor(reg) {\n this.reg = reg;\n SemanticHighlighting.initLegend();\n }\n static semanticTokensLegend() {\n // https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide#semantic-token-scope-map\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#semanticTokenTypes\n this.initLegend();\n return {\n tokenTypes: SemanticHighlighting.tokenTypes,\n tokenModifiers: [],\n };\n }\n static initLegend() {\n if (SemanticHighlighting.tokenTypes.length === 0) {\n SemanticHighlighting.tokenTypeMap = {};\n SemanticHighlighting.tokenTypeMap[SOURCE_ABAP] = SemanticHighlighting.tokenTypes.length;\n SemanticHighlighting.tokenTypes.push(SOURCE_ABAP);\n SemanticHighlighting.tokenTypeMap[BLOCK_ABAP] = SemanticHighlighting.tokenTypes.length;\n SemanticHighlighting.tokenTypes.push(BLOCK_ABAP);\n for (const t in LServer.SemanticTokenTypes) {\n SemanticHighlighting.tokenTypeMap[t] = SemanticHighlighting.tokenTypes.length;\n SemanticHighlighting.tokenTypes.push(t);\n }\n }\n }\n // https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#textDocument_semanticTokens\n semanticTokensRange(range) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, range.textDocument.uri);\n if (file === undefined) {\n return { data: [] };\n }\n const rangeStartPosition = new position_1.Position(range.start.line + 1, range.start.character + 1);\n const rangeEndPosition = new position_1.Position(range.end.line + 1, range.end.character + 1);\n const tokens = [];\n for (const s of file.getStatements()) {\n if (s.getFirstToken().getStart() instanceof position_1.VirtualPosition) {\n continue;\n }\n else if (s.getFirstToken().getStart().isAfter(rangeEndPosition)) {\n break;\n }\n else if (s.getLastToken().getEnd().isBefore(rangeStartPosition)) {\n continue;\n }\n const statementInstance = s.get();\n for (const t of s.getTokenNodes()) {\n const tokenInstance = t.get();\n let tokenType = LServer.SemanticTokenTypes.keyword;\n if (tokenInstance instanceof tokens_1.Punctuation) {\n tokenType = SOURCE_ABAP;\n }\n else if (statementInstance instanceof Statements.Public\n || statementInstance instanceof Statements.Private\n || statementInstance instanceof Statements.Protected\n || statementInstance instanceof Statements.ClassDefinition\n || statementInstance instanceof Statements.ClassImplementation\n || statementInstance instanceof Statements.MethodImplementation\n || statementInstance instanceof Statements.EndMethod\n || statementInstance instanceof Statements.EndClass\n || statementInstance instanceof Statements.Interface\n || statementInstance instanceof Statements.EndInterface\n || statementInstance instanceof Statements.Form\n || statementInstance instanceof Statements.EndForm) {\n tokenType = BLOCK_ABAP;\n }\n else if (tokenInstance instanceof tokens_1.StringToken\n || tokenInstance instanceof tokens_1.StringTemplate\n || tokenInstance instanceof tokens_1.StringTemplateBegin\n || tokenInstance instanceof tokens_1.StringTemplateEnd\n || tokenInstance instanceof tokens_1.StringTemplateMiddle) {\n tokenType = LServer.SemanticTokenTypes.string;\n }\n else if (tokenInstance instanceof tokens_1.Comment) {\n tokenType = LServer.SemanticTokenTypes.comment;\n }\n else if (t instanceof nodes_1.TokenNodeRegex) {\n tokenType = SOURCE_ABAP;\n }\n const token = t.getFirstToken();\n tokens.push({\n line: token.getStart().getRow() - 1,\n startChar: token.getStart().getCol() - 1,\n length: token.getStr().length,\n tokenType: tokenType,\n tokenModifiers: [],\n });\n }\n }\n return { data: this.encodeTokens(tokens) };\n }\n encodeTokens(tokens) {\n const ret = [];\n let prevLine = undefined;\n let prevChar = undefined;\n for (const t of tokens) {\n if (prevLine === undefined) {\n ret.push(t.line);\n }\n else {\n ret.push(t.line - prevLine);\n }\n if (prevLine === t.line && prevChar) {\n ret.push(t.startChar - prevChar);\n }\n else {\n ret.push(t.startChar); // todo, delta?\n }\n ret.push(t.length);\n ret.push(SemanticHighlighting.tokenTypeMap[t.tokenType]);\n ret.push(0); // no modifier logic implemented yet\n prevLine = t.line;\n prevChar = t.startChar;\n }\n return ret;\n }\n}\nexports.SemanticHighlighting = SemanticHighlighting;\nSemanticHighlighting.tokenTypes = [];\n//# sourceMappingURL=semantic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/semantic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/lsp/symbols.js": +/*!**************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/lsp/symbols.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Symbols = void 0;\nconst LServer = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ./_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nclass Symbols {\n constructor(reg) {\n this.reg = reg;\n }\n find(uri) {\n const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, uri);\n if (file === undefined) {\n return [];\n }\n const ret = [];\n ret.push(...this.outputClasses(file));\n ret.push(...this.outputForms(file));\n return ret;\n }\n selectionRange(identifier) {\n const pos = identifier.getStart();\n const str = identifier.getName();\n return LServer.Range.create(pos.getRow() - 1, pos.getCol() - 1, pos.getRow() - 1, pos.getCol() - 1 + str.length);\n }\n range(identifer) {\n const start = identifer.getStart();\n const end = identifer.getEnd();\n return LServer.Range.create(start.getRow() - 1, start.getCol() - 1, end.getRow() - 1, end.getCol() - 1);\n }\n newSymbol(identifier, kind, children) {\n const symbol = {\n name: identifier.getName(),\n kind: kind,\n range: this.range(identifier),\n selectionRange: this.selectionRange(identifier),\n children,\n };\n return symbol;\n }\n outputForms(file) {\n const ret = [];\n for (const form of file.getInfo().listFormDefinitions()) {\n const symbol = this.newSymbol(form.identifier, LServer.SymbolKind.Function, []);\n ret.push(symbol);\n }\n return ret;\n }\n outputClasses(file) {\n const ret = [];\n for (const cla of file.getInfo().listClassDefinitions()) {\n const children = [];\n children.push(...this.outputClassAttributes(cla.attributes));\n children.push(...this.outputMethodDefinitions(cla.methods));\n const symbol = this.newSymbol(cla.identifier, LServer.SymbolKind.Class, children);\n ret.push(symbol);\n }\n for (const cla of file.getInfo().listClassImplementations()) {\n const children = [];\n children.push(...this.outputMethodImplementations(cla.methods));\n const symbol = this.newSymbol(cla.identifier, LServer.SymbolKind.Class, children);\n ret.push(symbol);\n }\n return ret;\n }\n outputMethodImplementations(methods) {\n const ret = [];\n for (const method of methods) {\n const symbol = this.newSymbol(method, LServer.SymbolKind.Method, []);\n ret.push(symbol);\n }\n return ret;\n }\n outputClassAttributes(attr) {\n if (attr === undefined) {\n return [];\n }\n const ret = [];\n for (const id of attr) {\n ret.push(this.newSymbol(id.identifier, LServer.SymbolKind.Property, []));\n }\n // todo, also add constants\n return ret;\n }\n outputMethodDefinitions(methods) {\n if (methods === undefined) {\n return [];\n }\n // todo\n return [];\n }\n}\nexports.Symbols = Symbols;\n//# sourceMappingURL=symbols.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/lsp/symbols.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/msag_references.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/msag_references.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MSAGReferences = void 0;\nclass MSAGReferences {\n constructor() {\n this.nameNumberIndex = {};\n this.filenameIndex = {};\n }\n addUsing(filename, token, messageClass, number) {\n if (this.filenameIndex[filename] === undefined) {\n this.filenameIndex[filename] = [];\n }\n this.filenameIndex[filename].push({\n token: token,\n messageClass: messageClass,\n number: number,\n });\n if (this.nameNumberIndex[messageClass] === undefined) {\n this.nameNumberIndex[messageClass] = {};\n }\n if (this.nameNumberIndex[messageClass][number] === undefined) {\n this.nameNumberIndex[messageClass][number] = [];\n }\n this.nameNumberIndex[messageClass][number].push({\n filename: filename,\n token: token,\n });\n }\n clear(obj) {\n for (const file of obj.getFiles()) {\n const filename = file.getFilename();\n for (const fIndex of this.filenameIndex[filename] || []) {\n // this should be okay for performance, each message should be referenced less than 10 times typically\n this.nameNumberIndex[fIndex.messageClass][fIndex.number] =\n this.nameNumberIndex[fIndex.messageClass][fIndex.number].filter(i => i.filename !== filename);\n }\n delete this.filenameIndex[filename];\n }\n }\n listByFilename(filename) {\n return this.filenameIndex[filename] || [];\n }\n listByMessage(messageClass, number) {\n var _a;\n return ((_a = this.nameNumberIndex[messageClass]) === null || _a === void 0 ? void 0 : _a[number]) || [];\n }\n}\nexports.MSAGReferences = MSAGReferences;\n//# sourceMappingURL=msag_references.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/msag_references.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/_abap_object.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/_abap_object.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nconst abap_parser_1 = __webpack_require__(/*! ../abap/abap_parser */ \"./node_modules/@abaplint/core/build/src/abap/abap_parser.js\");\nclass ABAPObject extends _abstract_object_1.AbstractObject {\n constructor(name) {\n super(name);\n this.parsed = [];\n this.texts = undefined;\n }\n static is(x) {\n return !!x && x instanceof ABAPObject;\n }\n parse(version, globalMacros, reg) {\n if (this.isDirty() === false) {\n return { updated: false, runtime: 0 };\n }\n const abapFiles = this.getFiles().filter(f => f.getFilename().endsWith(\".abap\"));\n const result = new abap_parser_1.ABAPParser(version, globalMacros, reg).parse(abapFiles);\n this.parsed = result.output;\n this.old = result.issues;\n this.dirty = false;\n return { updated: true, runtime: result.runtime, runtimeExtra: result.runtimeExtra };\n }\n setDirty() {\n this.syntaxResult = undefined;\n this.texts = undefined;\n super.setDirty();\n }\n getABAPFiles() {\n return this.parsed;\n }\n getABAPFileByName(filename) {\n for (const p of this.parsed) {\n if (p.getFilename() === filename) {\n return p;\n }\n }\n return undefined;\n }\n getMainABAPFile() {\n // todo, uris, https://github.com/abaplint/abaplint/issues/673\n const search = this.getName().replace(/\\//g, \"#\").toLowerCase() + \".\" + this.getType().toLowerCase() + \".abap\";\n for (const file of this.getABAPFiles()) {\n if (file.getFilename().endsWith(search)) {\n return file;\n }\n }\n // uri fallback,\n for (const file of this.getABAPFiles()) {\n if (file.getFilename().endsWith(\".abap\")) {\n return file;\n }\n }\n return undefined;\n }\n getTexts() {\n if (this.texts === undefined) {\n this.findTexts(this.parseRaw2());\n }\n return this.texts;\n }\n findTexts(parsed) {\n var _a, _b, _c, _d;\n this.texts = {};\n if (((_d = (_c = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a[\"asx:abap\"]) === null || _b === void 0 ? void 0 : _b[\"asx:values\"]) === null || _c === void 0 ? void 0 : _c.TPOOL) === null || _d === void 0 ? void 0 : _d.item) === undefined) {\n return;\n }\n for (const t of (0, xml_utils_1.xmlToArray)(parsed.abapGit[\"asx:abap\"][\"asx:values\"].TPOOL.item)) {\n if ((t === null || t === void 0 ? void 0 : t.ID) === \"I\") {\n if (t.KEY === undefined) {\n throw new Error(\"findTexts, undefined\");\n }\n const key = t.KEY;\n if (key === undefined) {\n continue;\n }\n this.texts[key.toUpperCase()] = t.ENTRY ? (0, xml_utils_1.unescape)(t.ENTRY) : \"\";\n }\n }\n }\n}\nexports.ABAPObject = ABAPObject;\n//# sourceMappingURL=_abap_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/_abap_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/_abstract_object.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AbstractObject = void 0;\nconst fast_xml_parser_1 = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\nconst _identifier_1 = __webpack_require__(/*! ../abap/4_file_information/_identifier */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js\");\nconst identifier_1 = __webpack_require__(/*! ../abap/1_lexer/tokens/identifier */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/identifier.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass AbstractObject {\n constructor(name) {\n this.name = name;\n this.files = [];\n this.old = [];\n this.dirty = false;\n }\n getParsingIssues() {\n return this.old;\n }\n parse(_version, _globalMacros, _reg) {\n return { updated: false, runtime: 0 };\n }\n getName() {\n return this.name;\n }\n setDirty() {\n this.dirty = true;\n }\n addFile(file) {\n this.setDirty();\n this.files.push(file);\n }\n getFiles() {\n return this.files;\n }\n containsFile(filename) {\n for (const f of this.files) {\n if (f.getFilename() === filename) {\n return true;\n }\n }\n return false;\n }\n removeFile(file) {\n this.setDirty();\n for (let i = 0; i < this.files.length; i++) {\n if (this.files[i].getFilename() === file.getFilename()) {\n this.files.splice(i, 1);\n return;\n }\n }\n throw new Error(\"removeFile: file not found\");\n }\n isDirty() {\n return this.dirty;\n }\n getIdentifier() {\n // this method can be redefined in each object type to give a better result\n const file = this.getXMLFile();\n if (file === undefined) {\n return undefined;\n }\n return new _identifier_1.Identifier(new identifier_1.Identifier(new position_1.Position(1, 1), this.getName()), file.getFilename());\n }\n getXMLFile() {\n // todo, https://github.com/abaplint/abaplint/issues/673 uris\n const expected1 = this.getName().toLowerCase().replace(/\\//g, \"#\") + \".\" + this.getType().toLowerCase() + \".xml\";\n const expected2 = this.getName().toLowerCase().replace(/\\//g, \"%23\") + \".\" + this.getType().toLowerCase() + \".xml\";\n for (const file of this.getFiles()) {\n if (file.getFilename().endsWith(expected1) || file.getFilename().endsWith(expected2)) {\n return file;\n }\n }\n // uri fallback, assume there is only one xml file\n for (const file of this.getFiles()) {\n if (file.getFilename().endsWith(\".xml\")) {\n return file;\n }\n }\n return undefined;\n }\n getXML() {\n const file = this.getXMLFile();\n if (file) {\n return file.getRaw();\n }\n return undefined;\n }\n updateFile(file) {\n this.setDirty();\n for (let i = 0; i < this.files.length; i++) {\n if (this.files[i].getFilename() === file.getFilename()) {\n this.files[i] = file;\n return;\n }\n }\n throw new Error(\"updateFile: file not found\");\n }\n parseRaw2() {\n const xml = this.getXML();\n if (xml === undefined) {\n return undefined;\n }\n try {\n return new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(xml);\n }\n catch (_a) {\n return undefined;\n }\n }\n}\nexports.AbstractObject = AbstractObject;\n//# sourceMappingURL=_abstract_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/_abstract_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/_unknown_object.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/_unknown_object.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnknownObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst severity_1 = __webpack_require__(/*! ../severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nclass UnknownObject extends _abstract_object_1.AbstractObject {\n constructor(name, type) {\n super(name);\n this.type = type;\n }\n getType() {\n return this.type;\n }\n getAllowedNaming() {\n return {\n maxLength: 100,\n allowNamespace: true,\n };\n }\n getDescription() {\n return undefined;\n }\n getParsingIssues() {\n const pos = new position_1.Position(1, 1);\n const file = this.getFiles()[0];\n const message = \"Unknown object type, currently not supported in abaplint, open issue on github\";\n const issue = issue_1.Issue.atPosition(file, pos, message, \"parser_error\", severity_1.Severity.Error);\n return [issue];\n }\n}\nexports.UnknownObject = UnknownObject;\n//# sourceMappingURL=_unknown_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/_unknown_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/activation_variant.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/activation_variant.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ActivationVariant = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ActivationVariant extends _abstract_object_1.AbstractObject {\n getType() {\n return \"AVAR\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ActivationVariant = ActivationVariant;\n//# sourceMappingURL=activation_variant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/activation_variant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/api_release_state.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/api_release_state.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.APIReleaseState = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass APIReleaseState extends _abstract_object_1.AbstractObject {\n getType() {\n return \"APIS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.APIReleaseState = APIReleaseState;\n//# sourceMappingURL=api_release_state.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/api_release_state.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/assignment_service_to_authorization_group.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/assignment_service_to_authorization_group.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AssignmentServiceToAuthorizationGroup = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass AssignmentServiceToAuthorizationGroup extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SUSH\";\n }\n getAllowedNaming() {\n return {\n maxLength: 32,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.AssignmentServiceToAuthorizationGroup = AssignmentServiceToAuthorizationGroup;\n//# sourceMappingURL=assignment_service_to_authorization_group.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/assignment_service_to_authorization_group.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/atc_check_category.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/atc_check_category.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ATCCheckCategory = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ATCCheckCategory extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CHKC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ATCCheckCategory = ATCCheckCategory;\n//# sourceMappingURL=atc_check_category.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/atc_check_category.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/atc_check_object.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/atc_check_object.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ATCCheckObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ATCCheckObject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CHKO\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ATCCheckObject = ATCCheckObject;\n//# sourceMappingURL=atc_check_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/atc_check_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/atc_check_variant.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/atc_check_variant.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ATCCheckVariant = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ATCCheckVariant extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CHKV\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ATCCheckVariant = ATCCheckVariant;\n//# sourceMappingURL=atc_check_variant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/atc_check_variant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/authorization_check_field.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/authorization_check_field.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AuthorizationCheckField = void 0;\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass AuthorizationCheckField extends _abstract_object_1.AbstractObject {\n getType() {\n return \"AUTH\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n getDescription() {\n // todo\n return undefined;\n }\n getDataElementName() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.rollname;\n }\n parseType(reg) {\n var _a;\n this.parse();\n const references = [];\n const ddic = new ddic_1.DDIC(reg);\n if ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.rollname) {\n const found = ddic.lookupDataElement(this.parsedXML.rollname);\n if (found.object) {\n references.push({ object: found.object });\n reg.getDDICReferences().setUsing(this, references);\n return found.type;\n }\n else if (ddic.inErrorNamespace(this.parsedXML.rollname)) {\n return new basic_1.UnknownType(this.parsedXML.rollname + \" not found\");\n }\n else {\n return new basic_1.VoidType(this.parsedXML.rollname);\n }\n }\n else {\n return new basic_1.UnknownType(\"Parsing error\");\n }\n }\n parse() {\n var _a;\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return { updated: false, runtime: 0 };\n }\n this.parsedXML.rollname = (_a = parsed.abapGit[\"asx:abap\"][\"asx:values\"].AUTHX) === null || _a === void 0 ? void 0 : _a.ROLLNAME;\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n}\nexports.AuthorizationCheckField = AuthorizationCheckField;\n//# sourceMappingURL=authorization_check_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/authorization_check_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/authorization_group.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/authorization_group.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AuthorizationGroup = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass AuthorizationGroup extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SUCU\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.AuthorizationGroup = AuthorizationGroup;\n//# sourceMappingURL=authorization_group.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/authorization_group.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/authorization_object.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/authorization_object.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AuthorizationObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass AuthorizationObject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SUSO\";\n }\n getAllowedNaming() {\n return {\n maxLength: 10,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.AuthorizationObject = AuthorizationObject;\n//# sourceMappingURL=authorization_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/authorization_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/authorization_object_class.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/authorization_object_class.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AuthorizationObjectClass = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass AuthorizationObjectClass extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SUSC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 4,\n allowNamespace: false,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.AuthorizationObjectClass = AuthorizationObjectClass;\n//# sourceMappingURL=authorization_object_class.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/authorization_object_class.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/authorization_object_extension.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/authorization_object_extension.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AuthorizationObjectExtension = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass AuthorizationObjectExtension extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SIA3\";\n }\n getAllowedNaming() {\n return {\n maxLength: 100,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.AuthorizationObjectExtension = AuthorizationObjectExtension;\n//# sourceMappingURL=authorization_object_extension.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/authorization_object_extension.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/behavior_definition.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/behavior_definition.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BehaviorDefinition = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BehaviorDefinition extends _abstract_object_1.AbstractObject {\n getType() {\n return \"BDEF\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BehaviorDefinition = BehaviorDefinition;\n//# sourceMappingURL=behavior_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/behavior_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/bsp_application.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/bsp_application.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BSPApplication = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BSPApplication extends _abstract_object_1.AbstractObject {\n getType() {\n return \"WAPA\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BSPApplication = BSPApplication;\n//# sourceMappingURL=bsp_application.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/bsp_application.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/business_add_in_implementation.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/business_add_in_implementation.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BusinessAddInImplementation = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BusinessAddInImplementation extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SXCI\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BusinessAddInImplementation = BusinessAddInImplementation;\n//# sourceMappingURL=business_add_in_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/business_add_in_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/business_catalog.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/business_catalog.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BusinessCatalog = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BusinessCatalog extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SIA1\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BusinessCatalog = BusinessCatalog;\n//# sourceMappingURL=business_catalog.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/business_catalog.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/business_catalog_app_assignment.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/business_catalog_app_assignment.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BusinessCatalogAppAssignment = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BusinessCatalogAppAssignment extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SIA7\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BusinessCatalogAppAssignment = BusinessCatalogAppAssignment;\n//# sourceMappingURL=business_catalog_app_assignment.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/business_catalog_app_assignment.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/business_configuration_set.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/business_configuration_set.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BusinessConfigurationSet = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BusinessConfigurationSet extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SCP1\";\n }\n getAllowedNaming() {\n return {\n maxLength: 32,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BusinessConfigurationSet = BusinessConfigurationSet;\n//# sourceMappingURL=business_configuration_set.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/business_configuration_set.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/business_function_assignment.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/business_function_assignment.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BusinessFunctionAssignment = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BusinessFunctionAssignment extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SFBF\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BusinessFunctionAssignment = BusinessFunctionAssignment;\n//# sourceMappingURL=business_function_assignment.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/business_function_assignment.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/business_function_set_assignment.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/business_function_set_assignment.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BusinessFunctionSetAssignment = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BusinessFunctionSetAssignment extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SFBS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BusinessFunctionSetAssignment = BusinessFunctionSetAssignment;\n//# sourceMappingURL=business_function_set_assignment.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/business_function_set_assignment.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/business_object_model.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/business_object_model.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BusinessObjectModel = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass BusinessObjectModel extends _abstract_object_1.AbstractObject {\n getType() {\n return \"BOBF\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.BusinessObjectModel = BusinessObjectModel;\n//# sourceMappingURL=business_object_model.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/business_object_model.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/cds_metadata_extension.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/cds_metadata_extension.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSMetadataExtension = void 0;\nconst cds_parser_1 = __webpack_require__(/*! ../cds/cds_parser */ \"./node_modules/@abaplint/core/build/src/cds/cds_parser.js\");\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CDSMetadataExtension extends _abstract_object_1.AbstractObject {\n constructor() {\n super(...arguments);\n this.parserError = undefined;\n this.parsedData = undefined;\n }\n getType() {\n return \"DDLX\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n hasParserError() {\n return this.parserError;\n }\n parse() {\n if (this.isDirty() === false) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedData = {\n tree: undefined,\n };\n this.parsedData.tree = new cds_parser_1.CDSParser().parse(this.findSourceFile());\n if (this.parsedData.tree === undefined) {\n this.parserError = true;\n }\n this.dirty = false;\n return { updated: true, runtime: Date.now() - start };\n }\n getDescription() {\n // todo\n return undefined;\n }\n findSourceFile() {\n return this.getFiles().find(f => f.getFilename().endsWith(\".asddlxs\") || f.getFilename().endsWith(\".acds\"));\n }\n}\nexports.CDSMetadataExtension = CDSMetadataExtension;\n//# sourceMappingURL=cds_metadata_extension.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/cds_metadata_extension.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/change_document.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/change_document.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ChangeDocument = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ChangeDocument extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CHDO\";\n }\n getAllowedNaming() {\n return {\n maxLength: 15,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ChangeDocument = ChangeDocument;\n//# sourceMappingURL=change_document.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/change_document.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/chapter_of_book_structure.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/chapter_of_book_structure.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ChapterOfBookStructure = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ChapterOfBookStructure extends _abstract_object_1.AbstractObject {\n getType() {\n return \"DSYS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ChapterOfBookStructure = ChapterOfBookStructure;\n//# sourceMappingURL=chapter_of_book_structure.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/chapter_of_book_structure.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/checkpoint_group.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/checkpoint_group.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckpointGroup = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CheckpointGroup extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ACID\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CheckpointGroup = CheckpointGroup;\n//# sourceMappingURL=checkpoint_group.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/checkpoint_group.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/class.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/class.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Class = exports.ClassCategory = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ./_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nvar ClassCategory;\n(function (ClassCategory) {\n ClassCategory[\"Test\"] = \"05\";\n ClassCategory[\"Persistent\"] = \"10\";\n ClassCategory[\"PersistentFactory\"] = \"11\";\n ClassCategory[\"Exception\"] = \"40\";\n ClassCategory[\"SharedObject\"] = \"45\";\n})(ClassCategory || (exports.ClassCategory = ClassCategory = {}));\nclass Class extends _abap_object_1.ABAPObject {\n constructor() {\n super(...arguments);\n this.def = undefined;\n this.parsedXML = undefined;\n }\n getType() {\n return \"CLAS\";\n }\n getSequencedFiles() {\n const sequence = [\".clas.locals_def.abap\", \".clas.locals_imp.abap\", \".clas.abap\", \".clas.testclasses.abap\"];\n const copy = this.getABAPFiles().slice().sort((a, b) => {\n const aValue = sequence.findIndex((s) => a.getFilename().endsWith(s));\n const bValue = sequence.findIndex((s) => b.getFilename().endsWith(s));\n return aValue - bValue;\n });\n return copy;\n }\n setDefinition(def) {\n this.def = def;\n }\n getDefinition() {\n return this.def;\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.def = undefined;\n this.parsedXML = undefined;\n super.setDirty();\n }\n getClassDefinition() {\n var _a;\n return (_a = this.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getInfo().getClassDefinitionByName(this.getName());\n }\n getIdentifier() {\n var _a;\n return (_a = this.getClassDefinition()) === null || _a === void 0 ? void 0 : _a.identifier;\n }\n // -------------------\n getDescription() {\n var _a;\n this.parseXML();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;\n }\n getNameFromXML() {\n var _a;\n this.parseXML();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.name;\n }\n getCategory() {\n var _a;\n this.parseXML();\n // https://blog.mariusschulz.com/2017/10/27/typescript-2-4-string-enums#no-reverse-mapping-for-string-valued-enum-members\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.category;\n }\n getLocalsImpFile() {\n for (const file of this.getABAPFiles()) {\n if (file.getFilename().endsWith(\".clas.locals_imp.abap\")) {\n return file;\n }\n }\n return undefined;\n }\n getTestclassFile() {\n for (const file of this.getABAPFiles()) {\n if (file.getFilename().endsWith(\".clas.testclasses.abap\")) {\n return file;\n }\n }\n return undefined;\n }\n /////////////////////////\n parseXML() {\n if (this.parsedXML !== undefined) {\n return;\n }\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit[\"asx:abap\"] === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return;\n }\n const vseo = parsed.abapGit[\"asx:abap\"][\"asx:values\"].VSEOCLASS;\n if (vseo === undefined) {\n return;\n }\n this.parsedXML.category = vseo.CATEGORY;\n this.parsedXML.description = vseo.DESCRIPT ? vseo.DESCRIPT : \"\";\n this.parsedXML.name = vseo.CLSNAME ? vseo.CLSNAME : \"\";\n }\n}\nexports.Class = Class;\n//# sourceMappingURL=class.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/class.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/classification.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/classification.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Classification = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Classification extends _abstract_object_1.AbstractObject {\n getType() {\n return \"AVAS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 32,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Classification = Classification;\n//# sourceMappingURL=classification.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/classification.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/communication_scenario.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/communication_scenario.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CommunicationScenario = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CommunicationScenario extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SCO1\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CommunicationScenario = CommunicationScenario;\n//# sourceMappingURL=communication_scenario.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/communication_scenario.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/composite_enhancement_implementation.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/composite_enhancement_implementation.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CompositeEnhancementImplementation = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CompositeEnhancementImplementation extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ENHC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CompositeEnhancementImplementation = CompositeEnhancementImplementation;\n//# sourceMappingURL=composite_enhancement_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/composite_enhancement_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/composite_enhancement_spot.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/composite_enhancement_spot.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CompositeEnhancementSpot = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CompositeEnhancementSpot extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ENSC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CompositeEnhancementSpot = CompositeEnhancementSpot;\n//# sourceMappingURL=composite_enhancement_spot.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/composite_enhancement_spot.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/concepts_of_package.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/concepts_of_package.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConceptsOfPackage = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ConceptsOfPackage extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SOTS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n customRegex: new RegExp(/^(\\/[A-Z_\\d]{3,8}\\/)?[A-Z_-\\d<> ]+$/i),\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ConceptsOfPackage = ConceptsOfPackage;\n//# sourceMappingURL=concepts_of_package.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/concepts_of_package.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/customer_enhancement_project.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/customer_enhancement_project.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CustomerEnhancementProject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CustomerEnhancementProject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CMOD\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CustomerEnhancementProject = CustomerEnhancementProject;\n//# sourceMappingURL=customer_enhancement_project.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/customer_enhancement_project.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/customizing_attributes.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/customizing_attributes.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CustomizingAttributes = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CustomizingAttributes extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CUS2\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CustomizingAttributes = CustomizingAttributes;\n//# sourceMappingURL=customizing_attributes.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/customizing_attributes.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/customizing_img_activity.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/customizing_img_activity.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CustomizingImgActivity = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CustomizingImgActivity extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CUS0\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CustomizingImgActivity = CustomizingImgActivity;\n//# sourceMappingURL=customizing_img_activity.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/customizing_img_activity.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/customizing_transaction.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/customizing_transaction.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CustomizingTransaction = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass CustomizingTransaction extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CUS1\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.CustomizingTransaction = CustomizingTransaction;\n//# sourceMappingURL=customizing_transaction.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/customizing_transaction.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/data_control.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/data_control.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataControl = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass DataControl extends _abstract_object_1.AbstractObject {\n getType() {\n return \"DCLS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.DataControl = DataControl;\n//# sourceMappingURL=data_control.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/data_control.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/data_definition.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/data_definition.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataDefinition = void 0;\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst cds_determine_types_1 = __webpack_require__(/*! ../cds/cds_determine_types */ \"./node_modules/@abaplint/core/build/src/cds/cds_determine_types.js\");\nconst cds_parser_1 = __webpack_require__(/*! ../cds/cds_parser */ \"./node_modules/@abaplint/core/build/src/cds/cds_parser.js\");\nconst expressions_1 = __webpack_require__(/*! ../cds/expressions */ \"./node_modules/@abaplint/core/build/src/cds/expressions/index.js\");\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass DataDefinition extends _abstract_object_1.AbstractObject {\n constructor() {\n super(...arguments);\n this.parserError = undefined;\n this.parsedData = undefined;\n }\n getType() {\n return \"DDLS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getSQLViewName() {\n var _a;\n this.parse();\n return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.sqlViewName;\n }\n getDefinitionName() {\n var _a;\n this.parse();\n return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.definitionName;\n }\n getDescription() {\n // todo\n return undefined;\n }\n parseType(reg) {\n this.parse();\n return new cds_determine_types_1.CDSDetermineTypes().parseType(reg, this.parsedData);\n }\n getParsedData() {\n return this.parsedData;\n }\n listSources() {\n var _a;\n this.parse();\n return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.sources;\n }\n setDirty() {\n this.parsedData = undefined;\n this.parserError = undefined;\n super.setDirty();\n }\n findSourceFile() {\n return this.getFiles().find(f => f.getFilename().endsWith(\".asddls\") || f.getFilename().endsWith(\".acds\"));\n }\n hasParserError() {\n return this.parserError;\n }\n parse() {\n var _a, _b;\n if (this.isDirty() === false) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedData = {\n sqlViewName: undefined,\n definitionName: undefined,\n fields: [],\n sources: [],\n relations: [],\n associations: [],\n tree: undefined,\n };\n this.findSQLViewName();\n this.parsedData.tree = new cds_parser_1.CDSParser().parse(this.findSourceFile());\n if (this.parsedData.tree) {\n for (const c of ((_a = this.parsedData.tree) === null || _a === void 0 ? void 0 : _a.getChildren()) || []) {\n if (c.get() instanceof expressions_1.CDSAnnotation) {\n continue;\n }\n if (c instanceof nodes_1.ExpressionNode) {\n this.parsedData.definitionName = (_b = c.findFirstExpression(expressions_1.CDSName)) === null || _b === void 0 ? void 0 : _b.concatTokens().replace(/ /g, \"\");\n break;\n }\n }\n this.findSourcesAndRelations(this.parsedData.tree);\n this.findFieldNames(this.parsedData.tree);\n }\n else {\n this.parserError = true;\n }\n this.dirty = false;\n return { updated: true, runtime: Date.now() - start };\n }\n getTree() {\n var _a;\n return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.tree;\n }\n //////////\n findSQLViewName() {\n var _a;\n const match = (_a = this.findSourceFile()) === null || _a === void 0 ? void 0 : _a.getRaw().match(/@AbapCatalog\\.sqlViewName: '(\\w+)'/);\n if (match) {\n this.parsedData.sqlViewName = match[1].toUpperCase();\n }\n }\n findFieldNames(tree) {\n var _a, _b;\n let expr = tree.findFirstExpression(expressions_1.CDSSelect);\n if (expr === undefined) {\n expr = tree.findFirstExpression(expressions_1.CDSAnnotate);\n }\n if (expr === undefined) {\n expr = tree.findFirstExpression(expressions_1.CDSDefineProjection);\n }\n for (const e of (expr === null || expr === void 0 ? void 0 : expr.findDirectExpressions(expressions_1.CDSElement)) || []) {\n let found = (_a = e.findDirectExpression(expressions_1.CDSAs)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.CDSName);\n if (found === undefined) {\n const list = e.findDirectExpressions(expressions_1.CDSName);\n if (e.concatTokens().toUpperCase().includes(\" REDIRECTED TO \")) {\n found = list[0];\n }\n else {\n found = list[list.length - 1];\n }\n }\n if (found === undefined) {\n continue;\n }\n const name = found === null || found === void 0 ? void 0 : found.concatTokens();\n if ((_b = this.parsedData) === null || _b === void 0 ? void 0 : _b.associations.some(a => { var _a; return a.name.toUpperCase() === name.toUpperCase() || ((_a = a.as) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === name.toUpperCase(); })) {\n continue;\n }\n const annotations = [];\n for (const a of e.findDirectExpressions(expressions_1.CDSAnnotation)) {\n annotations.push(a.concatTokens());\n }\n this.parsedData.fields.push({\n name: name,\n annotations: annotations,\n key: e.findDirectTokenByText(\"KEY\") !== undefined,\n });\n }\n }\n findSourcesAndRelations(tree) {\n var _a, _b, _c, _d, _e, _f;\n for (const e of tree.findAllExpressions(expressions_1.CDSSource)) {\n const name = e.getFirstToken().getStr();\n const as = (_b = (_a = e.findDirectExpression(expressions_1.CDSAs)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.CDSName)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr();\n this.parsedData.sources.push({ name, as });\n }\n for (const e of tree.findAllExpressions(expressions_1.CDSRelation)) {\n const name = e.getFirstToken().getStr();\n const as = (_d = (_c = e.findDirectExpression(expressions_1.CDSAs)) === null || _c === void 0 ? void 0 : _c.findDirectExpression(expressions_1.CDSName)) === null || _d === void 0 ? void 0 : _d.getFirstToken().getStr();\n this.parsedData.relations.push({ name, as });\n }\n for (const e of tree.findAllExpressions(expressions_1.CDSAssociation)) {\n const j = e.findDirectExpression(expressions_1.CDSRelation);\n if (j === undefined) {\n continue;\n }\n const name = j.getFirstToken().getStr();\n const as = (_f = (_e = j.findDirectExpression(expressions_1.CDSAs)) === null || _e === void 0 ? void 0 : _e.findDirectExpression(expressions_1.CDSName)) === null || _f === void 0 ? void 0 : _f.getFirstToken().getStr();\n this.parsedData.associations.push({\n name: name || \"ERROR\",\n as: as,\n });\n }\n }\n}\nexports.DataDefinition = DataDefinition;\n//# sourceMappingURL=data_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/data_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/data_element.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/data_element.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DataElement = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst Types = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass DataElement extends _abstract_object_1.AbstractObject {\n constructor() {\n super(...arguments);\n this.parsedXML = undefined;\n }\n getType() {\n return \"DTEL\";\n }\n getDescription() {\n var _a;\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n getDomainName() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.domname;\n }\n parseType(reg) {\n const references = [];\n let lookup = undefined;\n if (this.parsedXML === undefined) {\n lookup = { type: new Types.UnknownType(\"Data Element \" + this.getName() + \", parser error\") };\n }\n else {\n const ddic = new ddic_1.DDIC(reg);\n if (this.parsedXML.refkind === \"D\") {\n if (this.parsedXML.domname === undefined || this.parsedXML.domname === \"\") {\n lookup = { type: new Types.UnknownType(\"DOMNAME unexpectely empty in \" + this.getName()) };\n }\n else {\n lookup = ddic.lookupDomain(this.parsedXML.domname, this.getName());\n }\n }\n else if (this.parsedXML.refkind === \"R\") {\n if (this.parsedXML.domname === undefined || this.parsedXML.domname === \"\") {\n lookup = { type: new Types.UnknownType(\"DOMNAME unexpectely empty in \" + this.getName()) };\n }\n else {\n lookup = ddic.lookupObject(this.parsedXML.domname);\n }\n }\n else {\n if (this.parsedXML.datatype === undefined || this.parsedXML.datatype === \"\") {\n lookup = { type: new Types.UnknownType(\"DATATYPE unexpectely empty in \" + this.getName()) };\n }\n else {\n lookup = { type: ddic.textToType(this.parsedXML.datatype, this.parsedXML.leng, this.parsedXML.decimals, this.getName(), this.getName(), undefined, this.getName()) };\n }\n }\n }\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n reg.getDDICReferences().setUsing(this, references);\n return lookup.type;\n }\n parse() {\n var _a, _b, _c;\n if (this.parsedXML !== undefined) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined) {\n return { updated: false, runtime: 0 };\n }\n const dd04v = (_c = (_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a[\"asx:abap\"]) === null || _b === void 0 ? void 0 : _b[\"asx:values\"]) === null || _c === void 0 ? void 0 : _c.DD04V;\n this.parsedXML = {\n description: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DDTEXT,\n refkind: dd04v === null || dd04v === void 0 ? void 0 : dd04v.REFKIND,\n domname: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DOMNAME,\n datatype: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DATATYPE,\n leng: dd04v === null || dd04v === void 0 ? void 0 : dd04v.LENG,\n decimals: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DECIMALS,\n };\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n}\nexports.DataElement = DataElement;\n//# sourceMappingURL=data_element.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/data_element.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/dialog_module.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/dialog_module.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DialogModule = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass DialogModule extends _abstract_object_1.AbstractObject {\n getType() {\n return \"DIAL\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.DialogModule = DialogModule;\n//# sourceMappingURL=dialog_module.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/dialog_module.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/documentation.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/documentation.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Documentation = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Documentation extends _abstract_object_1.AbstractObject {\n getType() {\n return \"DOCV\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Documentation = Documentation;\n//# sourceMappingURL=documentation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/documentation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/domain.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/domain.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Domain = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst Types = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nclass Domain extends _abstract_object_1.AbstractObject {\n getType() {\n return \"DOMA\";\n }\n getDescription() {\n var _a;\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;\n }\n getConversionExit() {\n var _a;\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.conversionExit;\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n parseType(reg, dataElement) {\n // dont cache the DOMA parsed type, they are cached on DTEL level\n // also note that the type carries the name of the DTEL\n if (this.parsedXML === undefined) {\n this.parse();\n }\n if (this.parsedXML === undefined) {\n return new Types.UnknownType(\"Domain \" + this.getName() + \" parser error\", this.getName());\n }\n const ddic = new ddic_1.DDIC(reg);\n return ddic.textToType(this.parsedXML.datatype, this.parsedXML.length, this.parsedXML.decimals, this.getName(), dataElement, this.parsedXML.conversionExit, dataElement);\n }\n parse() {\n var _a, _b, _c, _d, _e, _f, _g;\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined) {\n return { updated: false, runtime: 0 };\n }\n const dd01v = (_c = (_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a[\"asx:abap\"]) === null || _b === void 0 ? void 0 : _b[\"asx:values\"]) === null || _c === void 0 ? void 0 : _c.DD01V;\n const dd07v_tab = (0, xml_utils_1.xmlToArray)((_g = (_f = (_e = (_d = parsed.abapGit) === null || _d === void 0 ? void 0 : _d[\"asx:abap\"]) === null || _e === void 0 ? void 0 : _e[\"asx:values\"]) === null || _f === void 0 ? void 0 : _f.DD07V_TAB) === null || _g === void 0 ? void 0 : _g.DD07V);\n const values = [];\n for (const ddo7v of dd07v_tab) {\n const value = {\n description: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DDTEXT,\n low: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DOMVALUE_L,\n high: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DOMVALUE_H,\n language: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DDLANGUAGE,\n };\n values.push(value);\n }\n this.parsedXML = {\n description: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DDTEXT,\n datatype: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DATATYPE,\n length: dd01v === null || dd01v === void 0 ? void 0 : dd01v.LENG,\n conversionExit: dd01v === null || dd01v === void 0 ? void 0 : dd01v.CONVEXIT,\n decimals: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DECIMALS,\n values: values,\n };\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n getFixedValues() {\n var _a, _b;\n return (_b = (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.values) !== null && _b !== void 0 ? _b : [];\n }\n}\nexports.Domain = Domain;\n//# sourceMappingURL=domain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/domain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/ecatt_test_configuration.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/ecatt_test_configuration.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EcattTestConfiguration = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass EcattTestConfiguration extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ECTC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.EcattTestConfiguration = EcattTestConfiguration;\n//# sourceMappingURL=ecatt_test_configuration.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/ecatt_test_configuration.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/ecatt_test_data_container.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/ecatt_test_data_container.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EcattTestDataContainer = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass EcattTestDataContainer extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ECTD\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.EcattTestDataContainer = EcattTestDataContainer;\n//# sourceMappingURL=ecatt_test_data_container.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/ecatt_test_data_container.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/ecatt_test_script.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/ecatt_test_script.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EcattTestScript = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass EcattTestScript extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ECAT\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.EcattTestScript = EcattTestScript;\n//# sourceMappingURL=ecatt_test_script.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/ecatt_test_script.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/enhancement_implementation.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/enhancement_implementation.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EnhancementImplementation = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass EnhancementImplementation extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ENHO\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.EnhancementImplementation = EnhancementImplementation;\n//# sourceMappingURL=enhancement_implementation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/enhancement_implementation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/enhancement_spot.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/enhancement_spot.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EnhancementSpot = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nclass EnhancementSpot extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ENHS\";\n }\n getDescription() {\n // todo\n return undefined;\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.badis = undefined;\n super.setDirty();\n }\n listBadiDefinitions() {\n if (this.badis === undefined) {\n this.badis = this.parseXML();\n }\n return this.badis;\n }\n /////////////////\n parseXML() {\n var _a, _b;\n const parsed = super.parseRaw2();\n if (parsed === undefined) {\n return [];\n }\n const ret = [];\n for (const b of (0, xml_utils_1.xmlToArray)((_b = (_a = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _a === void 0 ? void 0 : _a.BADI_DATA) === null || _b === void 0 ? void 0 : _b.ENH_BADI_DATA)) {\n ret.push({\n name: b.BADI_NAME,\n interface: b.INTERFACE_NAME,\n });\n }\n return ret;\n }\n}\nexports.EnhancementSpot = EnhancementSpot;\n//# sourceMappingURL=enhancement_spot.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/enhancement_spot.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/event_binding.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/event_binding.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EventBinding = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass EventBinding extends _abstract_object_1.AbstractObject {\n getType() {\n return \"EVTB\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.EventBinding = EventBinding;\n//# sourceMappingURL=event_binding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/event_binding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/extension_index.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/extension_index.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExtensionIndex = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ExtensionIndex extends _abstract_object_1.AbstractObject {\n getType() {\n return \"XINX\";\n }\n getAllowedNaming() {\n return {\n maxLength: 33,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ExtensionIndex = ExtensionIndex;\n//# sourceMappingURL=extension_index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/extension_index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/field_catalog.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/field_catalog.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FieldCatalog = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass FieldCatalog extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ASFC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.FieldCatalog = FieldCatalog;\n//# sourceMappingURL=field_catalog.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/field_catalog.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/form_object_form.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/form_object_form.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormObjectForm = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass FormObjectForm extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SFPF\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.FormObjectForm = FormObjectForm;\n//# sourceMappingURL=form_object_form.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/form_object_form.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/form_object_interface.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/form_object_interface.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormObjectInterface = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass FormObjectInterface extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SFPI\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.FormObjectInterface = FormObjectInterface;\n//# sourceMappingURL=form_object_interface.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/form_object_interface.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/format_type.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/format_type.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormatType = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass FormatType extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SPLO\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.FormatType = FormatType;\n//# sourceMappingURL=format_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/format_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/function_group.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/function_group.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionGroup = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ./_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nconst fast_xml_parser_1 = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\nclass FunctionGroup extends _abap_object_1.ABAPObject {\n constructor() {\n super(...arguments);\n this.includes = undefined;\n this.modules = undefined;\n }\n getType() {\n return \"FUGR\";\n }\n getDescription() {\n // todo\n return undefined;\n }\n setDirty() {\n super.setDirty();\n this.includes = undefined;\n this.modules = undefined;\n }\n getAllowedNaming() {\n return {\n maxLength: 26,\n allowNamespace: true,\n };\n }\n getSequencedFiles() {\n const main = this.getMainABAPFile();\n if (main === undefined) {\n return [];\n }\n const sequence = [main];\n for (const m of this.getModules()) {\n const search = \".\" + m.getName().toLocaleLowerCase().replace(/\\//g, \"#\") + \".abap\";\n for (const f of this.getABAPFiles()) {\n if (f.getFilename().toLocaleLowerCase().endsWith(search)) {\n if (sequence.indexOf(f) < 0) {\n sequence.push(f);\n }\n break;\n }\n }\n }\n return sequence;\n }\n getModules() {\n if (this.modules === undefined) {\n this.parseXML();\n }\n if (this.modules === undefined) {\n throw new Error(\"getIncludes, undefined\");\n }\n return this.modules;\n }\n getIncludeFiles() {\n const ret = [];\n const includes = this.getIncludes();\n for (const f of this.getABAPFiles()) {\n for (const i of includes) {\n const namespaced = i.startsWith(\"/\") && i.includes(\"/L\");\n let search = i;\n if (namespaced) {\n search = search.replace(/\\//g, \"#\");\n }\n if ((i.startsWith(\"L\") || namespaced) && f.getFilename().includes(search.toLowerCase())) {\n ret.push({ file: f, name: i });\n }\n // fix for URL encoded? Uris\n if (namespaced) {\n search = i.replace(/\\//g, \"%23\");\n if (f.getFilename().includes(search.toLowerCase())) {\n ret.push({ file: f, name: i });\n }\n }\n }\n }\n return ret;\n }\n getInclude(name) {\n const upper = name.toUpperCase();\n const includes = this.getIncludeFiles();\n for (const i of includes) {\n if (i.name.toUpperCase() === upper) {\n return i.file;\n }\n }\n return undefined;\n }\n getMainABAPFile() {\n const regex = new RegExp(/\\.fugr\\.(#\\w+#)?sapl/, \"i\");\n for (const f of this.getABAPFiles()) {\n if (regex.test(f.getFilename())) {\n return f;\n }\n }\n return undefined;\n }\n getIncludes() {\n if (this.includes === undefined) {\n this.parseXML();\n }\n if (this.includes === undefined) {\n throw new Error(\"getIncludes, undefined\");\n }\n return this.includes;\n }\n getModule(name) {\n for (const mod of this.getModules()) {\n if (mod.getName().toUpperCase() === name.toUpperCase()) {\n return mod;\n }\n }\n return undefined;\n }\n getTexts() {\n if (this.texts === undefined) {\n const found = this.findTextFile();\n if (found === undefined) {\n return {};\n }\n const parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(found.getRaw());\n this.findTexts(parsed);\n }\n return this.texts;\n }\n /////////////////////////////////\n parseXML() {\n var _a, _b;\n this.includes = [];\n this.modules = [];\n const parsed = this.parseRaw2();\n if (parsed === undefined) {\n return;\n }\n // INCLUDES\n const includes = (_a = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _a === void 0 ? void 0 : _a.INCLUDES;\n if (includes !== undefined) {\n for (const i of (0, xml_utils_1.xmlToArray)(includes.SOBJ_NAME)) {\n this.includes.push(i);\n }\n }\n // FUNCTION MODULES\n const functions = (_b = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _b === void 0 ? void 0 : _b.FUNCTIONS;\n for (const module of (0, xml_utils_1.xmlToArray)(functions === null || functions === void 0 ? void 0 : functions.item)) {\n this.modules.push(new types_1.FunctionModuleDefinition(module));\n }\n }\n findTextFile() {\n const search = this.getName() + \".fugr.sapl\" + this.getName() + \".xml\";\n for (const f of this.getFiles()) {\n if (f.getFilename().includes(search.toLowerCase())) {\n return f;\n }\n }\n return undefined;\n }\n}\nexports.FunctionGroup = FunctionGroup;\n//# sourceMappingURL=function_group.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/function_group.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/gateway_model.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/gateway_model.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GatewayModel = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GatewayModel extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IWMO\";\n }\n getAllowedNaming() {\n return {\n maxLength: 36,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GatewayModel = GatewayModel;\n//# sourceMappingURL=gateway_model.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/gateway_model.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/gateway_model_metadata.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/gateway_model_metadata.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GatewayModelMetadata = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GatewayModelMetadata extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IWOM\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GatewayModelMetadata = GatewayModelMetadata;\n//# sourceMappingURL=gateway_model_metadata.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/gateway_model_metadata.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/gateway_project.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/gateway_project.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GatewayProject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GatewayProject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IWPR\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GatewayProject = GatewayProject;\n//# sourceMappingURL=gateway_project.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/gateway_project.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/gateway_service.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/gateway_service.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GatewayService = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GatewayService extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IWSV\";\n }\n getAllowedNaming() {\n return {\n maxLength: 39,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GatewayService = GatewayService;\n//# sourceMappingURL=gateway_service.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/gateway_service.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/gateway_service_groups_metadata.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/gateway_service_groups_metadata.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GatewayServiceGroupsMetadata = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GatewayServiceGroupsMetadata extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IWSG\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GatewayServiceGroupsMetadata = GatewayServiceGroupsMetadata;\n//# sourceMappingURL=gateway_service_groups_metadata.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/gateway_service_groups_metadata.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/gateway_vocabulary_annotation.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/gateway_vocabulary_annotation.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GatewayVocabularyAnnotation = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GatewayVocabularyAnnotation extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IWVB\";\n }\n getAllowedNaming() {\n return {\n maxLength: 36,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GatewayVocabularyAnnotation = GatewayVocabularyAnnotation;\n//# sourceMappingURL=gateway_vocabulary_annotation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/gateway_vocabulary_annotation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/general_hierarchy_storage_extrension_name.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/general_hierarchy_storage_extrension_name.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GeneralHierarchyStorageExtrensionName = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GeneralHierarchyStorageExtrensionName extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SHI5\";\n }\n getAllowedNaming() {\n return {\n maxLength: 15,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GeneralHierarchyStorageExtrensionName = GeneralHierarchyStorageExtrensionName;\n//# sourceMappingURL=general_hierarchy_storage_extrension_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/general_hierarchy_storage_extrension_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/general_storage_structure.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/general_storage_structure.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GeneralStorageStructure = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GeneralStorageStructure extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SHI3\";\n }\n getAllowedNaming() {\n return {\n maxLength: 32,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GeneralStorageStructure = GeneralStorageStructure;\n//# sourceMappingURL=general_storage_structure.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/general_storage_structure.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/general_text.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/general_text.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GeneralText = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass GeneralText extends _abstract_object_1.AbstractObject {\n getType() {\n return \"DOCT\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.GeneralText = GeneralText;\n//# sourceMappingURL=general_text.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/general_text.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/http_service.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/http_service.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.HttpService = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass HttpService extends _abstract_object_1.AbstractObject {\n getType() {\n return \"HTTP\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.HttpService = HttpService;\n//# sourceMappingURL=http_service.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/http_service.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/iac_binary_data.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/iac_binary_data.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IACBinaryData = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass IACBinaryData extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IAMU\";\n }\n getAllowedNaming() {\n return {\n maxLength: 100,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.IACBinaryData = IACBinaryData;\n//# sourceMappingURL=iac_binary_data.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/iac_binary_data.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/iac_language_resource.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/iac_language_resource.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IACLanguageResource = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass IACLanguageResource extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IARP\";\n }\n getAllowedNaming() {\n return {\n maxLength: 100,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.IACLanguageResource = IACLanguageResource;\n//# sourceMappingURL=iac_language_resource.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/iac_language_resource.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/iac_service.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/iac_service.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IACService = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass IACService extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IASP\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.IACService = IACService;\n//# sourceMappingURL=iac_service.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/iac_service.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/iac_template.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/iac_template.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IACTemplate = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass IACTemplate extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IATU\";\n }\n getAllowedNaming() {\n return {\n maxLength: 100,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.IACTemplate = IACTemplate;\n//# sourceMappingURL=iac_template.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/iac_template.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/iam_app.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/iam_app.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IAMApp = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass IAMApp extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SIA6\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.IAMApp = IAMApp;\n//# sourceMappingURL=iam_app.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/iam_app.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/icf_service.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/icf_service.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ICFService = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nclass ICFService extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SICF\";\n }\n getAllowedNaming() {\n return {\n maxLength: 100,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n getDescription() {\n // todo\n return undefined;\n }\n getURL() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.url;\n }\n getHandlerList() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.handlers;\n }\n parse() {\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return { updated: false, runtime: 0 };\n }\n const table = parsed.abapGit[\"asx:abap\"][\"asx:values\"].ICFHANDLER_TABLE;\n this.parsedXML.handlers = [];\n for (const h of (0, xml_utils_1.xmlToArray)(table)) {\n if (h.ICFHANDLER !== undefined) {\n this.parsedXML.handlers.push(h.ICFHANDLER.ICFHANDLER);\n }\n }\n this.parsedXML.url = parsed.abapGit[\"asx:abap\"][\"asx:values\"].URL;\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n}\nexports.ICFService = ICFService;\n//# sourceMappingURL=icf_service.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/icf_service.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/idoc.js": +/*!***************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/idoc.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Idoc = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Idoc extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IDOC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Idoc = Idoc;\n//# sourceMappingURL=idoc.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/idoc.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/idoc_extension.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/idoc_extension.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IdocExtension = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass IdocExtension extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IEXT\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: false,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.IdocExtension = IdocExtension;\n//# sourceMappingURL=idoc_extension.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/idoc_extension.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/inbound_service.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/inbound_service.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InboundService = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass InboundService extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SCO2\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.InboundService = InboundService;\n//# sourceMappingURL=inbound_service.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/inbound_service.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/index.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/index.js ***! + \****************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./activation_variant */ \"./node_modules/@abaplint/core/build/src/objects/activation_variant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./api_release_state */ \"./node_modules/@abaplint/core/build/src/objects/api_release_state.js\"), exports);\n__exportStar(__webpack_require__(/*! ./assignment_service_to_authorization_group */ \"./node_modules/@abaplint/core/build/src/objects/assignment_service_to_authorization_group.js\"), exports);\n__exportStar(__webpack_require__(/*! ./atc_check_category */ \"./node_modules/@abaplint/core/build/src/objects/atc_check_category.js\"), exports);\n__exportStar(__webpack_require__(/*! ./atc_check_object */ \"./node_modules/@abaplint/core/build/src/objects/atc_check_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./atc_check_variant */ \"./node_modules/@abaplint/core/build/src/objects/atc_check_variant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./authorization_check_field */ \"./node_modules/@abaplint/core/build/src/objects/authorization_check_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./authorization_group */ \"./node_modules/@abaplint/core/build/src/objects/authorization_group.js\"), exports);\n__exportStar(__webpack_require__(/*! ./authorization_object_class */ \"./node_modules/@abaplint/core/build/src/objects/authorization_object_class.js\"), exports);\n__exportStar(__webpack_require__(/*! ./authorization_object_extension */ \"./node_modules/@abaplint/core/build/src/objects/authorization_object_extension.js\"), exports);\n__exportStar(__webpack_require__(/*! ./authorization_object */ \"./node_modules/@abaplint/core/build/src/objects/authorization_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./behavior_definition */ \"./node_modules/@abaplint/core/build/src/objects/behavior_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./bsp_application */ \"./node_modules/@abaplint/core/build/src/objects/bsp_application.js\"), exports);\n__exportStar(__webpack_require__(/*! ./business_add_in_implementation */ \"./node_modules/@abaplint/core/build/src/objects/business_add_in_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./business_catalog_app_assignment */ \"./node_modules/@abaplint/core/build/src/objects/business_catalog_app_assignment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./business_catalog */ \"./node_modules/@abaplint/core/build/src/objects/business_catalog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./business_configuration_set */ \"./node_modules/@abaplint/core/build/src/objects/business_configuration_set.js\"), exports);\n__exportStar(__webpack_require__(/*! ./business_function_assignment */ \"./node_modules/@abaplint/core/build/src/objects/business_function_assignment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./business_function_set_assignment */ \"./node_modules/@abaplint/core/build/src/objects/business_function_set_assignment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./business_object_model */ \"./node_modules/@abaplint/core/build/src/objects/business_object_model.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_metadata_extension */ \"./node_modules/@abaplint/core/build/src/objects/cds_metadata_extension.js\"), exports);\n__exportStar(__webpack_require__(/*! ./change_document */ \"./node_modules/@abaplint/core/build/src/objects/change_document.js\"), exports);\n__exportStar(__webpack_require__(/*! ./chapter_of_book_structure */ \"./node_modules/@abaplint/core/build/src/objects/chapter_of_book_structure.js\"), exports);\n__exportStar(__webpack_require__(/*! ./checkpoint_group */ \"./node_modules/@abaplint/core/build/src/objects/checkpoint_group.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class */ \"./node_modules/@abaplint/core/build/src/objects/class.js\"), exports);\n__exportStar(__webpack_require__(/*! ./classification */ \"./node_modules/@abaplint/core/build/src/objects/classification.js\"), exports);\n__exportStar(__webpack_require__(/*! ./communication_scenario */ \"./node_modules/@abaplint/core/build/src/objects/communication_scenario.js\"), exports);\n__exportStar(__webpack_require__(/*! ./composite_enhancement_implementation */ \"./node_modules/@abaplint/core/build/src/objects/composite_enhancement_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./composite_enhancement_spot */ \"./node_modules/@abaplint/core/build/src/objects/composite_enhancement_spot.js\"), exports);\n__exportStar(__webpack_require__(/*! ./concepts_of_package */ \"./node_modules/@abaplint/core/build/src/objects/concepts_of_package.js\"), exports);\n__exportStar(__webpack_require__(/*! ./customer_enhancement_project */ \"./node_modules/@abaplint/core/build/src/objects/customer_enhancement_project.js\"), exports);\n__exportStar(__webpack_require__(/*! ./customizing_attributes */ \"./node_modules/@abaplint/core/build/src/objects/customizing_attributes.js\"), exports);\n__exportStar(__webpack_require__(/*! ./customizing_img_activity */ \"./node_modules/@abaplint/core/build/src/objects/customizing_img_activity.js\"), exports);\n__exportStar(__webpack_require__(/*! ./customizing_transaction */ \"./node_modules/@abaplint/core/build/src/objects/customizing_transaction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data_control */ \"./node_modules/@abaplint/core/build/src/objects/data_control.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data_definition */ \"./node_modules/@abaplint/core/build/src/objects/data_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./data_element */ \"./node_modules/@abaplint/core/build/src/objects/data_element.js\"), exports);\n__exportStar(__webpack_require__(/*! ./dialog_module */ \"./node_modules/@abaplint/core/build/src/objects/dialog_module.js\"), exports);\n__exportStar(__webpack_require__(/*! ./documentation */ \"./node_modules/@abaplint/core/build/src/objects/documentation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./domain */ \"./node_modules/@abaplint/core/build/src/objects/domain.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ecatt_test_configuration */ \"./node_modules/@abaplint/core/build/src/objects/ecatt_test_configuration.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ecatt_test_data_container */ \"./node_modules/@abaplint/core/build/src/objects/ecatt_test_data_container.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ecatt_test_script */ \"./node_modules/@abaplint/core/build/src/objects/ecatt_test_script.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enhancement_implementation */ \"./node_modules/@abaplint/core/build/src/objects/enhancement_implementation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./enhancement_spot */ \"./node_modules/@abaplint/core/build/src/objects/enhancement_spot.js\"), exports);\n__exportStar(__webpack_require__(/*! ./event_binding */ \"./node_modules/@abaplint/core/build/src/objects/event_binding.js\"), exports);\n__exportStar(__webpack_require__(/*! ./extension_index */ \"./node_modules/@abaplint/core/build/src/objects/extension_index.js\"), exports);\n__exportStar(__webpack_require__(/*! ./field_catalog */ \"./node_modules/@abaplint/core/build/src/objects/field_catalog.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_object_form */ \"./node_modules/@abaplint/core/build/src/objects/form_object_form.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_object_interface */ \"./node_modules/@abaplint/core/build/src/objects/form_object_interface.js\"), exports);\n__exportStar(__webpack_require__(/*! ./format_type */ \"./node_modules/@abaplint/core/build/src/objects/format_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_group */ \"./node_modules/@abaplint/core/build/src/objects/function_group.js\"), exports);\n__exportStar(__webpack_require__(/*! ./gateway_model_metadata */ \"./node_modules/@abaplint/core/build/src/objects/gateway_model_metadata.js\"), exports);\n__exportStar(__webpack_require__(/*! ./gateway_model */ \"./node_modules/@abaplint/core/build/src/objects/gateway_model.js\"), exports);\n__exportStar(__webpack_require__(/*! ./gateway_project */ \"./node_modules/@abaplint/core/build/src/objects/gateway_project.js\"), exports);\n__exportStar(__webpack_require__(/*! ./gateway_service_groups_metadata */ \"./node_modules/@abaplint/core/build/src/objects/gateway_service_groups_metadata.js\"), exports);\n__exportStar(__webpack_require__(/*! ./gateway_service */ \"./node_modules/@abaplint/core/build/src/objects/gateway_service.js\"), exports);\n__exportStar(__webpack_require__(/*! ./gateway_vocabulary_annotation */ \"./node_modules/@abaplint/core/build/src/objects/gateway_vocabulary_annotation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./general_hierarchy_storage_extrension_name */ \"./node_modules/@abaplint/core/build/src/objects/general_hierarchy_storage_extrension_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./general_storage_structure */ \"./node_modules/@abaplint/core/build/src/objects/general_storage_structure.js\"), exports);\n__exportStar(__webpack_require__(/*! ./general_text */ \"./node_modules/@abaplint/core/build/src/objects/general_text.js\"), exports);\n__exportStar(__webpack_require__(/*! ./http_service */ \"./node_modules/@abaplint/core/build/src/objects/http_service.js\"), exports);\n__exportStar(__webpack_require__(/*! ./iac_binary_data */ \"./node_modules/@abaplint/core/build/src/objects/iac_binary_data.js\"), exports);\n__exportStar(__webpack_require__(/*! ./iac_language_resource */ \"./node_modules/@abaplint/core/build/src/objects/iac_language_resource.js\"), exports);\n__exportStar(__webpack_require__(/*! ./iac_service */ \"./node_modules/@abaplint/core/build/src/objects/iac_service.js\"), exports);\n__exportStar(__webpack_require__(/*! ./iac_template */ \"./node_modules/@abaplint/core/build/src/objects/iac_template.js\"), exports);\n__exportStar(__webpack_require__(/*! ./iam_app */ \"./node_modules/@abaplint/core/build/src/objects/iam_app.js\"), exports);\n__exportStar(__webpack_require__(/*! ./icf_service */ \"./node_modules/@abaplint/core/build/src/objects/icf_service.js\"), exports);\n__exportStar(__webpack_require__(/*! ./idoc_extension */ \"./node_modules/@abaplint/core/build/src/objects/idoc_extension.js\"), exports);\n__exportStar(__webpack_require__(/*! ./idoc */ \"./node_modules/@abaplint/core/build/src/objects/idoc.js\"), exports);\n__exportStar(__webpack_require__(/*! ./inbound_service */ \"./node_modules/@abaplint/core/build/src/objects/inbound_service.js\"), exports);\n__exportStar(__webpack_require__(/*! ./info_object */ \"./node_modules/@abaplint/core/build/src/objects/info_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./interface */ \"./node_modules/@abaplint/core/build/src/objects/interface.js\"), exports);\n__exportStar(__webpack_require__(/*! ./lock_object */ \"./node_modules/@abaplint/core/build/src/objects/lock_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./maintenance_and_transport_object */ \"./node_modules/@abaplint/core/build/src/objects/maintenance_and_transport_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./message_class */ \"./node_modules/@abaplint/core/build/src/objects/message_class.js\"), exports);\n__exportStar(__webpack_require__(/*! ./messaging_channel */ \"./node_modules/@abaplint/core/build/src/objects/messaging_channel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./mime_object */ \"./node_modules/@abaplint/core/build/src/objects/mime_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./namespace */ \"./node_modules/@abaplint/core/build/src/objects/namespace.js\"), exports);\n__exportStar(__webpack_require__(/*! ./number_range */ \"./node_modules/@abaplint/core/build/src/objects/number_range.js\"), exports);\n__exportStar(__webpack_require__(/*! ./object_characteristic */ \"./node_modules/@abaplint/core/build/src/objects/object_characteristic.js\"), exports);\n__exportStar(__webpack_require__(/*! ./package_interface */ \"./node_modules/@abaplint/core/build/src/objects/package_interface.js\"), exports);\n__exportStar(__webpack_require__(/*! ./package */ \"./node_modules/@abaplint/core/build/src/objects/package.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parameter */ \"./node_modules/@abaplint/core/build/src/objects/parameter.js\"), exports);\n__exportStar(__webpack_require__(/*! ./personalization_object */ \"./node_modules/@abaplint/core/build/src/objects/personalization_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./program */ \"./node_modules/@abaplint/core/build/src/objects/program.js\"), exports);\n__exportStar(__webpack_require__(/*! ./proxy_object */ \"./node_modules/@abaplint/core/build/src/objects/proxy_object.js\"), exports);\n__exportStar(__webpack_require__(/*! ./push_channel */ \"./node_modules/@abaplint/core/build/src/objects/push_channel.js\"), exports);\n__exportStar(__webpack_require__(/*! ./restriction_field */ \"./node_modules/@abaplint/core/build/src/objects/restriction_field.js\"), exports);\n__exportStar(__webpack_require__(/*! ./restriction_type */ \"./node_modules/@abaplint/core/build/src/objects/restriction_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./rfc_service */ \"./node_modules/@abaplint/core/build/src/objects/rfc_service.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sapscript_style */ \"./node_modules/@abaplint/core/build/src/objects/sapscript_style.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sapscript */ \"./node_modules/@abaplint/core/build/src/objects/sapscript.js\"), exports);\n__exportStar(__webpack_require__(/*! ./screen_variant */ \"./node_modules/@abaplint/core/build/src/objects/screen_variant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./search_help */ \"./node_modules/@abaplint/core/build/src/objects/search_help.js\"), exports);\n__exportStar(__webpack_require__(/*! ./service_binding */ \"./node_modules/@abaplint/core/build/src/objects/service_binding.js\"), exports);\n__exportStar(__webpack_require__(/*! ./service_definition */ \"./node_modules/@abaplint/core/build/src/objects/service_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./shared_memory */ \"./node_modules/@abaplint/core/build/src/objects/shared_memory.js\"), exports);\n__exportStar(__webpack_require__(/*! ./smart_form */ \"./node_modules/@abaplint/core/build/src/objects/smart_form.js\"), exports);\n__exportStar(__webpack_require__(/*! ./smart_style */ \"./node_modules/@abaplint/core/build/src/objects/smart_style.js\"), exports);\n__exportStar(__webpack_require__(/*! ./switch_assignment_hierarchy */ \"./node_modules/@abaplint/core/build/src/objects/switch_assignment_hierarchy.js\"), exports);\n__exportStar(__webpack_require__(/*! ./switch_assignments */ \"./node_modules/@abaplint/core/build/src/objects/switch_assignments.js\"), exports);\n__exportStar(__webpack_require__(/*! ./table_type */ \"./node_modules/@abaplint/core/build/src/objects/table_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./table */ \"./node_modules/@abaplint/core/build/src/objects/table.js\"), exports);\n__exportStar(__webpack_require__(/*! ./technical_job_definition */ \"./node_modules/@abaplint/core/build/src/objects/technical_job_definition.js\"), exports);\n__exportStar(__webpack_require__(/*! ./transaction_variant */ \"./node_modules/@abaplint/core/build/src/objects/transaction_variant.js\"), exports);\n__exportStar(__webpack_require__(/*! ./transaction */ \"./node_modules/@abaplint/core/build/src/objects/transaction.js\"), exports);\n__exportStar(__webpack_require__(/*! ./transformation */ \"./node_modules/@abaplint/core/build/src/objects/transformation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_pool */ \"./node_modules/@abaplint/core/build/src/objects/type_pool.js\"), exports);\n__exportStar(__webpack_require__(/*! ./view_cluster */ \"./node_modules/@abaplint/core/build/src/objects/view_cluster.js\"), exports);\n__exportStar(__webpack_require__(/*! ./view */ \"./node_modules/@abaplint/core/build/src/objects/view.js\"), exports);\n__exportStar(__webpack_require__(/*! ./virtual_end_point */ \"./node_modules/@abaplint/core/build/src/objects/virtual_end_point.js\"), exports);\n__exportStar(__webpack_require__(/*! ./web_dynpro_application_configuration */ \"./node_modules/@abaplint/core/build/src/objects/web_dynpro_application_configuration.js\"), exports);\n__exportStar(__webpack_require__(/*! ./web_dynpro_application */ \"./node_modules/@abaplint/core/build/src/objects/web_dynpro_application.js\"), exports);\n__exportStar(__webpack_require__(/*! ./web_dynpro_component_configuration */ \"./node_modules/@abaplint/core/build/src/objects/web_dynpro_component_configuration.js\"), exports);\n__exportStar(__webpack_require__(/*! ./web_dynpro_component */ \"./node_modules/@abaplint/core/build/src/objects/web_dynpro_component.js\"), exports);\n__exportStar(__webpack_require__(/*! ./web_mime */ \"./node_modules/@abaplint/core/build/src/objects/web_mime.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/info_object.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/info_object.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InfoObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass InfoObject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"IOBJ\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.InfoObject = InfoObject;\n//# sourceMappingURL=info_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/info_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/interface.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/interface.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Interface = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ./_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass Interface extends _abap_object_1.ABAPObject {\n constructor() {\n super(...arguments);\n this.def = undefined;\n this.parsedXML = undefined;\n }\n getType() {\n return \"INTF\";\n }\n setDefinition(def) {\n this.def = def;\n }\n getSequencedFiles() {\n const main = this.getMainABAPFile();\n if (main === undefined) {\n return [];\n }\n return [main];\n }\n getDefinition() {\n return this.def;\n }\n getInterface() {\n var _a;\n return (_a = this.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getInfo().getInterfaceDefinitionByName(this.getName());\n }\n getIdentifier() {\n var _a;\n return (_a = this.getInterface()) === null || _a === void 0 ? void 0 : _a.identifier;\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.def = undefined;\n this.parsedXML = undefined;\n super.setDirty();\n }\n getNameFromXML() {\n var _a;\n this.parseXML();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.name;\n }\n getDescription() {\n var _a;\n this.parseXML();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;\n }\n /////////////////////////\n parseXML() {\n if (this.parsedXML !== undefined) {\n return;\n }\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return;\n }\n const vseo = parsed.abapGit[\"asx:abap\"][\"asx:values\"].VSEOINTERF;\n if (vseo === undefined) {\n this.parsedXML.description = \"\";\n this.parsedXML.name = \"\";\n }\n else {\n this.parsedXML.description = vseo.DESCRIPT ? vseo.DESCRIPT : \"\";\n this.parsedXML.name = vseo.CLSNAME ? vseo.CLSNAME : \"\";\n }\n }\n}\nexports.Interface = Interface;\n//# sourceMappingURL=interface.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/interface.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/lock_object.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/lock_object.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LockObject = void 0;\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass LockObject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"ENQU\";\n }\n getAllowedNaming() {\n return {\n maxLength: 16,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n getPrimaryTable() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.primaryTable;\n }\n parseType(reg) {\n var _a;\n this.parse();\n const references = [];\n const ddic = new ddic_1.DDIC(reg);\n if ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.primaryTable) {\n const found = ddic.lookupTableOrView2(this.parsedXML.primaryTable);\n if (found) {\n references.push({ object: found });\n reg.getDDICReferences().setUsing(this, references);\n return found.parseType(reg);\n }\n else if (ddic.inErrorNamespace(this.parsedXML.primaryTable)) {\n return new basic_1.UnknownType(this.parsedXML.primaryTable + \" not found\");\n }\n else {\n return new basic_1.VoidType(this.parsedXML.primaryTable);\n }\n }\n else {\n return new basic_1.UnknownType(\"Parsing error\");\n }\n }\n parse() {\n var _a, _b;\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return { updated: false, runtime: 0 };\n }\n this.parsedXML.primaryTable = (_a = parsed.abapGit[\"asx:abap\"][\"asx:values\"].DD25V) === null || _a === void 0 ? void 0 : _a.ROOTTAB;\n this.parsedXML.description = (_b = parsed.abapGit[\"asx:abap\"][\"asx:values\"].DD25V) === null || _b === void 0 ? void 0 : _b.DDTEXT;\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n getDescription() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;\n }\n}\nexports.LockObject = LockObject;\n//# sourceMappingURL=lock_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/lock_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/maintenance_and_transport_object.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/maintenance_and_transport_object.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MaintenanceAndTransportObject = void 0;\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {\n setDirty() {\n super.setDirty();\n this.parsedXML = undefined;\n }\n getType() {\n return \"TOBJ\";\n }\n getDescription() {\n // todo\n return undefined;\n }\n getAllowedNaming() {\n return {\n maxLength: 31,\n allowNamespace: true,\n };\n }\n getArea() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.area;\n }\n getObjectName() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.objectName;\n }\n getObjectType() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.objectType;\n }\n parseType(reg) {\n var _a, _b, _c;\n this.parse();\n const references = [];\n const ddic = new ddic_1.DDIC(reg);\n if (((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.objectName) && this.parsedXML.objectType === \"S\") {\n const found = ddic.lookupTableOrView2(this.parsedXML.objectName);\n if (found) {\n references.push({ object: found });\n reg.getDDICReferences().setUsing(this, references);\n return found.parseType(reg);\n }\n else if (ddic.inErrorNamespace(this.parsedXML.objectName)) {\n return new basic_1.UnknownType(this.parsedXML.objectName + \" not found\");\n }\n else {\n return new basic_1.VoidType(this.parsedXML.objectName);\n }\n }\n else if (((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.objectType) !== \"S\" && ((_c = this.parsedXML) === null || _c === void 0 ? void 0 : _c.objectName)) {\n return new basic_1.VoidType(this.parsedXML.objectName);\n }\n else {\n return new basic_1.UnknownType(\"Parsing error\");\n }\n }\n parse() {\n var _a, _b, _c, _d;\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return { updated: false, runtime: 0 };\n }\n this.parsedXML.area = (_b = (_a = parsed.abapGit[\"asx:abap\"][\"asx:values\"].TOBJ) === null || _a === void 0 ? void 0 : _a.TVDIR) === null || _b === void 0 ? void 0 : _b.AREA;\n this.parsedXML.objectName = (_c = parsed.abapGit[\"asx:abap\"][\"asx:values\"].OBJH) === null || _c === void 0 ? void 0 : _c.OBJECTNAME;\n this.parsedXML.objectType = (_d = parsed.abapGit[\"asx:abap\"][\"asx:values\"].OBJH) === null || _d === void 0 ? void 0 : _d.OBJECTTYPE;\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n}\nexports.MaintenanceAndTransportObject = MaintenanceAndTransportObject;\n//# sourceMappingURL=maintenance_and_transport_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/maintenance_and_transport_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/message_class.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/message_class.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessageClass = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst message_1 = __webpack_require__(/*! ../abap/types/message */ \"./node_modules/@abaplint/core/build/src/abap/types/message.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nclass MessageClass extends _abstract_object_1.AbstractObject {\n constructor() {\n super(...arguments);\n this.parsedMessages = undefined;\n }\n getType() {\n return \"MSAG\";\n }\n getDescription() {\n // todo\n return undefined;\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedMessages = undefined;\n super.setDirty();\n }\n getMessages() {\n this.parseXML();\n const msg = this.parsedMessages;\n return msg ? msg : [];\n }\n getByNumber(num) {\n // todo, optimize performance,\n for (const message of this.getMessages()) {\n if (message.getNumber() === num) {\n return message;\n }\n }\n return undefined;\n }\n /////////////////////////////////\n parseXML() {\n var _a, _b;\n if (this.parsedMessages !== undefined) {\n return;\n }\n this.parsedMessages = [];\n const parsed = super.parseRaw2();\n if (parsed === undefined) {\n return;\n }\n const t100 = (_b = (_a = parsed === null || parsed === void 0 ? void 0 : parsed.abapGit) === null || _a === void 0 ? void 0 : _a[\"asx:abap\"][\"asx:values\"]) === null || _b === void 0 ? void 0 : _b.T100;\n if (t100 === undefined) {\n return;\n }\n for (const msg of (0, xml_utils_1.xmlToArray)(t100.T100)) {\n this.parsedMessages.push(new message_1.Message(msg.MSGNR, (0, xml_utils_1.unescape)(msg.TEXT)));\n }\n }\n}\nexports.MessageClass = MessageClass;\n//# sourceMappingURL=message_class.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/message_class.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/messaging_channel.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/messaging_channel.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessagingChannel = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass MessagingChannel extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SAMC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.MessagingChannel = MessagingChannel;\n//# sourceMappingURL=messaging_channel.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/messaging_channel.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/mime_object.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/mime_object.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MIMEObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass MIMEObject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SMIM\";\n }\n getURL() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.URL;\n }\n getClass() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.CLASS;\n }\n isFolder() {\n var _a;\n return ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.FOLDER) === \"X\";\n }\n getAllowedNaming() {\n return {\n maxLength: 32,\n allowNamespace: false,\n };\n }\n getDataFile() {\n const main = this.getXMLFile();\n for (const f of this.getFiles()) {\n if (f.getFilename() !== (main === null || main === void 0 ? void 0 : main.getFilename())) {\n return f;\n }\n }\n return undefined;\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n getDescription() {\n // this object type does not have a description\n return undefined;\n }\n parse() {\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return { updated: false, runtime: 0 };\n }\n this.parsedXML.URL = parsed.abapGit[\"asx:abap\"][\"asx:values\"].URL;\n this.parsedXML.CLASS = parsed.abapGit[\"asx:abap\"][\"asx:values\"].CLASS;\n this.parsedXML.FOLDER = parsed.abapGit[\"asx:abap\"][\"asx:values\"].FOLDER;\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n}\nexports.MIMEObject = MIMEObject;\n//# sourceMappingURL=mime_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/mime_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/namespace.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/namespace.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Namespace = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Namespace extends _abstract_object_1.AbstractObject {\n getType() {\n return \"NSPC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 10,\n allowNamespace: true,\n customRegex: new RegExp(/^\\/[A-Z_\\d]{3,8}\\/$/i),\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Namespace = Namespace;\n//# sourceMappingURL=namespace.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/namespace.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/number_range.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/number_range.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NumberRange = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass NumberRange extends _abstract_object_1.AbstractObject {\n getType() {\n return \"NROB\";\n }\n getAllowedNaming() {\n return {\n maxLength: 10,\n allowNamespace: true,\n };\n }\n getDomain() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.domain;\n }\n getPercentage() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.percentage;\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n parse() {\n var _a, _b, _c, _d, _e, _f;\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined) {\n return { updated: false, runtime: 0 };\n }\n const text = (_c = (_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a[\"asx:abap\"]) === null || _b === void 0 ? void 0 : _b[\"asx:values\"]) === null || _c === void 0 ? void 0 : _c.TEXT;\n this.parsedXML.description = text === null || text === void 0 ? void 0 : text.TXT;\n const attributes = (_f = (_e = (_d = parsed.abapGit) === null || _d === void 0 ? void 0 : _d[\"asx:abap\"]) === null || _e === void 0 ? void 0 : _e[\"asx:values\"]) === null || _f === void 0 ? void 0 : _f.ATTRIBUTES;\n this.parsedXML.domain = attributes === null || attributes === void 0 ? void 0 : attributes.DOMLEN;\n this.parsedXML.percentage = parseFloat((attributes === null || attributes === void 0 ? void 0 : attributes.PERCENTAGE) || \"\");\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n getDescription() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;\n }\n}\nexports.NumberRange = NumberRange;\n//# sourceMappingURL=number_range.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/number_range.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/object_characteristic.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/object_characteristic.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ObjectCharacteristic = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ObjectCharacteristic extends _abstract_object_1.AbstractObject {\n getType() {\n return \"CHAR\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ObjectCharacteristic = ObjectCharacteristic;\n//# sourceMappingURL=object_characteristic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/object_characteristic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/package.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/package.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Package = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Package extends _abstract_object_1.AbstractObject {\n getType() {\n return \"DEVC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Package = Package;\n//# sourceMappingURL=package.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/package.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/package_interface.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/package_interface.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PackageInterface = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass PackageInterface extends _abstract_object_1.AbstractObject {\n getType() {\n return \"PINF\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.PackageInterface = PackageInterface;\n//# sourceMappingURL=package_interface.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/package_interface.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/parameter.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/parameter.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Parameter = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Parameter extends _abstract_object_1.AbstractObject {\n getType() {\n return \"PARA\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Parameter = Parameter;\n//# sourceMappingURL=parameter.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/parameter.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/personalization_object.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/personalization_object.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PersonalizationObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass PersonalizationObject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"PERS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.PersonalizationObject = PersonalizationObject;\n//# sourceMappingURL=personalization_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/personalization_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/program.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/program.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Program = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ./_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass Program extends _abap_object_1.ABAPObject {\n getType() {\n return \"PROG\";\n }\n getSequencedFiles() {\n const main = this.getMainABAPFile();\n if (main === undefined) {\n return [];\n }\n return [main];\n }\n getDescription() {\n // todo\n return undefined;\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n isInclude() {\n this.parseXML();\n return this.parsedXML.isInclude;\n }\n isModulePool() {\n this.parseXML();\n return this.parsedXML.isModulePool;\n }\n parseXML() {\n if (this.parsedXML === undefined) {\n const file = this.getXMLFile();\n this.parsedXML = {\n isInclude: file ? file.getRaw().includes(\"I\") : false,\n isModulePool: file ? file.getRaw().includes(\"M\") : false,\n };\n }\n }\n}\nexports.Program = Program;\n//# sourceMappingURL=program.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/program.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/proxy_object.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/proxy_object.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ProxyObject = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ProxyObject extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SPRX\";\n }\n getAllowedNaming() {\n return {\n maxLength: 34,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ProxyObject = ProxyObject;\n//# sourceMappingURL=proxy_object.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/proxy_object.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/push_channel.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/push_channel.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PushChannel = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass PushChannel extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SAPC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.PushChannel = PushChannel;\n//# sourceMappingURL=push_channel.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/push_channel.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/rename_data_element.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/rename_data_element.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RenameDataElement = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst renamer_helper_1 = __webpack_require__(/*! ./renamer_helper */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js\");\nclass RenameDataElement {\n constructor(reg) {\n this.reg = reg;\n }\n buildEdits(obj, oldName, newName) {\n if (!(obj instanceof __1.DataElement)) {\n throw new Error(\"RenameDataElement, not a data element\");\n }\n let changes = [];\n const helper = new renamer_helper_1.RenamerHelper(this.reg);\n changes = changes.concat(helper.buildXMLFileEdits(obj, \"ROLLNAME\", oldName, newName));\n changes = changes.concat(helper.renameFiles(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICCodeReferences(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICTABLReferences(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICTTYPReferences(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICAUTHReferences(obj, oldName, newName));\n return {\n documentChanges: changes,\n };\n }\n}\nexports.RenameDataElement = RenameDataElement;\n//# sourceMappingURL=rename_data_element.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/rename_data_element.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/rename_domain.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/rename_domain.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RenameDomain = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst renamer_helper_1 = __webpack_require__(/*! ./renamer_helper */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js\");\nclass RenameDomain {\n constructor(reg) {\n this.reg = reg;\n }\n buildEdits(obj, oldName, newName) {\n if (!(obj instanceof __1.Domain)) {\n throw new Error(\"RenameDomain, not a domain\");\n }\n let changes = [];\n const helper = new renamer_helper_1.RenamerHelper(this.reg);\n changes = changes.concat(helper.buildXMLFileEdits(obj, \"DOMNAME\", oldName, newName));\n changes = changes.concat(helper.renameFiles(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICDTELReferences(obj, oldName, newName));\n return {\n documentChanges: changes,\n };\n }\n}\nexports.RenameDomain = RenameDomain;\n//# sourceMappingURL=rename_domain.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/rename_domain.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/rename_global_class.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/rename_global_class.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RenameGlobalClass = void 0;\nconst Statements = __webpack_require__(/*! ../../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst vscode_languageserver_types_1 = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ../../lsp/_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst renamer_helper_1 = __webpack_require__(/*! ./renamer_helper */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js\");\nclass RenameGlobalClass {\n constructor(reg) {\n this.reg = reg;\n }\n buildEdits(obj, oldName, newName) {\n if (!(obj instanceof __1.Class)) {\n throw new Error(\"not a class\");\n }\n const main = obj.getMainABAPFile();\n if (main === undefined) {\n throw new Error(\"Main file not found\");\n }\n let changes = [];\n // todo, this is actually the same as \"id\" ?\n {\n const edits = [];\n for (const s of main.getStatements()) {\n if (s.get() instanceof Statements.ClassDefinition) {\n const exp = s.findFirstExpression(Expressions.ClassName);\n if (exp === undefined) {\n continue;\n }\n edits.push(vscode_languageserver_types_1.TextEdit.replace(_lsp_utils_1.LSPUtils.tokenToRange(exp.getFirstToken()), newName.toLowerCase()));\n }\n else if (s.get() instanceof Statements.ClassImplementation) {\n const exp = s.findFirstExpression(Expressions.ClassName);\n if (exp === undefined) {\n continue;\n }\n edits.push(vscode_languageserver_types_1.TextEdit.replace(_lsp_utils_1.LSPUtils.tokenToRange(exp.getFirstToken()), newName.toLowerCase()));\n }\n }\n changes.push(vscode_languageserver_types_1.TextDocumentEdit.create({ uri: main.getFilename(), version: 1 }, edits));\n }\n const helper = new renamer_helper_1.RenamerHelper(this.reg);\n changes = changes.concat(helper.buildXMLFileEdits(obj, \"CLSNAME\", oldName, newName));\n changes = changes.concat(helper.renameFiles(obj, oldName, newName));\n changes = changes.concat(helper.renameReferences(obj.getIdentifier(), oldName, newName));\n changes = changes.concat(helper.renameDDICTABLReferences(obj, oldName, newName));\n return {\n documentChanges: changes,\n };\n }\n}\nexports.RenameGlobalClass = RenameGlobalClass;\n//# sourceMappingURL=rename_global_class.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/rename_global_class.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/rename_global_interface.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/rename_global_interface.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RenameGlobalInterface = void 0;\nconst Statements = __webpack_require__(/*! ../../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst vscode_languageserver_types_1 = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst _lsp_utils_1 = __webpack_require__(/*! ../../lsp/_lsp_utils */ \"./node_modules/@abaplint/core/build/src/lsp/_lsp_utils.js\");\nconst renamer_helper_1 = __webpack_require__(/*! ./renamer_helper */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js\");\nconst interface_1 = __webpack_require__(/*! ../interface */ \"./node_modules/@abaplint/core/build/src/objects/interface.js\");\nclass RenameGlobalInterface {\n constructor(reg) {\n this.reg = reg;\n }\n buildEdits(obj, oldName, newName) {\n if (!(obj instanceof interface_1.Interface)) {\n throw new Error(\"not an interface\");\n }\n const main = obj.getMainABAPFile();\n if (main === undefined) {\n throw new Error(\"Main file not found\");\n }\n let changes = [];\n // todo, this is actually the same as \"id\" ?\n {\n const edits = [];\n for (const s of main.getStatements()) {\n if (s.get() instanceof Statements.Interface) {\n const exp = s.findFirstExpression(Expressions.InterfaceName);\n if (exp === undefined) {\n continue;\n }\n edits.push(vscode_languageserver_types_1.TextEdit.replace(_lsp_utils_1.LSPUtils.tokenToRange(exp.getFirstToken()), newName.toLowerCase()));\n }\n }\n changes.push(vscode_languageserver_types_1.TextDocumentEdit.create({ uri: main.getFilename(), version: 1 }, edits));\n }\n const helper = new renamer_helper_1.RenamerHelper(this.reg);\n changes = changes.concat(helper.buildXMLFileEdits(obj, \"CLSNAME\", oldName, newName));\n changes = changes.concat(helper.renameFiles(obj, oldName, newName));\n changes = changes.concat(helper.renameReferences(obj.getIdentifier(), oldName, newName));\n return {\n documentChanges: changes,\n };\n }\n}\nexports.RenameGlobalInterface = RenameGlobalInterface;\n//# sourceMappingURL=rename_global_interface.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/rename_global_interface.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/rename_table.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/rename_table.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RenameTable = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst renamer_helper_1 = __webpack_require__(/*! ./renamer_helper */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js\");\nclass RenameTable {\n constructor(reg) {\n this.reg = reg;\n }\n buildEdits(obj, oldName, newName) {\n if (!(obj instanceof __1.Table)) {\n throw new Error(\"RenameTable, not a table\");\n }\n let changes = [];\n const helper = new renamer_helper_1.RenamerHelper(this.reg);\n changes = changes.concat(helper.buildXMLFileEdits(obj, \"TABNAME\", oldName, newName));\n changes = changes.concat(helper.renameFiles(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICCodeReferences(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICTABLReferences(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICTTYPReferences(obj, oldName, newName));\n return {\n documentChanges: changes,\n };\n }\n}\nexports.RenameTable = RenameTable;\n//# sourceMappingURL=rename_table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/rename_table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/rename_table_type.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/rename_table_type.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RenameTableType = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst renamer_helper_1 = __webpack_require__(/*! ./renamer_helper */ \"./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js\");\nclass RenameTableType {\n constructor(reg) {\n this.reg = reg;\n }\n buildEdits(obj, oldName, newName) {\n if (!(obj instanceof __1.TableType)) {\n throw new Error(\"RenameTableType, not a table type\");\n }\n let changes = [];\n const helper = new renamer_helper_1.RenamerHelper(this.reg);\n changes = changes.concat(helper.buildXMLFileEdits(obj, \"TYPENAME\", oldName, newName));\n changes = changes.concat(helper.renameFiles(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICCodeReferences(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICTABLReferences(obj, oldName, newName));\n changes = changes.concat(helper.renameDDICTTYPReferences(obj, oldName, newName));\n return {\n documentChanges: changes,\n };\n }\n}\nexports.RenameTableType = RenameTableType;\n//# sourceMappingURL=rename_table_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/rename_table_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/renamer.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/renamer.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Renamer = void 0;\nconst vscode_languageserver_types_1 = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst memory_file_1 = __webpack_require__(/*! ../../files/memory_file */ \"./node_modules/@abaplint/core/build/src/files/memory_file.js\");\nconst rename_data_element_1 = __webpack_require__(/*! ./rename_data_element */ \"./node_modules/@abaplint/core/build/src/objects/rename/rename_data_element.js\");\nconst rename_domain_1 = __webpack_require__(/*! ./rename_domain */ \"./node_modules/@abaplint/core/build/src/objects/rename/rename_domain.js\");\nconst rename_global_class_1 = __webpack_require__(/*! ./rename_global_class */ \"./node_modules/@abaplint/core/build/src/objects/rename/rename_global_class.js\");\nconst rename_global_interface_1 = __webpack_require__(/*! ./rename_global_interface */ \"./node_modules/@abaplint/core/build/src/objects/rename/rename_global_interface.js\");\nconst rename_table_1 = __webpack_require__(/*! ./rename_table */ \"./node_modules/@abaplint/core/build/src/objects/rename/rename_table.js\");\nconst rename_table_type_1 = __webpack_require__(/*! ./rename_table_type */ \"./node_modules/@abaplint/core/build/src/objects/rename/rename_table_type.js\");\nclass Renamer {\n constructor(reg) {\n this.reg = reg;\n }\n /** Applies the renaming to the objects and files in the registry,\n * after renaming the registry is not parsed */\n rename(type, oldName, newName) {\n const edits = this.buildEdits(type, oldName, newName);\n if (edits === undefined) {\n throw new Error(\"no changes could be determined\");\n }\n else if (edits.changes) {\n throw new Error(\"only documentChanges expected\");\n }\n const result = this.apply(edits);\n this.reg.findIssues(); // hmm, this builds the ddic references\n return result;\n }\n /** Builds edits, but does not apply to registry, used by LSP */\n buildEdits(type, oldName, newName) {\n this.reg.parse(); // the registry must be parsed to dermine references\n const obj = this.reg.getObject(type, oldName);\n if (obj === undefined) {\n throw new Error(\"rename, object not found\");\n }\n else if (newName.length > obj.getAllowedNaming().maxLength) {\n // todo, also do not allow strange characters and spaces\n throw new Error(\"Name not allowed\");\n }\n const r = this.factory(type);\n return r.buildEdits(obj, oldName.toUpperCase(), newName);\n }\n //////////////////\n factory(type) {\n switch (type) {\n case \"CLAS\":\n return new rename_global_class_1.RenameGlobalClass(this.reg);\n case \"DTEL\":\n return new rename_data_element_1.RenameDataElement(this.reg);\n case \"DOMA\":\n return new rename_domain_1.RenameDomain(this.reg);\n case \"TABL\":\n return new rename_table_1.RenameTable(this.reg);\n case \"TTYP\":\n return new rename_table_type_1.RenameTableType(this.reg);\n case \"INTF\":\n return new rename_global_interface_1.RenameGlobalInterface(this.reg);\n default:\n throw new Error(\"Renaming of \" + type + \" not yet supported\");\n }\n }\n apply(edits) {\n const renames = [];\n const result = {\n addedFiles: new Set(),\n deletedFiles: new Set(),\n updatedFiles: new Set(),\n };\n // assumption: only renames or text changes, no deletes or creates\n for (const dc of edits.documentChanges || []) {\n if (vscode_languageserver_types_1.TextDocumentEdit.is(dc)) {\n this.applyEdit(dc);\n result.updatedFiles.add(dc.textDocument.uri);\n }\n else if (vscode_languageserver_types_1.RenameFile.is(dc)) {\n renames.push(dc);\n }\n else {\n throw new Error(\"unexpected documentChange type\");\n }\n }\n for (const rename of renames) {\n result.updatedFiles.delete(rename.oldUri);\n result.deletedFiles.add(rename.oldUri);\n result.addedFiles.add(rename.newUri);\n }\n this.applyRenames(renames);\n return result;\n }\n applyEdit(dc) {\n const file = this.reg.getFileByName(dc.textDocument.uri);\n if (file === undefined) {\n throw new Error(\"file \" + dc.textDocument.uri + \" not found\");\n }\n const rows = file.getRawRows();\n for (const e of dc.edits) {\n if (e.range.start.line !== e.range.end.line) {\n throw new Error(\"applyEdit, start and end line differ\");\n }\n const before = rows[e.range.start.line];\n rows[e.range.start.line] = before.substring(0, e.range.start.character) +\n e.newText +\n before.substring(e.range.end.character);\n }\n const newFile = new memory_file_1.MemoryFile(dc.textDocument.uri, rows.join(\"\\n\"));\n this.reg.updateFile(newFile);\n }\n applyRenames(renames) {\n for (const r of renames) {\n const old = this.reg.getFileByName(r.oldUri);\n if (old === undefined) {\n throw new Error(\"applyRenames, old not found\");\n }\n const newFile = new memory_file_1.MemoryFile(r.newUri, old.getRaw());\n this.reg.removeFile(old);\n this.reg.addFile(newFile);\n }\n }\n}\nexports.Renamer = Renamer;\n//# sourceMappingURL=renamer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/renamer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RenamerHelper = void 0;\nconst vscode_languageserver_types_1 = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nconst __1 = __webpack_require__(/*! ../.. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst syntax_1 = __webpack_require__(/*! ../../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst position_1 = __webpack_require__(/*! ../../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass RenamerHelper {\n constructor(reg) {\n this.reg = reg;\n }\n renameReferences(id, oldName, newName) {\n if (id === undefined) {\n throw new Error(\"renameReferences, no main identifier found\");\n }\n let refs = [];\n for (const o of this.reg.getObjects()) {\n if (o instanceof _abap_object_1.ABAPObject) {\n if (this.reg.isDependency(o)) {\n continue; // do not search in dependencies\n }\n refs = refs.concat(this.findReferences(new syntax_1.SyntaxLogic(this.reg, o).run().spaghetti.getTop(), id));\n }\n }\n // start with the last reference in the file first, if there are multiple refs per line\n return this.replaceRefs(refs, oldName, newName).reverse();\n }\n renameDDICCodeReferences(obj, oldName, newName) {\n const changes = [];\n const used = this.reg.getDDICReferences().listWhereUsed(obj);\n for (const u of used) {\n if (u.token === undefined || u.filename === undefined) {\n continue;\n }\n const range = vscode_languageserver_types_1.Range.create(u.token.getStart().getRow() - 1, u.token.getStart().getCol() - 1, u.token.getStart().getRow() - 1, u.token.getStart().getCol() - 1 + oldName.length);\n changes.push(vscode_languageserver_types_1.TextDocumentEdit.create({ uri: u.filename, version: 1 }, [vscode_languageserver_types_1.TextEdit.replace(range, newName.toLowerCase())]));\n }\n return changes;\n }\n renameDDICTABLReferences(obj, oldName, newName) {\n const changes = [];\n const used = this.reg.getDDICReferences().listWhereUsed(obj);\n const handled = {};\n for (const u of used) {\n if (u.type !== \"TABL\" || handled[u.name.toUpperCase()] === true) {\n // a TABL might reference the object multiple times, but they are all fixes in one call to buildXMLFileEdits\n continue;\n }\n const tabl = this.reg.getObject(u.type, u.name);\n if (tabl === undefined) {\n continue;\n }\n changes.push(...this.buildXMLFileEdits(tabl, \"ROLLNAME\", oldName, newName));\n handled[u.name.toUpperCase()] = true;\n }\n return changes;\n }\n renameDDICDTELReferences(obj, oldName, newName) {\n const changes = [];\n const used = this.reg.getDDICReferences().listWhereUsed(obj);\n for (const u of used) {\n if (u.type !== \"DTEL\") {\n continue;\n }\n const tabl = this.reg.getObject(u.type, u.name);\n if (tabl === undefined) {\n continue;\n }\n changes.push(...this.buildXMLFileEdits(tabl, \"DOMNAME\", oldName, newName));\n }\n return changes;\n }\n renameDDICTTYPReferences(obj, oldName, newName) {\n const changes = [];\n const used = this.reg.getDDICReferences().listWhereUsed(obj);\n for (const u of used) {\n if (u.type !== \"TTYP\") {\n continue;\n }\n const tabl = this.reg.getObject(u.type, u.name);\n if (tabl === undefined) {\n continue;\n }\n changes.push(...this.buildXMLFileEdits(tabl, \"ROWTYPE\", oldName, newName));\n }\n return changes;\n }\n renameDDICAUTHReferences(obj, oldName, newName) {\n const changes = [];\n const used = this.reg.getDDICReferences().listWhereUsed(obj);\n for (const u of used) {\n if (u.type !== \"AUTH\") {\n continue;\n }\n const tabl = this.reg.getObject(u.type, u.name);\n if (tabl === undefined) {\n continue;\n }\n changes.push(...this.buildXMLFileEdits(tabl, \"ROLLNAME\", oldName, newName));\n }\n return changes;\n }\n buildXMLFileEdits(object, xmlTag, oldName, newName) {\n const changes = [];\n const xml = object.getXMLFile();\n if (xml === undefined) {\n return [];\n }\n const tag = xmlTag.toUpperCase();\n const search = \"<\" + tag + \">\" + oldName.toUpperCase() + \"\";\n const length = tag.length + 2;\n const rows = xml.getRawRows();\n for (let i = 0; i < rows.length; i++) {\n const index = rows[i].indexOf(search);\n if (index >= 0) {\n const range = vscode_languageserver_types_1.Range.create(i, index + length, i, index + oldName.length + length);\n changes.push(vscode_languageserver_types_1.TextDocumentEdit.create({ uri: xml.getFilename(), version: 1 }, [vscode_languageserver_types_1.TextEdit.replace(range, newName.toUpperCase())]));\n }\n }\n return changes;\n }\n renameFiles(obj, oldName, name) {\n const list = [];\n const newName = name.toLowerCase().replace(/\\//g, \"#\");\n for (const f of obj.getFiles()) {\n // todo, this is not completely correct, ie. if the URI contains the same directory name as the object name\n const newFilename = f.getFilename().replace(oldName.toLowerCase(), newName.toLowerCase());\n list.push(vscode_languageserver_types_1.RenameFile.create(f.getFilename(), newFilename));\n }\n return list;\n }\n ////////////////////////\n replaceRefs(refs, oldName, newName) {\n const changes = [];\n // \"zif_abapgit_auth~is_allowed\" is a single token so only replace the first part of a token\n for (const r of refs) {\n const range = vscode_languageserver_types_1.Range.create(r.getStart().getRow() - 1, r.getStart().getCol() - 1, r.getStart().getRow() - 1, r.getStart().getCol() - 1 + oldName.length);\n changes.push(vscode_languageserver_types_1.TextDocumentEdit.create({ uri: r.getFilename(), version: 1 }, [vscode_languageserver_types_1.TextEdit.replace(range, newName.toLowerCase())]));\n }\n return changes;\n }\n findReferences(node, identifier) {\n var _a;\n let ret = [];\n if (node.getIdentifier().stype !== _scope_type_1.ScopeType.BuiltIn) {\n for (const r of node.getData().references) {\n if (((_a = r.resolved) === null || _a === void 0 ? void 0 : _a.equals(identifier))\n && r.referenceType !== __1.ReferenceType.InferredType\n && !(r.position.getStart() instanceof position_1.VirtualPosition)) {\n ret.push(r.position);\n }\n }\n }\n for (const c of node.getChildren()) {\n ret = ret.concat(this.findReferences(c, identifier));\n }\n return ret;\n }\n}\nexports.RenamerHelper = RenamerHelper;\n//# sourceMappingURL=renamer_helper.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rename/renamer_helper.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/restriction_field.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/restriction_field.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RestrictionField = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass RestrictionField extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SIA5\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.RestrictionField = RestrictionField;\n//# sourceMappingURL=restriction_field.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/restriction_field.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/restriction_type.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/restriction_type.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RestrictionType = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass RestrictionType extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SIA2\";\n }\n getAllowedNaming() {\n return {\n maxLength: 200,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.RestrictionType = RestrictionType;\n//# sourceMappingURL=restriction_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/restriction_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/rfc_service.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/rfc_service.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RFCService = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass RFCService extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SRFC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.RFCService = RFCService;\n//# sourceMappingURL=rfc_service.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/rfc_service.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/sapscript.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/sapscript.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SAPScript = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SAPScript extends _abstract_object_1.AbstractObject {\n getType() {\n return \"FORM\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SAPScript = SAPScript;\n//# sourceMappingURL=sapscript.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/sapscript.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/sapscript_style.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/sapscript_style.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SAPScriptStyle = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SAPScriptStyle extends _abstract_object_1.AbstractObject {\n getType() {\n return \"STYL\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SAPScriptStyle = SAPScriptStyle;\n//# sourceMappingURL=sapscript_style.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/sapscript_style.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/screen_variant.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/screen_variant.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ScreenVariant = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ScreenVariant extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SCVI\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ScreenVariant = ScreenVariant;\n//# sourceMappingURL=screen_variant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/screen_variant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/search_help.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/search_help.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SearchHelp = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SearchHelp extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SHLP\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SearchHelp = SearchHelp;\n//# sourceMappingURL=search_help.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/search_help.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/service_binding.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/service_binding.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ServiceBinding = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ServiceBinding extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SRVB\";\n }\n getAllowedNaming() {\n return {\n maxLength: 26,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ServiceBinding = ServiceBinding;\n//# sourceMappingURL=service_binding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/service_binding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/service_definition.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/service_definition.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ServiceDefinition = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ServiceDefinition extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SRVD\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ServiceDefinition = ServiceDefinition;\n//# sourceMappingURL=service_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/service_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/shared_memory.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/shared_memory.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SharedMemory = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SharedMemory extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SHMA\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SharedMemory = SharedMemory;\n//# sourceMappingURL=shared_memory.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/shared_memory.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/smart_form.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/smart_form.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SmartForm = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SmartForm extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SSFO\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SmartForm = SmartForm;\n//# sourceMappingURL=smart_form.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/smart_form.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/smart_style.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/smart_style.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SmartStyle = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SmartStyle extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SSST\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SmartStyle = SmartStyle;\n//# sourceMappingURL=smart_style.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/smart_style.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/switch_assignment_hierarchy.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/switch_assignment_hierarchy.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SwitchAssignmentHierarchy = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SwitchAssignmentHierarchy extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SHI8\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SwitchAssignmentHierarchy = SwitchAssignmentHierarchy;\n//# sourceMappingURL=switch_assignment_hierarchy.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/switch_assignment_hierarchy.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/switch_assignments.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/switch_assignments.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SwitchAssignments = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass SwitchAssignments extends _abstract_object_1.AbstractObject {\n getType() {\n return \"SFSW\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.SwitchAssignments = SwitchAssignments;\n//# sourceMappingURL=switch_assignments.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/switch_assignments.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/table.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/table.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Table = exports.TableCategory = exports.EnhancementCategory = void 0;\nconst Types = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nvar EnhancementCategory;\n(function (EnhancementCategory) {\n EnhancementCategory[\"NotClassified\"] = \"0\";\n EnhancementCategory[\"CannotBeEhanced\"] = \"1\";\n EnhancementCategory[\"Character\"] = \"2\";\n EnhancementCategory[\"CharacterOrNumeric\"] = \"3\";\n EnhancementCategory[\"Deep\"] = \"4\";\n})(EnhancementCategory || (exports.EnhancementCategory = EnhancementCategory = {}));\nvar TableCategory;\n(function (TableCategory) {\n TableCategory[\"Transparent\"] = \"TRANSP\";\n TableCategory[\"Structure\"] = \"INTTAB\";\n TableCategory[\"Cluster\"] = \"CLUSTER\";\n TableCategory[\"Pooled\"] = \"POOL\";\n TableCategory[\"View\"] = \"VIEW\";\n TableCategory[\"Append\"] = \"APPEND\";\n})(TableCategory || (exports.TableCategory = TableCategory = {}));\nclass Table extends _abstract_object_1.AbstractObject {\n getType() {\n return \"TABL\";\n }\n getDescription() {\n // todo\n return undefined;\n }\n getAllowedNaming() {\n let length = 30;\n if (this.getTableCategory() === TableCategory.Transparent) {\n length = 16;\n }\n return {\n maxLength: length,\n allowNamespace: true,\n };\n }\n setDirty() {\n this.parsedData = undefined;\n super.setDirty();\n }\n listKeys(reg) {\n if (this.parsedData === undefined) {\n this.parseXML();\n }\n if (this.parsedData === undefined) {\n return [];\n }\n const ret = [];\n for (const p of this.parsedData.fields) {\n if (p.KEYFLAG === \"X\" && p.FIELDNAME === \".INCLUDE\") {\n const lookup = new ddic_1.DDIC(reg).lookupTableOrView(p.PRECFIELD).type;\n if (lookup instanceof Types.StructureType) {\n for (const c of lookup.getComponents()) {\n ret.push(c.name);\n }\n }\n }\n else if (p.KEYFLAG === \"X\") {\n ret.push(p.FIELDNAME);\n }\n }\n return ret;\n }\n parseType(reg) {\n var _a, _b;\n if (this.parsedData === undefined) {\n this.parseXML();\n if (this.parsedData === undefined) {\n return new Types.UnknownType(\"Table, parser error\");\n }\n }\n if (reg.getConfig().getVersion() === version_1.Version.Cloud\n && this.parsedData.dataClass === \"USER3\") {\n return new Types.UnknownType(\"Data class = USER3 not allowed in cloud\");\n }\n const references = [];\n const components = [];\n const ddic = new ddic_1.DDIC(reg);\n for (const field of this.parsedData.fields) {\n const comptype = field.COMPTYPE ? field.COMPTYPE : \"\";\n if (comptype === \"E\") { // data element\n const lookup = ddic.lookupDataElement(field.ROLLNAME);\n components.push({ name: field.FIELDNAME, type: lookup.type });\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (field.FIELDNAME === \".INCLUDE\" || field.FIELDNAME === \".INCLU--AP\") { // incude or append structure\n if (field.PRECFIELD === undefined) {\n return new Types.UnknownType(\"Table, parser error, PRECFIELD undefined\");\n }\n const lookup = ddic.lookupTableOrView(field.PRECFIELD);\n let found = lookup.type;\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n if (found instanceof _typed_identifier_1.TypedIdentifier) {\n found = found.getType();\n }\n if (found instanceof Types.StructureType) {\n if (field.GROUPNAME !== undefined) {\n components.push({ name: field.GROUPNAME, type: found });\n }\n for (const c of found.getComponents()) {\n components.push({ name: c.name, type: c.type });\n }\n }\n else if ((((_a = field.PRECFIELD) === null || _a === void 0 ? void 0 : _a.startsWith(\"CI_\")) || ((_b = field.PRECFIELD) === null || _b === void 0 ? void 0 : _b.startsWith(\"SI_\")))\n && found instanceof Types.UnknownType) {\n continue;\n }\n else if (found instanceof Types.UnknownType) {\n return found;\n }\n else if (found instanceof Types.VoidType) {\n // set the full structure to void\n return found;\n }\n else {\n components.push({ name: field.FIELDNAME, type: found });\n }\n }\n else if (comptype === \"S\" && field.FIELDNAME.startsWith(\".INCLU-\")) {\n const lookup = ddic.lookupTableOrView(field.PRECFIELD);\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n const found = lookup.type;\n if (found instanceof Types.VoidType) {\n // set the full structure to void\n return found;\n }\n else if (found instanceof Types.StructureType) {\n const suffix = field.FIELDNAME.split(\"-\")[1];\n for (const c of found.getComponents()) {\n components.push({ name: c.name + suffix, type: c.type });\n }\n }\n else if (found instanceof Types.UnknownType) {\n return found;\n }\n }\n else if (comptype === \"S\") {\n const lookup = ddic.lookupTableOrView(field.ROLLNAME);\n components.push({ name: field.FIELDNAME, type: lookup.type });\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (comptype === \"R\") {\n if (field.ROLLNAME === undefined) {\n throw new Error(\"Expected ROLLNAME\");\n }\n if (field.ROLLNAME === \"DATA\") {\n components.push({\n name: field.FIELDNAME,\n type: new basic_1.DataReference(new basic_1.AnyType())\n });\n }\n else if (field.ROLLNAME === \"OBJECT\") {\n components.push({\n name: field.FIELDNAME,\n type: new basic_1.GenericObjectReferenceType()\n });\n }\n else if (field.REFTYPE === \"S\") {\n const lookup = ddic.lookupTableOrView(field.ROLLNAME);\n components.push({ name: field.FIELDNAME, type: new basic_1.DataReference(lookup.type) });\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (field.REFTYPE === \"L\") {\n const lookup = ddic.lookupTableType(field.ROLLNAME);\n components.push({ name: field.FIELDNAME, type: new basic_1.DataReference(lookup.type) });\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (field.REFTYPE === \"E\") {\n const lookup = ddic.lookupDataElement(field.ROLLNAME);\n components.push({ name: field.FIELDNAME, type: new basic_1.DataReference(lookup.type) });\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else {\n const lookup = ddic.lookupObject(field.ROLLNAME);\n components.push({ name: field.FIELDNAME, type: lookup.type });\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n }\n else if (comptype === \"L\") {\n const lookup = ddic.lookupTableType(field.ROLLNAME);\n components.push({ name: field.FIELDNAME, type: lookup.type });\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (comptype === \"\") { // built in\n const datatype = field.DATATYPE;\n if (datatype === undefined) {\n throw new Error(\"Expected DATATYPE, while parsing TABL \" + this.getName());\n }\n const length = field.LENG ? field.LENG : field.INTLEN;\n components.push({\n name: field.FIELDNAME,\n type: ddic.textToType(datatype, length, field.DECIMALS, this.getName() + \"-\" + field.FIELDNAME)\n });\n }\n else {\n components.push({\n name: field.FIELDNAME,\n type: new Types.UnknownType(\"Table \" + this.getName() + \", unknown component type \\\"\" + comptype + \"\\\"\")\n });\n }\n if (field.CHECKTABLE) {\n const lookup = ddic.lookupTableOrView2(field.CHECKTABLE);\n if (lookup) {\n references.push({ object: lookup });\n }\n }\n }\n if (components.length === 0) {\n return new Types.UnknownType(\"Table/Structure \" + this.getName() + \" does not contain any components\");\n }\n reg.getDDICReferences().setUsing(this, references);\n return new Types.StructureType(components, this.getName(), this.getName());\n }\n getTableCategory() {\n var _a;\n if (this.parsedData === undefined) {\n this.parseXML();\n }\n return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.tableCategory;\n }\n getEnhancementCategory() {\n var _a;\n if (this.parsedData === undefined) {\n this.parseXML();\n }\n if (((_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.enhancementCategory) === undefined) {\n return EnhancementCategory.NotClassified;\n }\n return this.parsedData.enhancementCategory;\n }\n ///////////////\n parseXML() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const parsed = super.parseRaw2();\n if (parsed === undefined) {\n return;\n }\n this.parsedData = { fields: [] };\n if (parsed.abapGit === undefined) {\n return;\n }\n // enhancement category\n if (((_b = (_a = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _a === void 0 ? void 0 : _a.DD02V) === null || _b === void 0 ? void 0 : _b.EXCLASS) === undefined) {\n this.parsedData.enhancementCategory = EnhancementCategory.NotClassified;\n }\n else {\n this.parsedData.enhancementCategory = (_d = (_c = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _c === void 0 ? void 0 : _c.DD02V) === null || _d === void 0 ? void 0 : _d.EXCLASS;\n }\n // table category\n this.parsedData.tableCategory = (_f = (_e = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _e === void 0 ? void 0 : _e.DD02V) === null || _f === void 0 ? void 0 : _f.TABCLASS;\n this.parsedData.dataClass = (_h = (_g = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _g === void 0 ? void 0 : _g.DD09L) === null || _h === void 0 ? void 0 : _h.TABART;\n // fields\n const fields = (_j = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _j === void 0 ? void 0 : _j.DD03P_TABLE;\n for (const field of (0, xml_utils_1.xmlToArray)(fields === null || fields === void 0 ? void 0 : fields.DD03P)) {\n this.parsedData.fields.push({\n FIELDNAME: field.FIELDNAME,\n ROLLNAME: field.ROLLNAME,\n COMPTYPE: field.COMPTYPE,\n PRECFIELD: field.PRECFIELD,\n LENG: field.LENG,\n INTLEN: field.INTLEN,\n DATATYPE: field.DATATYPE,\n DECIMALS: field.DECIMALS,\n KEYFLAG: field.KEYFLAG,\n GROUPNAME: field.GROUPNAME,\n CHECKTABLE: field.CHECKTABLE,\n REFTYPE: field.REFTYPE,\n });\n }\n }\n}\nexports.Table = Table;\n//# sourceMappingURL=table.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/table.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/table_type.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/table_type.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TableType = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst Types = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nclass TableType extends _abstract_object_1.AbstractObject {\n constructor() {\n super(...arguments);\n this.parsedXML = undefined;\n }\n getType() {\n return \"TTYP\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n var _a;\n this.parseXML();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.ddtext;\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n buildPrimaryKey() {\n var _a, _b, _c, _d, _e;\n const primaryKey = {\n isUnique: ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.keykind) === \"U\",\n type: basic_1.TableAccessType.standard,\n keyFields: [],\n name: \"primary_key\",\n };\n if (((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.accessmode) === \"S\") {\n primaryKey.type = basic_1.TableAccessType.sorted;\n }\n else if (((_c = this.parsedXML) === null || _c === void 0 ? void 0 : _c.accessmode) === \"H\") {\n primaryKey.type = basic_1.TableAccessType.hashed;\n }\n for (const f of ((_d = this.parsedXML) === null || _d === void 0 ? void 0 : _d.dd42v) || []) {\n if (f.keyname === \"\") {\n primaryKey.keyFields.push(f.keyfield);\n }\n }\n if (((_e = this.parsedXML) === null || _e === void 0 ? void 0 : _e.keydef) === \"T\" && primaryKey.keyFields.length === 0) {\n primaryKey.keyFields.push(\"table_line\");\n }\n return primaryKey;\n }\n buildTableOptions() {\n var _a, _b, _c, _d;\n let keyType = Types.TableKeyType.user;\n if (((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.keydef) === \"D\") {\n keyType = Types.TableKeyType.default;\n }\n const tableOptions = {\n withHeader: false,\n keyType: keyType,\n primaryKey: this.buildPrimaryKey(),\n secondary: [],\n };\n for (const k of ((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.dd43v) || []) {\n const fields = [];\n for (const f of ((_c = this.parsedXML) === null || _c === void 0 ? void 0 : _c.dd42v) || []) {\n if (f.keyname === k.keyname) {\n fields.push(f.keyfield);\n }\n }\n let accessType = basic_1.TableAccessType.standard;\n switch (k.accessmode) {\n case \"S\":\n accessType = basic_1.TableAccessType.sorted;\n break;\n case \"H\":\n accessType = basic_1.TableAccessType.hashed;\n break;\n default:\n break;\n }\n (_d = tableOptions.secondary) === null || _d === void 0 ? void 0 : _d.push({\n name: k.keyname,\n type: accessType,\n keyFields: fields,\n isUnique: k.unique,\n });\n }\n return tableOptions;\n }\n parseType(reg) {\n this.parseXML();\n const ddic = new ddic_1.DDIC(reg);\n const references = [];\n let type;\n const tableOptions = this.buildTableOptions();\n if (this.parsedXML === undefined) {\n type = new Types.UnknownType(\"Table Type, parser error\", this.getName());\n }\n else if (this.parsedXML.rowkind === \"S\") {\n const lookup = ddic.lookupTableOrView(this.parsedXML.rowtype);\n type = new Types.TableType(lookup.type, tableOptions, this.getName());\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (this.parsedXML.rowkind === \"E\") {\n const lookup = ddic.lookupDataElement(this.parsedXML.rowtype);\n type = new Types.TableType(lookup.type, tableOptions, this.getName());\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (this.parsedXML.rowkind === \"L\") {\n const lookup = ddic.lookupTableType(this.parsedXML.rowtype);\n type = new Types.TableType(lookup.type, tableOptions, this.getName());\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (this.parsedXML.rowkind === \"R\" && this.parsedXML.rowtype === \"OBJECT\") {\n type = new Types.TableType(new basic_1.GenericObjectReferenceType(), tableOptions, this.getName());\n }\n else if (this.parsedXML.rowkind === \"R\" && this.parsedXML.rowtype === \"DATA\") {\n type = new Types.TableType(new basic_1.DataReference(new basic_1.AnyType()), tableOptions, this.getName());\n }\n else if (this.parsedXML.rowkind === \"R\" && this.parsedXML.rowtype !== undefined) {\n const lookup = ddic.lookupObject(this.parsedXML.rowtype);\n type = new Types.TableType(lookup.type, tableOptions, this.getName());\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n }\n else if (this.parsedXML.rowkind === \"\") {\n if (this.parsedXML.datatype === undefined) {\n type = new Types.UnknownType(\"Table Type, empty DATATYPE\" + this.getName(), this.getName());\n }\n else {\n const row = ddic.textToType(this.parsedXML.datatype, this.parsedXML.leng, this.parsedXML.decimals, this.getName());\n type = new Types.TableType(row, tableOptions, this.getName());\n }\n }\n else {\n type = new Types.UnknownType(\"Table Type, unknown kind \\\"\" + this.parsedXML.rowkind + \"\\\"\" + this.getName(), this.getName());\n }\n reg.getDDICReferences().setUsing(this, references);\n return type;\n }\n ////////////////////\n parseXML() {\n var _a, _b;\n if (this.parsedXML !== undefined) {\n return;\n }\n this.parsedXML = {\n dd42v: [],\n dd43v: [],\n };\n const parsed = super.parseRaw2();\n if (parsed === undefined || parsed.abapGit === undefined) {\n return;\n }\n const values = parsed.abapGit[\"asx:abap\"][\"asx:values\"];\n const dd40v = values.DD40V;\n this.parsedXML.rowtype = dd40v.ROWTYPE ? dd40v.ROWTYPE : \"\";\n this.parsedXML.rowkind = dd40v.ROWKIND ? dd40v.ROWKIND : \"\";\n this.parsedXML.datatype = dd40v.DATATYPE;\n this.parsedXML.leng = dd40v.LENG;\n this.parsedXML.decimals = dd40v.DECIMALS;\n this.parsedXML.accessmode = dd40v.ACCESSMODE;\n this.parsedXML.keykind = dd40v.KEYKIND;\n this.parsedXML.ddtext = dd40v.DDTEXT;\n this.parsedXML.keydef = dd40v.KEYDEF;\n for (const x of (0, xml_utils_1.xmlToArray)((_a = values.DD42V) === null || _a === void 0 ? void 0 : _a.DD42V)) {\n this.parsedXML.dd42v.push({\n keyname: x.SECKEYNAME || \"\",\n keyfield: x.KEYFIELD || \"\",\n });\n }\n for (const x of (0, xml_utils_1.xmlToArray)((_b = values.DD43V) === null || _b === void 0 ? void 0 : _b.DD43V)) {\n this.parsedXML.dd43v.push({\n keyname: x.SECKEYNAME || \"\",\n accessmode: x.ACCESSMODE || \"\",\n kind: x.KIND || \"\",\n unique: x.SECKEYUNIQUE === \"X\",\n });\n }\n }\n}\nexports.TableType = TableType;\n//# sourceMappingURL=table_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/table_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/technical_job_definition.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/technical_job_definition.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TechnicalJobDefinition = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass TechnicalJobDefinition extends _abstract_object_1.AbstractObject {\n getType() {\n return \"JOBD\";\n }\n getAllowedNaming() {\n return {\n maxLength: 32,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.TechnicalJobDefinition = TechnicalJobDefinition;\n//# sourceMappingURL=technical_job_definition.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/technical_job_definition.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/transaction.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/transaction.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Transaction = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Transaction extends _abstract_object_1.AbstractObject {\n getType() {\n return \"TRAN\";\n }\n getAllowedNaming() {\n return {\n maxLength: 20,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Transaction = Transaction;\n//# sourceMappingURL=transaction.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/transaction.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/transaction_variant.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/transaction_variant.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TransactionVariant = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass TransactionVariant extends _abstract_object_1.AbstractObject {\n getType() {\n return \"STVI\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.TransactionVariant = TransactionVariant;\n//# sourceMappingURL=transaction_variant.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/transaction_variant.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/transformation.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/transformation.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Transformation = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass Transformation extends _abstract_object_1.AbstractObject {\n getType() {\n return \"XSLT\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.Transformation = Transformation;\n//# sourceMappingURL=transformation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/transformation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/type_pool.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/type_pool.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypePool = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ./_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass TypePool extends _abap_object_1.ABAPObject {\n getType() {\n return \"TYPE\";\n }\n getSequencedFiles() {\n const main = this.getMainABAPFile();\n if (main === undefined) {\n return [];\n }\n return [main];\n }\n getAllowedNaming() {\n return {\n maxLength: 5,\n allowNamespace: false,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.TypePool = TypePool;\n//# sourceMappingURL=type_pool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/type_pool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/view.js": +/*!***************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/view.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.View = void 0;\nconst Types = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nclass View extends _abstract_object_1.AbstractObject {\n getType() {\n return \"VIEW\";\n }\n getAllowedNaming() {\n return {\n maxLength: 16,\n allowNamespace: true,\n };\n }\n getFields() {\n var _a;\n if (this.parsedData === undefined) {\n this.parseXML();\n }\n return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.fields;\n }\n getJoin() {\n var _a;\n if (this.parsedData === undefined) {\n this.parseXML();\n }\n return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.join;\n }\n setDirty() {\n this.parsedData = undefined;\n super.setDirty();\n }\n parseType(reg) {\n if (this.parsedData === undefined) {\n this.parseXML();\n }\n if (this.parsedData === undefined) {\n return new Types.UnknownType(\"View, parser error\", this.getName());\n }\n const components = [];\n const references = [];\n const ddic = new ddic_1.DDIC(reg);\n for (const field of this.parsedData.fields) {\n if (field.VIEWFIELD === \"*\" || field.VIEWFIELD === \"-\") {\n // ignore, this is a special case of old style .INCLUDE\n continue;\n }\n const lookup = ddic.lookupTableOrView(field.TABNAME);\n let found = lookup.type;\n if (lookup.object) {\n references.push({ object: lookup.object });\n }\n if (field.VIEWFIELD === \".APPEND\") {\n // it is already expanded in the abapGit xml\n continue;\n }\n if (found instanceof Types.StructureType) {\n const s = found.getComponentByName(field.FIELDNAME);\n if (s === undefined) {\n found = new Types.UnknownType(field.FIELDNAME + \" not found in \" + field.TABNAME + \", VIEW parse type\");\n }\n else {\n found = s;\n }\n }\n components.push({\n name: field.VIEWFIELD,\n type: found\n });\n }\n reg.getDDICReferences().setUsing(this, references);\n if (components.length === 0) {\n return new Types.UnknownType(\"View \" + this.getName() + \" does not contain any components\");\n }\n return new Types.StructureType(components, this.getName());\n }\n getDescription() {\n // todo\n return undefined;\n }\n ///////////////\n parseXML() {\n var _a, _b;\n this.parsedData = { fields: [], join: [] };\n const parsed = super.parseRaw2();\n if (parsed === undefined || parsed.abapGit === undefined) {\n return;\n }\n const fields = (_a = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _a === void 0 ? void 0 : _a.DD27P_TABLE;\n for (const field of (0, xml_utils_1.xmlToArray)(fields === null || fields === void 0 ? void 0 : fields.DD27P)) {\n this.parsedData.fields.push({\n VIEWFIELD: field.VIEWFIELD,\n TABNAME: field.TABNAME,\n FIELDNAME: field.FIELDNAME,\n });\n }\n const join = (_b = parsed.abapGit[\"asx:abap\"][\"asx:values\"]) === null || _b === void 0 ? void 0 : _b.DD28J_TABLE;\n for (const j of (0, xml_utils_1.xmlToArray)(join === null || join === void 0 ? void 0 : join.DD28J)) {\n this.parsedData.join.push({\n LTAB: j.LTAB,\n LFIELD: j.LFIELD,\n OPERATOR: j.OPERATOR,\n RTAB: j.RTAB,\n RFIELD: j.RFIELD,\n });\n }\n }\n}\nexports.View = View;\n//# sourceMappingURL=view.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/view.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/view_cluster.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/view_cluster.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ViewCluster = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass ViewCluster extends _abstract_object_1.AbstractObject {\n getType() {\n return \"VCLS\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.ViewCluster = ViewCluster;\n//# sourceMappingURL=view_cluster.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/view_cluster.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/virtual_end_point.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/virtual_end_point.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.VirtualEndPoint = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass VirtualEndPoint extends _abstract_object_1.AbstractObject {\n getType() {\n return \"WEBI\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.VirtualEndPoint = VirtualEndPoint;\n//# sourceMappingURL=virtual_end_point.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/virtual_end_point.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/web_dynpro_application.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/web_dynpro_application.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WebDynproApplication = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass WebDynproApplication extends _abstract_object_1.AbstractObject {\n getType() {\n return \"WDYA\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.WebDynproApplication = WebDynproApplication;\n//# sourceMappingURL=web_dynpro_application.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/web_dynpro_application.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/web_dynpro_application_configuration.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/web_dynpro_application_configuration.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WebDynproApplicationConfiguration = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass WebDynproApplicationConfiguration extends _abstract_object_1.AbstractObject {\n getType() {\n return \"WDCA\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.WebDynproApplicationConfiguration = WebDynproApplicationConfiguration;\n//# sourceMappingURL=web_dynpro_application_configuration.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/web_dynpro_application_configuration.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/web_dynpro_component.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/web_dynpro_component.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WebDynproComponent = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass WebDynproComponent extends _abstract_object_1.AbstractObject {\n getType() {\n return \"WDYN\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.WebDynproComponent = WebDynproComponent;\n//# sourceMappingURL=web_dynpro_component.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/web_dynpro_component.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/web_dynpro_component_configuration.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/web_dynpro_component_configuration.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WebDynproComponentConfiguration = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass WebDynproComponentConfiguration extends _abstract_object_1.AbstractObject {\n getType() {\n return \"WDCC\";\n }\n getAllowedNaming() {\n return {\n maxLength: 30,\n allowNamespace: true,\n };\n }\n getDescription() {\n // todo\n return undefined;\n }\n}\nexports.WebDynproComponentConfiguration = WebDynproComponentConfiguration;\n//# sourceMappingURL=web_dynpro_component_configuration.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/web_dynpro_component_configuration.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/objects/web_mime.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/objects/web_mime.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WebMIME = void 0;\nconst _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ \"./node_modules/@abaplint/core/build/src/objects/_abstract_object.js\");\nclass WebMIME extends _abstract_object_1.AbstractObject {\n getType() {\n return \"W3MI\";\n }\n getAllowedNaming() {\n return {\n maxLength: 40,\n allowNamespace: true,\n customRegex: new RegExp(/^[A-Z_-\\d/<> ]+$/i),\n };\n }\n getDescription() {\n var _a;\n this.parse();\n return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;\n }\n setDirty() {\n this.parsedXML = undefined;\n super.setDirty();\n }\n getDataFile() {\n for (const f of this.getFiles()) {\n if (f.getFilename().includes(\".data.\")) {\n return f;\n }\n }\n return undefined;\n }\n parse() {\n if (this.parsedXML) {\n return { updated: false, runtime: 0 };\n }\n const start = Date.now();\n this.parsedXML = {};\n const parsed = super.parseRaw2();\n if (parsed === undefined\n || parsed.abapGit === undefined\n || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return { updated: false, runtime: 0 };\n }\n this.parsedXML.description = parsed.abapGit[\"asx:abap\"][\"asx:values\"].TEXT;\n const end = Date.now();\n return { updated: true, runtime: end - start };\n }\n}\nexports.WebMIME = WebMIME;\n//# sourceMappingURL=web_mime.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/objects/web_mime.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/position.js": +/*!***********************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/position.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.VirtualPosition = exports.Position = void 0;\n// first position is (1,1)\nclass Position {\n constructor(row, col) {\n this.row = row;\n this.col = col;\n }\n getCol() {\n return this.col;\n }\n getRow() {\n return this.row;\n }\n isAfter(p) {\n return this.row > p.row || (this.row === p.row && this.col >= p.col);\n }\n equals(p) {\n return this.row === p.getRow() && this.col === p.getCol();\n }\n isBefore(p) {\n return this.row < p.row || (this.row === p.row && this.col < p.col);\n }\n isBetween(p1, p2) {\n return this.isAfter(p1) && this.isBefore(p2);\n }\n}\nexports.Position = Position;\n/** used for macro calls */\nclass VirtualPosition extends Position {\n constructor(virtual, row, col) {\n super(virtual.getRow(), virtual.getCol());\n this.vrow = row;\n this.vcol = col;\n }\n equals(p) {\n if (!(p instanceof VirtualPosition)) {\n return false;\n }\n const casted = p;\n return super.equals(this) && this.vrow === casted.vrow && this.vcol === casted.vcol;\n }\n}\nexports.VirtualPosition = VirtualPosition;\n//# sourceMappingURL=position.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/position.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/pretty_printer/fix_keyword_case.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/pretty_printer/fix_keyword_case.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FixCase = void 0;\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst keyword_case_1 = __webpack_require__(/*! ../rules/keyword_case */ \"./node_modules/@abaplint/core/build/src/rules/keyword_case.js\");\nconst Tokens = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass FixCase {\n constructor(fileContents, config) {\n this.keywordCase = new keyword_case_1.KeywordCase();\n this.keywordCase.setConfig(config.readByRule(this.keywordCase.getMetadata().key));\n this.fileContents = fileContents;\n this.config = config;\n }\n execute(statement) {\n for (const child of statement.getChildren()) {\n if (child instanceof nodes_1.TokenNodeRegex) {\n const token = child.get();\n if (token instanceof Tokens.StringToken) {\n continue;\n }\n this.replaceString(token.getStart(), this.formatNonKeyword(token.getStr()));\n continue;\n }\n else if (child instanceof nodes_1.TokenNode) {\n const token = child.get();\n const str = token.getStr();\n if (this.keywordCase.violatesRule(str) && token instanceof tokens_1.Identifier) {\n this.replaceString(token.getStart(), this.formatKeyword(str));\n }\n }\n else if (child instanceof nodes_1.ExpressionNode) {\n this.execute(child);\n }\n else {\n throw new Error(\"pretty printer, traverse, unexpected node type\");\n }\n }\n return this.fileContents;\n }\n formatNonKeyword(str) {\n return str.toLowerCase();\n }\n formatKeyword(keyword) {\n const ruleKey = this.keywordCase.getMetadata().key;\n const rule = this.config.readByRule(ruleKey);\n const style = rule ? rule[\"style\"] : keyword_case_1.KeywordCaseStyle.Upper;\n return style === keyword_case_1.KeywordCaseStyle.Lower ? keyword.toLowerCase() : keyword.toUpperCase();\n }\n replaceString(pos, str) {\n const lines = this.fileContents.split(\"\\n\");\n const line = lines[pos.getRow() - 1];\n lines[pos.getRow() - 1] = line.substr(0, pos.getCol() - 1) + str + line.substr(pos.getCol() + str.length - 1);\n this.fileContents = lines.join(\"\\n\");\n }\n}\nexports.FixCase = FixCase;\n//# sourceMappingURL=fix_keyword_case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/pretty_printer/fix_keyword_case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/pretty_printer/indent.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/pretty_printer/indent.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Indent = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\n// todo, will break if there is multiple statements per line?\nclass Indent {\n constructor(options) {\n this.globalClasses = new Set();\n this.options = options || {};\n }\n execute(original, modified) {\n const statements = original.getStatements();\n const expected = this.getExpectedIndents(original);\n const lines = modified.split(\"\\n\");\n for (const statement of statements) {\n if (statement.getFirstToken().getStart() instanceof position_1.VirtualPosition) {\n continue; // macro contents\n }\n const exp = expected.shift();\n if (exp === undefined || exp < 0) {\n continue;\n }\n const row = statement.getFirstToken().getStart().getRow() - 1;\n lines[row] = lines[row].trim();\n for (let i = 1; i < exp; i++) {\n lines[row] = \" \" + lines[row];\n }\n }\n return lines.join(\"\\n\");\n }\n // returns list of expected indentation for each line/statement?\n getExpectedIndents(file) {\n const ret = [];\n const init = 1;\n const stack = new Stack();\n let indent = init;\n let parentIsEvent = false;\n let previousStatement = undefined;\n for (const statement of file.getStatements()) {\n if (statement.getFirstToken().getStart() instanceof position_1.VirtualPosition) {\n continue; // skip macro contents\n }\n const type = statement.get();\n if (type instanceof Statements.EndIf\n || type instanceof Statements.EndWhile\n || type instanceof Statements.EndModule\n || type instanceof Statements.EndSelect\n || type instanceof Statements.EndMethod\n || type instanceof Statements.EndAt\n || type instanceof Statements.Else\n || type instanceof Statements.EndExec\n || type instanceof Statements.EndOfDefinition\n || type instanceof Statements.EndLoop\n || type instanceof Statements.EndTestInjection\n || type instanceof Statements.EndTestSeam\n || type instanceof Statements.EndForm\n || type instanceof Statements.EndCatch\n || (this.options.selectionScreenBlockIndentation === true\n && type instanceof Statements.SelectionScreen\n && (statement.concatTokens().toUpperCase().includes(\"END OF SCREEN\") ||\n statement.concatTokens().toUpperCase().includes(\"END OF BLOCK\") ||\n statement.concatTokens().toUpperCase().includes(\"END OF LINE\")))\n || type instanceof Statements.ElseIf\n || type instanceof Statements.EndFunction\n || type instanceof Statements.EndInterface\n || type instanceof Statements.EndDo) {\n indent = indent - 2;\n }\n else if (type instanceof Statements.StartOfSelection\n || type instanceof Statements.AtSelectionScreen\n || type instanceof Statements.AtLineSelection\n || type instanceof Statements.Initialization\n || type instanceof Statements.AtUserCommand\n || type instanceof Statements.TopOfPage\n || type instanceof Statements.Get\n || type instanceof Statements.EndOfSelection\n || type instanceof Statements.LoadOfProgram) {\n indent = init;\n parentIsEvent = true;\n }\n else if (type instanceof Statements.Form\n || (type instanceof Statements.Include && parentIsEvent)\n || type instanceof Statements.Module\n || type instanceof Statements.ClassImplementation\n || type instanceof Statements.ClassDefinition) {\n indent = init;\n parentIsEvent = false;\n }\n else if (type instanceof Statements.Cleanup\n || type instanceof Statements.Catch) {\n indent = stack.peek() - 2;\n }\n else if (type instanceof Statements.Public\n || type instanceof Statements.Protected\n || type instanceof Statements.Private\n || type instanceof Statements.WhenType\n || type instanceof Statements.WhenOthers\n || type instanceof Statements.When) {\n indent = stack.peek();\n }\n else if (type instanceof Statements.EndTry) {\n indent = stack.pop() - (this.options.alignTryCatch ? 2 : 4);\n }\n else if (type instanceof Statements.EndClass\n || type instanceof Statements.EndCase) {\n indent = stack.pop() - 2;\n indent = Math.max(indent, init); // maybe move this out of switch before ret.push(indent)\n }\n else if (type instanceof _statement_1.Comment\n || type instanceof Statements.IncludeType\n || type instanceof _statement_1.Empty\n || type instanceof _statement_1.MacroContent) {\n ret.push(-1);\n previousStatement = statement;\n continue;\n }\n if (previousStatement\n && !(previousStatement.get() instanceof _statement_1.Comment)\n && previousStatement.getLastToken().getEnd().getRow() === statement.getFirstToken().getStart().getRow()) {\n // any indentation allowed if there are multiple statements on the same line\n ret.push(-1);\n previousStatement = statement;\n continue;\n }\n ret.push(indent);\n if (type instanceof Statements.If\n || type instanceof Statements.While\n || type instanceof Statements.Module\n || type instanceof Statements.SelectLoop\n || type instanceof Statements.FunctionModule\n || type instanceof Statements.Interface\n || type instanceof Statements.Do\n || type instanceof Statements.At\n || type instanceof Statements.AtFirst\n || type instanceof Statements.AtLast\n || type instanceof Statements.ExecSQL\n || type instanceof Statements.Catch\n || type instanceof Statements.Define\n || type instanceof Statements.When\n || type instanceof Statements.WhenType\n || type instanceof Statements.WhenOthers\n || type instanceof Statements.Cleanup\n || type instanceof Statements.Loop\n || type instanceof Statements.LoopAtScreen\n || type instanceof Statements.CatchSystemExceptions\n || type instanceof Statements.Form\n || type instanceof Statements.Else\n || type instanceof Statements.ElseIf\n || type instanceof Statements.MethodImplementation\n || type instanceof Statements.TestInjection\n || type instanceof Statements.TestSeam\n || (this.options.selectionScreenBlockIndentation === true\n && type instanceof Statements.SelectionScreen\n && (statement.concatTokens().toUpperCase().includes(\"BEGIN OF SCREEN\") ||\n statement.concatTokens().toUpperCase().includes(\"BEGIN OF TABBED BLOCK\") ||\n statement.concatTokens().toUpperCase().includes(\"BEGIN OF BLOCK\") ||\n statement.concatTokens().toUpperCase().includes(\"BEGIN OF LINE\")))\n || type instanceof Statements.StartOfSelection\n || type instanceof Statements.Get\n || type instanceof Statements.AtSelectionScreen\n || type instanceof Statements.AtLineSelection\n || type instanceof Statements.LoadOfProgram\n || type instanceof Statements.Initialization\n || type instanceof Statements.AtUserCommand\n || type instanceof Statements.TopOfPage\n || type instanceof Statements.EndOfSelection\n || type instanceof Statements.Public\n || type instanceof Statements.Protected\n || type instanceof Statements.Private) {\n indent = indent + 2;\n }\n else if (type instanceof Statements.Try) {\n indent = indent + (this.options.alignTryCatch ? 2 : 4);\n stack.push(indent);\n }\n else if (type instanceof Statements.ClassDefinition\n || type instanceof Statements.Case\n || type instanceof Statements.CaseType\n || type instanceof Statements.ClassImplementation) {\n indent = indent + (this.skipIndentForGlobalClass(statement) ? 0 : 2);\n stack.push(indent);\n }\n previousStatement = statement;\n }\n return ret;\n }\n skipIndentForGlobalClass(statement) {\n if (!this.options.globalClassSkipFirst) {\n return false;\n }\n const type = statement.get();\n if (type instanceof Statements.ClassDefinition && statement.findFirstExpression(Expressions.ClassGlobal)) {\n const className = statement.findFirstExpression(Expressions.ClassName);\n if (className) {\n this.globalClasses.add(className.getFirstToken().getStr().toUpperCase());\n }\n return true;\n }\n else if (type instanceof Statements.ClassImplementation) {\n const className = statement.findFirstExpression(Expressions.ClassName);\n if (className && this.globalClasses.has(className.getFirstToken().getStr().toUpperCase())) {\n return true;\n }\n }\n return false;\n }\n}\nexports.Indent = Indent;\nclass Stack {\n constructor() {\n this.items = [];\n }\n push(item) {\n this.items.push(item);\n }\n peek() {\n return this.items[this.items.length - 1];\n }\n pop() {\n const peek = this.peek();\n this.items = this.items.slice(0, this.items.length - 1);\n return peek;\n }\n}\n//# sourceMappingURL=indent.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/pretty_printer/indent.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/pretty_printer/pretty_printer.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/pretty_printer/pretty_printer.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PrettyPrinter = void 0;\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst fix_keyword_case_1 = __webpack_require__(/*! ./fix_keyword_case */ \"./node_modules/@abaplint/core/build/src/pretty_printer/fix_keyword_case.js\");\nconst indent_1 = __webpack_require__(/*! ./indent */ \"./node_modules/@abaplint/core/build/src/pretty_printer/indent.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst indentation_1 = __webpack_require__(/*! ../rules/indentation */ \"./node_modules/@abaplint/core/build/src/rules/indentation.js\");\nclass PrettyPrinter {\n constructor(file, config) {\n this.result = file.getRaw();\n this.file = file;\n this.config = config;\n const indentationConf = config.readByRule(new indentation_1.Indentation().getMetadata().key);\n this.options = {\n alignTryCatch: indentationConf === null || indentationConf === void 0 ? void 0 : indentationConf.alignTryCatch,\n globalClassSkipFirst: indentationConf === null || indentationConf === void 0 ? void 0 : indentationConf.globalClassSkipFirst,\n };\n }\n run() {\n const statements = this.file.getStatements();\n for (const statement of statements) {\n if (statement.get() instanceof _statement_1.Unknown\n || statement.get() instanceof _statement_1.MacroContent\n || statement.get() instanceof _statement_1.MacroCall\n || statement.getFirstToken().getStart() instanceof position_1.VirtualPosition\n || statement.get() instanceof _statement_1.Comment) {\n continue;\n }\n // note that no positions are changed when case is changed\n const fixCase = new fix_keyword_case_1.FixCase(this.result, this.config);\n this.result = fixCase.execute(statement);\n }\n const indentation = new indent_1.Indent(this.options);\n this.result = indentation.execute(this.file, this.result);\n return this.result;\n }\n}\nexports.PrettyPrinter = PrettyPrinter;\n//# sourceMappingURL=pretty_printer.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/pretty_printer/pretty_printer.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/registry.js": +/*!***********************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/registry.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Registry = void 0;\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nconst find_global_definitions_1 = __webpack_require__(/*! ./abap/5_syntax/global_definitions/find_global_definitions */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nconst ddic_references_1 = __webpack_require__(/*! ./ddic_references */ \"./node_modules/@abaplint/core/build/src/ddic_references.js\");\nconst rules_runner_1 = __webpack_require__(/*! ./rules_runner */ \"./node_modules/@abaplint/core/build/src/rules_runner.js\");\nconst msag_references_1 = __webpack_require__(/*! ./msag_references */ \"./node_modules/@abaplint/core/build/src/msag_references.js\");\n// todo, this should really be an instance in case there are multiple Registry'ies\nclass ParsingPerformance {\n static clear() {\n this.results = [];\n this.lexing = 0;\n this.statements = 0;\n this.structure = 0;\n }\n static push(obj, result) {\n if (result.runtimeExtra) {\n this.lexing += result.runtimeExtra.lexing;\n this.statements += result.runtimeExtra.statements;\n this.structure += result.runtimeExtra.structure;\n }\n if (result.runtime < 100) {\n return;\n }\n if (this.results === undefined) {\n this.results = [];\n }\n let extra = \"\";\n if (result.runtimeExtra) {\n extra = `\\t(lexing: ${result.runtimeExtra.lexing}ms, statements: ${result.runtimeExtra.statements}ms, structure: ${result.runtimeExtra.structure}ms)`;\n }\n this.results.push({\n runtime: result.runtime,\n extra,\n name: obj.getType() + \" \" + obj.getName(),\n });\n }\n static output() {\n const MAX = 10;\n this.results.sort((a, b) => { return b.runtime - a.runtime; });\n for (let i = 0; i < MAX; i++) {\n const row = this.results[i];\n if (row === undefined) {\n break;\n }\n process.stderr.write(`\\t${row.runtime}ms\\t${row.name} ${row.extra}\\n`);\n }\n process.stderr.write(`\\tTotal lexing: ${this.lexing}ms\\n`);\n process.stderr.write(`\\tTotal statements: ${this.statements}ms\\n`);\n process.stderr.write(`\\tTotal structure: ${this.structure}ms\\n`);\n }\n}\n///////////////////////////////////////////////////////////////////////////////////////////////\nclass Registry {\n constructor(conf) {\n this.objects = {};\n this.objectsByType = {};\n this.dependencies = {};\n this.conf = conf ? conf : config_1.Config.getDefault();\n this.ddicReferences = new ddic_references_1.DDICReferences();\n this.msagReferences = new msag_references_1.MSAGReferences();\n }\n static abaplintVersion() {\n // magic, see build script \"version.sh\"\n return \"2.102.14\";\n }\n getDDICReferences() {\n return this.ddicReferences;\n }\n getMSAGReferences() {\n return this.msagReferences;\n }\n *getObjects() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n yield this.objects[name][type];\n }\n }\n }\n *getObjectsByType(type) {\n for (const name in this.objectsByType[type] || []) {\n yield this.objectsByType[type][name];\n }\n }\n *getFiles() {\n for (const obj of this.getObjects()) {\n for (const file of obj.getFiles()) {\n yield file;\n }\n }\n }\n getFirstObject() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n return this.objects[name][type];\n }\n }\n return undefined;\n }\n getObjectCount(skipDependencies = true) {\n let res = 0;\n for (const o of this.getObjects()) {\n if (skipDependencies === true && this.isDependency(o)) {\n continue;\n }\n res = res + 1;\n }\n return res;\n }\n getFileByName(filename) {\n const upper = filename.toUpperCase();\n for (const o of this.getObjects()) {\n for (const f of o.getFiles()) {\n if (f.getFilename().toUpperCase() === upper) {\n return f;\n }\n }\n }\n return undefined;\n }\n getObject(type, name) {\n if (type === undefined || name === undefined) {\n return undefined;\n }\n const searchName = name.toUpperCase();\n if (this.objects[searchName]) {\n return this.objects[searchName][type];\n }\n return undefined;\n }\n getConfig() {\n return this.conf;\n }\n // assumption: Config is immutable, and can only be changed via this method\n setConfig(conf) {\n for (const obj of this.getObjects()) {\n obj.setDirty();\n }\n this.conf = conf;\n return this;\n }\n inErrorNamespace(name) {\n // todo: performance? cache regexp?\n const reg = new RegExp(this.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n return reg.test(name);\n }\n addFile(file) {\n return this.addFiles([file]);\n }\n updateFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.updateFile(file);\n return this;\n }\n removeFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.removeFile(file);\n if (obj.getFiles().length === 0) {\n this.ddicReferences.clear(obj);\n this.msagReferences.clear(obj);\n this.removeObject(obj);\n }\n return this;\n }\n _addFiles(files, dependency) {\n var _a;\n const globalExclude = ((_a = this.conf.getGlobal().exclude) !== null && _a !== void 0 ? _a : [])\n .map(pattern => new RegExp(pattern, \"i\"));\n for (const f of files) {\n const filename = f.getFilename();\n const isNotAbapgitFile = filename.split(\".\").length <= 2;\n if (isNotAbapgitFile || excludeHelper_1.ExcludeHelper.isExcluded(filename, globalExclude)) {\n continue;\n }\n let found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n if (dependency === false && found && this.isDependency(found)) {\n this.removeDependency(found);\n found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n }\n found.addFile(f);\n }\n return this;\n }\n addFiles(files) {\n this._addFiles(files, false);\n return this;\n }\n addDependencies(files) {\n for (const f of files) {\n this.addDependency(f);\n }\n return this;\n }\n addDependency(file) {\n var _a;\n const type = (_a = file.getObjectType()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (type === undefined) {\n return this;\n }\n const name = file.getObjectName().toUpperCase();\n if (this.dependencies[type] === undefined) {\n this.dependencies[type] = {};\n }\n this.dependencies[type][name] = true;\n this._addFiles([file], true);\n return this;\n }\n removeDependency(obj) {\n var _a;\n (_a = this.dependencies[obj.getType()]) === null || _a === void 0 ? true : delete _a[obj.getName()];\n this.removeObject(obj);\n }\n isDependency(obj) {\n var _a;\n return ((_a = this.dependencies[obj.getType()]) === null || _a === void 0 ? void 0 : _a[obj.getName()]) === true;\n }\n isFileDependency(filename) {\n var _a, _b;\n const f = this.getFileByName(filename);\n if (f === undefined) {\n return false;\n }\n const type = (_a = f.getObjectType()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (type === undefined) {\n return false;\n }\n const name = f.getObjectName().toUpperCase();\n return ((_b = this.dependencies[type]) === null || _b === void 0 ? void 0 : _b[name]) === true;\n }\n // assumption: the file is already in the registry\n findObjectForFile(file) {\n const filename = file.getFilename();\n for (const obj of this.getObjects()) {\n for (const ofile of obj.getFiles()) {\n if (ofile.getFilename() === filename) {\n return obj;\n }\n }\n }\n return undefined;\n }\n // todo, this will be changed to async sometime\n findIssues(input) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return new rules_runner_1.RulesRunner(this).runRules(this.getObjects(), input);\n }\n // todo, this will be changed to async sometime\n findIssuesObject(iobj) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return new rules_runner_1.RulesRunner(this).runRules([iobj]);\n }\n // todo, this will be changed to async sometime\n parse() {\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n for (const o of this.getObjects()) {\n this.parsePrivate(o);\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run();\n return this;\n }\n async parseAsync(input) {\n var _a, _b;\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(this.getObjectCount(false), \"Lexing and parsing\");\n for (const o of this.getObjects()) {\n await ((_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Lexing and parsing(\" + this.conf.getVersion() + \") - \" + o.getType() + \" \" + o.getName()));\n this.parsePrivate(o);\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n ParsingPerformance.output();\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run(input === null || input === void 0 ? void 0 : input.progress);\n return this;\n }\n //////////////////////////////////////////\n // todo, refactor, this is a mess, see where-used, a lot of the code should be in this method instead\n parsePrivate(input) {\n const config = this.getConfig();\n const result = input.parse(config.getVersion(), config.getSyntaxSetttings().globalMacros, this);\n ParsingPerformance.push(input, result);\n }\n isDirty() {\n for (const o of this.getObjects()) {\n const dirty = o.isDirty();\n if (dirty === true) {\n return true;\n }\n }\n return false;\n }\n findOrCreate(name, type) {\n try {\n return this.find(name, type);\n }\n catch (_a) {\n const newName = name.toUpperCase();\n const newType = type ? type : \"UNKNOWN\";\n const add = artifacts_objects_1.ArtifactsObjects.newObject(newName, newType);\n if (this.objects[newName] === undefined) {\n this.objects[newName] = {};\n }\n this.objects[newName][newType] = add;\n if (this.objectsByType[newType] === undefined) {\n this.objectsByType[newType] = {};\n }\n this.objectsByType[newType][newName] = add;\n return add;\n }\n }\n removeObject(remove) {\n if (remove === undefined) {\n return;\n }\n if (this.objects[remove.getName()][remove.getType()] === undefined) {\n throw new Error(\"removeObject: object not found\");\n }\n if (Object.keys(this.objects[remove.getName()]).length === 1) {\n delete this.objects[remove.getName()];\n }\n else {\n delete this.objects[remove.getName()][remove.getType()];\n }\n if (Object.keys(this.objectsByType[remove.getType()]).length === 1) {\n delete this.objectsByType[remove.getType()];\n }\n else {\n delete this.objectsByType[remove.getType()][remove.getName()];\n }\n }\n find(name, type) {\n const searchType = type ? type : \"UNKNOWN\";\n const searchName = name.toUpperCase();\n if (this.objects[searchName] !== undefined\n && this.objects[searchName][searchType]) {\n return this.objects[searchName][searchType];\n }\n throw new Error(\"find: object not found, \" + type + \" \" + name);\n }\n}\nexports.Registry = Registry;\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/registry.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SevenBitAscii = exports.SevenBitAsciiConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass SevenBitAsciiConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SevenBitAsciiConf = SevenBitAsciiConf;\nclass SevenBitAscii {\n constructor() {\n this.conf = new SevenBitAsciiConf();\n }\n getMetadata() {\n return {\n key: \"7bit_ascii\",\n title: \"Check for 7bit ascii\",\n shortDescription: `Only allow characters from the 7bit ASCII set.`,\n extendedInformation: `https://docs.abapopenchecks.org/checks/05/\r\n\r\nhttps://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abencharacter_set_guidl.htm\r\n\r\nCheckes files with extensions \".abap\" and \".asddls\"`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n initialize(_reg) {\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n const output = [];\n for (const file of obj.getFiles()) {\n const filename = file.getFilename();\n if (filename.endsWith(\".abap\") || filename.endsWith(\".asddls\")) {\n const rows = file.getRawRows();\n for (let i = 0; i < rows.length; i++) {\n const found = /[\\u007f-\\uffff]/.exec(rows[i]);\n if (found !== null) {\n const column = found.index + 1;\n const start = new position_1.Position(i + 1, column);\n const end = new position_1.Position(i + 1, column + 1);\n const message = \"Contains non 7 bit ascii character\";\n const issue = issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n // method getRawRows() splits by newline, so the carraige return\n // should always be last character if present\n const carriage = /\\r.+$/.exec(rows[i]);\n if (carriage !== null) {\n const column = carriage.index + 1;\n const start = new position_1.Position(i + 1, column);\n const end = new position_1.Position(i + 1, column + 1);\n const message = \"Dangling carriage return\";\n const issue = issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n }\n }\n return output;\n }\n}\nexports.SevenBitAscii = SevenBitAscii;\n//# sourceMappingURL=7bit_ascii.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/_abap_rule.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/_abap_rule.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPRule = void 0;\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass ABAPRule {\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const abap = obj;\n const output = [];\n for (const file of abap.getABAPFiles()) {\n output.push(...this.runParsed(file, obj));\n }\n return output;\n }\n}\nexports.ABAPRule = ABAPRule;\n//# sourceMappingURL=_abap_rule.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/_abap_rule.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BasicRuleConfig = void 0;\nconst severity_1 = __webpack_require__(/*! ../severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nclass BasicRuleConfig {\n constructor() {\n /** List of file regex filename patterns to exclude, case insensitive */\n this.exclude = [];\n /** Problem severity */\n this.severity = severity_1.Severity.Error;\n }\n}\nexports.BasicRuleConfig = BasicRuleConfig;\n//# sourceMappingURL=_basic_rule_config.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/_irule.js": +/*!***************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/_irule.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RuleTag = void 0;\nvar RuleTag;\n(function (RuleTag) {\n RuleTag[\"Experimental\"] = \"Experimental\";\n RuleTag[\"DeprecationCandidate\"] = \"DeprecationCandidate\";\n RuleTag[\"Upport\"] = \"Upport\";\n RuleTag[\"Downport\"] = \"Downport\";\n RuleTag[\"Whitespace\"] = \"Whitespace\";\n RuleTag[\"Naming\"] = \"Naming\";\n RuleTag[\"Quickfix\"] = \"Quickfix\";\n RuleTag[\"Performance\"] = \"Performance\";\n RuleTag[\"Syntax\"] = \"Syntax\";\n RuleTag[\"Security\"] = \"Security\";\n /** Relevant wrt the official SAP ABAP style guide*/\n RuleTag[\"Styleguide\"] = \"Styleguide\";\n /** Single file compatible, the rule gives correct results when having only information about the single file */\n RuleTag[\"SingleFile\"] = \"SingleFile\";\n})(RuleTag || (exports.RuleTag = RuleTag = {}));\n//# sourceMappingURL=_irule.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/_irule.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NamingRuleConfig = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nclass NamingRuleConfig extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Specifies whether the pattern is forbidden (violation if name matches) or required (violation if name does not match). */\n this.patternKind = \"required\";\n /** A list of names to be ignored */\n this.ignoreNames = [];\n /** A list of patterns to be ignored. For example, you can use it to ignore ambiguous prefixes */\n this.ignorePatterns = [];\n }\n}\nexports.NamingRuleConfig = NamingRuleConfig;\n//# sourceMappingURL=_naming_rule_config.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/abapdoc.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/abapdoc.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Abapdoc = exports.AbapdocConf = void 0;\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst visibility_1 = __webpack_require__(/*! ../abap/4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass AbapdocConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Check local classes and interfaces for abapdoc. */\n this.checkLocal = false;\n this.classDefinition = false;\n this.interfaceDefinition = false;\n }\n}\nexports.AbapdocConf = AbapdocConf;\nclass Abapdoc extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new AbapdocConf();\n }\n getMetadata() {\n return {\n key: \"abapdoc\",\n title: \"Check abapdoc\",\n shortDescription: `Various checks regarding abapdoc.`,\n extendedInformation: `Base rule checks for existence of abapdoc for public class methods and all interface methods.\r\n\r\nPlus class and interface definitions.\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#abap-doc-only-for-public-apis`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a, _b;\n const issues = [];\n const rows = file.getRawRows();\n const regexEmptyTags = '^\\\\\"! .*<[^/>]*><\\\\/';\n const regexEmptyAbapdoc = '^\\\\\"!.+$';\n const regexEmptyParameterName = '^\\\\\"! @parameter .+\\\\|';\n let methods = [];\n for (const classDef of file.getInfo().listClassDefinitions()) {\n if (this.conf.checkLocal === false && classDef.isLocal === true) {\n continue;\n }\n methods = methods.concat(classDef.methods.filter(m => m.visibility === visibility_1.Visibility.Public));\n if (this.getConfig().classDefinition === true) {\n const previousRow = classDef.identifier.getStart().getRow() - 2;\n if (((_a = rows[previousRow]) === null || _a === void 0 ? void 0 : _a.trim().substring(0, 2)) !== \"\\\"!\") {\n const message = \"Missing ABAP Doc for class \" + classDef.identifier.getToken().getStr();\n const issue = issue_1.Issue.atIdentifier(classDef.identifier, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n for (const interfaceDef of file.getInfo().listInterfaceDefinitions()) {\n if (this.conf.checkLocal === false && interfaceDef.isLocal === true) {\n continue;\n }\n methods = methods.concat(interfaceDef.methods);\n if (this.getConfig().interfaceDefinition === true) {\n const previousRow = interfaceDef.identifier.getStart().getRow() - 2;\n if (((_b = rows[previousRow]) === null || _b === void 0 ? void 0 : _b.trim().substring(0, 2)) !== \"\\\"!\") {\n const message = \"Missing ABAP Doc for interface \" + interfaceDef.identifier.getToken().getStr();\n const issue = issue_1.Issue.atIdentifier(interfaceDef.identifier, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n for (const method of methods) {\n if (method.isRedefinition === true) {\n continue;\n }\n const previousRowsTexts = this.getAbapdoc(rows, method.identifier.getStart());\n if (previousRowsTexts === undefined) {\n continue;\n }\n for (const rowText of previousRowsTexts) {\n if (rowText.trim().match(regexEmptyTags) !== null) {\n const message = \"Empty tag(s) in ABAP Doc for method \" + method.identifier.getToken().getStr() + \" (\" + rowText + \")\";\n const issue = issue_1.Issue.atIdentifier(method.identifier, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n if (rowText.trim().match(regexEmptyAbapdoc) === null && previousRowsTexts.indexOf(rowText) === previousRowsTexts.length - 1) {\n const message = \"Missing ABAP Doc for method \" + method.identifier.getToken().getStr() + \" (\" + rowText + \")\";\n const issue = issue_1.Issue.atIdentifier(method.identifier, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n if (rowText.trim().match(regexEmptyParameterName) !== null) {\n const message = \"Missing ABAP Doc parameter name for method \" + method.identifier.getToken().getStr() + \" (\" + rowText + \")\";\n const issue = issue_1.Issue.atIdentifier(method.identifier, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n return issues;\n }\n getAbapdoc(rows, pos) {\n let previousRow = pos.getRow() - 2;\n let rowText = rows[previousRow].trim().toUpperCase();\n const text = [];\n if (rowText === \"METHODS\" || rowText === \"CLASS-METHODS\") {\n previousRow--;\n rowText = rows[previousRow].trim().toUpperCase();\n }\n text.push(rowText);\n //we need to push the first row despite if it is actually an abapdoc or not\n //if the first row above a method is abapdoc then try to get the rest of the abapdoc block above\n if (rowText.trim().substring(0, 2) === \"\\\"!\") {\n while (previousRow >= 0) {\n previousRow--;\n rowText = rows[previousRow].trim().toUpperCase();\n if (rowText.trim().substring(0, 2) !== \"\\\"!\") {\n break;\n }\n text.push(rowText);\n }\n }\n return text;\n }\n}\nexports.Abapdoc = Abapdoc;\n//# sourceMappingURL=abapdoc.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/abapdoc.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/align_parameters.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/align_parameters.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AlignParameters = exports.AlignParametersConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass AlignParametersConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.AlignParametersConf = AlignParametersConf;\nclass AlignParameters extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new AlignParametersConf();\n }\n getMetadata() {\n return {\n key: \"align_parameters\",\n title: \"Align Parameters\",\n shortDescription: `Checks for vertially aligned parameters`,\n extendedInformation: `Checks:\r\n* function module calls\r\n* method calls\r\n* VALUE constructors\r\n* NEW constructors\r\n* RAISE EXCEPTION statements\r\n* CREATE OBJECT statements\r\n* RAISE EVENT statements\r\n\r\nhttps://github.com/SAP/styleguides/blob/master/clean-abap/CleanABAP.md#align-parameters\r\n\r\nDoes not take effect on non functional method calls, use https://rules.abaplint.org/functional_writing/\r\n\r\nIf parameters are on the same row, no issues are reported, see\r\nhttps://rules.abaplint.org/max_one_method_parameter_per_line/ for splitting parameters to lines`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix],\n badExample: `CALL FUNCTION 'FOOBAR'\r\n EXPORTING\r\n foo = 2\r\n parameter = 3.\r\n\r\nfoobar( moo = 1\r\n param = 1 ).\r\n\r\nfoo = VALUE #(\r\n foo = bar\r\n moo = 2 ).`,\n goodExample: `CALL FUNCTION 'FOOBAR'\r\n EXPORTING\r\n foo = 2\r\n parameter = 3.\r\n\r\nfoobar( moo = 1\r\n param = 1 ).\r\n\r\nfoo = VALUE #(\r\n foo = bar\r\n moo = 2 ).\r\n\r\nDATA(sdf) = VALUE type(\r\n common_val = 2\r\n another_common = 5\r\n ( row_value = 4\r\n value_foo = 5 ) ).`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return issues; // parser error\n }\n const candidates = [];\n candidates.push(...this.functionParameterCandidates(stru));\n candidates.push(...this.methodCallParamCandidates(stru));\n candidates.push(...this.valueBodyCandidates(stru));\n candidates.push(...this.raiseAndCreateCandidates(stru));\n candidates.push(...this.newCandidates(stru));\n for (const c of candidates) {\n const i = this.checkCandidate(c, file);\n if (i) {\n issues.push(i);\n }\n }\n return issues;\n }\n checkCandidate(candidate, file) {\n if (candidate.parameters.length === 0) {\n return undefined;\n }\n let expectedEqualsColumn = 0;\n let row = 0;\n for (const p of candidate.parameters) {\n const currentCol = p.left.getLastToken().getCol() + p.left.getLastToken().getStr().length + 1;\n if (p.eq.getRow() === row) {\n return undefined;\n }\n row = p.eq.getRow();\n if (currentCol > expectedEqualsColumn) {\n expectedEqualsColumn = currentCol;\n }\n }\n for (const p of candidate.parameters) {\n if (p.eq.getCol() !== expectedEqualsColumn) {\n let fix;\n if (p.eq.getCol() < expectedEqualsColumn) {\n fix = edit_helper_1.EditHelper.insertAt(file, p.eq, \" \".repeat(expectedEqualsColumn - p.eq.getCol()));\n }\n else {\n fix = edit_helper_1.EditHelper.deleteRange(file, new position_1.Position(p.eq.getRow(), expectedEqualsColumn), p.eq);\n }\n const message = \"Align parameters to column \" + expectedEqualsColumn;\n return issue_1.Issue.atPosition(file, p.eq, message, this.getMetadata().key, this.getConfig().severity, fix);\n }\n }\n return undefined;\n }\n newCandidates(stru) {\n const candidates = [];\n for (const vb of stru.findAllExpressionsRecursive(Expressions.NewObject)) {\n const parameters = [];\n const fieldAssignments = vb.findDirectExpressions(Expressions.FieldAssignment);\n if (fieldAssignments.length >= 2) {\n for (const fs of fieldAssignments) {\n const children = fs.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n if (parameters.length > 0) {\n candidates.push({ parameters });\n continue;\n }\n }\n const list = vb.findDirectExpression(Expressions.ParameterListS);\n if (list) {\n for (const c of list.getChildren()) {\n const children = c.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n if (parameters.length > 0) {\n candidates.push({ parameters });\n }\n }\n }\n return candidates;\n }\n valueBodyCandidates(stru) {\n const candidates = [];\n for (const vb of stru.findAllExpressionsRecursive(Expressions.ValueBody)) {\n const parameters = [];\n const fieldAssignments = vb.findDirectExpressions(Expressions.FieldAssignment);\n if (fieldAssignments.length <= 1) {\n continue;\n }\n for (const fs of fieldAssignments) {\n const children = fs.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n if (parameters.length > 0) {\n candidates.push({ parameters });\n }\n }\n for (const vb of stru.findAllExpressionsRecursive(Expressions.ValueBodyLine)) {\n const parameters = [];\n const fieldAssignments = vb.findDirectExpressions(Expressions.FieldAssignment);\n if (fieldAssignments.length <= 1) {\n continue;\n }\n for (const fs of fieldAssignments) {\n const children = fs.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n if (parameters.length > 0) {\n candidates.push({ parameters });\n }\n }\n return candidates;\n }\n raiseAndCreateCandidates(stru) {\n const candidates = [];\n const statements = stru.findAllStatements(__1.Statements.Raise);\n statements.push(...stru.findAllStatements(__1.Statements.CreateObject));\n statements.push(...stru.findAllStatements(__1.Statements.RaiseEvent));\n for (const raise of statements) {\n const parameters = [];\n const param = raise.findDirectExpression(Expressions.ParameterListS);\n for (const p of (param === null || param === void 0 ? void 0 : param.getChildren()) || []) {\n const children = p.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n const ex = raise.findDirectExpression(Expressions.ParameterListExceptions);\n for (const e of (ex === null || ex === void 0 ? void 0 : ex.getChildren()) || []) {\n const children = e.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n if (parameters.length > 0) {\n candidates.push({ parameters });\n }\n }\n return candidates;\n }\n methodCallParamCandidates(stru) {\n var _a, _b, _c;\n const candidates = [];\n for (const mcp of stru.findAllExpressionsRecursive(Expressions.MethodCallParam)) {\n const parameters = [];\n for (const param of ((_a = mcp.findDirectExpression(Expressions.ParameterListS)) === null || _a === void 0 ? void 0 : _a.getChildren()) || []) {\n const children = param.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n const mp = mcp.findDirectExpression(Expressions.MethodParameters);\n if (mp) {\n for (const p of ((_b = mp.findDirectExpression(Expressions.ParameterListS)) === null || _b === void 0 ? void 0 : _b.getChildren()) || []) {\n const children = p.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n for (const l of mp.findDirectExpressions(Expressions.ParameterListT)) {\n for (const p of l.findDirectExpressions(Expressions.ParameterT) || []) {\n const children = p.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n }\n const rec = mp.findDirectExpression(Expressions.ParameterT);\n if (rec) {\n const children = rec.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n for (const ex of ((_c = mp.findDirectExpression(Expressions.ParameterListExceptions)) === null || _c === void 0 ? void 0 : _c.getChildren()) || []) {\n const children = ex.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n }\n if (parameters.length > 0) {\n candidates.push({ parameters });\n }\n }\n return candidates;\n }\n functionParameterCandidates(stru) {\n const candidates = [];\n for (const fp of stru.findAllExpressionsRecursive(Expressions.FunctionParameters)) {\n const parameters = [];\n for (const p of fp.findAllExpressions(Expressions.FunctionExportingParameter)) {\n const children = p.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n for (const list of fp.findDirectExpressions(Expressions.ParameterListT)) {\n for (const pt of list.findDirectExpressions(Expressions.ParameterT)) {\n const children = pt.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n }\n const list = fp.findDirectExpression(Expressions.ParameterListExceptions);\n if (list) {\n for (const pt of list.findDirectExpressions(Expressions.ParameterException)) {\n const children = pt.getChildren();\n if (children.length < 3) {\n continue; // unexpected\n }\n parameters.push({\n left: children[0],\n eq: children[1].getFirstToken().getStart(),\n right: children[2],\n });\n }\n }\n if (parameters.length > 0) {\n candidates.push({ parameters });\n }\n }\n return candidates;\n }\n}\nexports.AlignParameters = AlignParameters;\n//# sourceMappingURL=align_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/align_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/allowed_object_naming.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/allowed_object_naming.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AllowedObjectNaming = exports.AllowedObjectNamingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nclass AllowedObjectNamingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.AllowedObjectNamingConf = AllowedObjectNamingConf;\nclass AllowedObjectNaming {\n constructor() {\n this.conf = new AllowedObjectNamingConf();\n }\n getMetadata() {\n return {\n key: \"allowed_object_naming\",\n title: \"Allowed object naming\",\n shortDescription: `Enforces basic name length and namespace restrictions, see note SAP 104010`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile],\n };\n }\n initialize(_reg) {\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n const allowed = obj.getAllowedNaming();\n const name = obj.getName();\n let message = \"\";\n if (name.length > allowed.maxLength) {\n message = \"Name exceeds max length\";\n }\n else if (allowed.allowNamespace === false && name.indexOf(\"/\") >= 0) {\n message = \"Namespace not allowed for object type\";\n }\n else if (allowed.customRegex !== undefined) {\n if (name.match(allowed.customRegex) === null) {\n message = \"Name not allowed\";\n }\n }\n else if (name.match(/^(\\/[A-Z_\\d]{3,8}\\/)?[A-Z_\\d<> ]+$/i) === null) {\n message = \"Name not allowed\";\n }\n if (message.length > 0) {\n return [issue_1.Issue.atRow(obj.getFiles()[0], 1, message, this.getMetadata().key, this.conf.severity)];\n }\n return [];\n }\n}\nexports.AllowedObjectNaming = AllowedObjectNaming;\n//# sourceMappingURL=allowed_object_naming.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/allowed_object_naming.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/allowed_object_types.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/allowed_object_types.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AllowedObjectTypes = exports.AllowedObjectTypesConf = void 0;\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass AllowedObjectTypesConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** List of allowed object types, example: [\"CLAS\", \"INTF\"]\n * @uniqueItems true\n */\n this.allowed = [];\n }\n}\nexports.AllowedObjectTypesConf = AllowedObjectTypesConf;\nclass AllowedObjectTypes {\n constructor() {\n this.conf = new AllowedObjectTypesConf();\n }\n getMetadata() {\n return {\n key: \"allowed_object_types\",\n title: \"Check allowed object types\",\n shortDescription: `Restricts the set of allowed object types.`,\n extendedInformation: `\"allowed\" is a list of 4 character R3TR object types, example: [\"CLAS\", \"INTF\"]`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n initialize(_reg) {\n return this;\n }\n getDescription(objectType) {\n return \"Object type \" + objectType + \" not allowed\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n const allowed = this.getConfig().allowed;\n if (allowed === undefined || allowed.length === 0) {\n return [];\n }\n const objectType = obj.getType();\n if (allowed.indexOf(objectType) < 0) {\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, this.getDescription(objectType), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n return [];\n }\n}\nexports.AllowedObjectTypes = AllowedObjectTypes;\n//# sourceMappingURL=allowed_object_types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/allowed_object_types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/ambiguous_statement.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/ambiguous_statement.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AmbiguousStatement = exports.AmbiguousStatementConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst combi_1 = __webpack_require__(/*! ../abap/2_statements/combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass AmbiguousStatementConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.AmbiguousStatementConf = AmbiguousStatementConf;\nclass AmbiguousStatement extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new AmbiguousStatementConf();\n }\n getMetadata() {\n return {\n key: \"ambiguous_statement\",\n title: \"Check for ambigious statements\",\n shortDescription: `Checks for ambiguity between deleting or modifying from internal and database table\r\nAdd \"TABLE\" keyword or \"@\" for escaping SQL variables\r\n\r\nOnly works if the target version is 740sp05 or above`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `DELETE foo FROM bar.\r\nMODIFY foo FROM bar.`,\n goodExample: `DELETE foo FROM @bar.\r\nMODIFY TABLE foo FROM bar.`,\n };\n }\n getMessage() {\n return \"Ambiguous statement. Use explicit syntax.\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n if (this.reg.getConfig().getVersion() < version_1.Version.v740sp05) {\n return [];\n }\n for (const statement of file.getStatements()) {\n let match = false;\n if (statement.get() instanceof Statements.DeleteDatabase) {\n match = this.tryMatch(statement, this.reg, Statements.DeleteInternal);\n }\n else if (statement.get() instanceof Statements.DeleteInternal) {\n match = this.tryMatch(statement, this.reg, Statements.DeleteDatabase);\n }\n else if (statement.get() instanceof Statements.ModifyInternal) {\n match = this.tryMatch(statement, this.reg, Statements.ModifyDatabase);\n }\n else if (statement.get() instanceof Statements.ModifyDatabase) {\n match = this.tryMatch(statement, this.reg, Statements.ModifyInternal);\n }\n if (match) {\n const issue = issue_1.Issue.atStatement(file, statement, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n tryMatch(st, reg, type1) {\n const ver = reg.getConfig().getVersion();\n const tokens = st.getTokens().slice(0);\n tokens.pop();\n const match = combi_1.Combi.run(new type1().getMatcher(), tokens, ver);\n return match !== undefined;\n }\n}\nexports.AmbiguousStatement = AmbiguousStatement;\n//# sourceMappingURL=ambiguous_statement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/ambiguous_statement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/avoid_use.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/avoid_use.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AvoidUse = exports.AvoidUseConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass AvoidUseConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Do not emit quick fix suggestion */\n this.skipQuickFix = false;\n /** Detects DEFINE (macro definitions) */\n this.define = true;\n /** Detects statics */\n this.statics = true;\n /** Detects DEFAULT KEY definitions, from version v740sp02 and up */\n this.defaultKey = true;\n /** Detects BREAK and BREAK-POINTS */\n this.break = true;\n /** Detects TEST SEAMS */\n this.testSeams = true;\n /** Detects DESCRIBE TABLE LINES, use lines() instead */\n this.describeLines = true;\n /** Detects EXPORT TO MEMORY */\n this.exportToMemory = true;\n /** Detects EXPORT TO DATABASE */\n this.exportToDatabase = true;\n }\n}\nexports.AvoidUseConf = AvoidUseConf;\nclass AvoidUse extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new AvoidUseConf();\n }\n getMetadata() {\n return {\n key: \"avoid_use\",\n title: \"Avoid use of certain statements\",\n shortDescription: `Detects usage of certain statements.`,\n extendedInformation: `DEFAULT KEY: https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-default-key\r\n\r\nMacros: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abenmacros_guidl.htm\r\n\r\nSTATICS: use CLASS-DATA instead\r\n\r\nDESCRIBE TABLE LINES: use lines() instead (quickfix exists)\r\n\r\nTEST-SEAMS: https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-test-seams-as-temporary-workaround`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(statement) {\n return \"Avoid use of \" + statement;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n let isStaticsBlock = false;\n for (const statementNode of file.getStatements()) {\n const statement = statementNode.get();\n let message = undefined;\n let fix = undefined;\n if (this.conf.define && statement instanceof Statements.Define) {\n message = \"DEFINE\";\n }\n else if (this.conf.describeLines && statement instanceof Statements.Describe) {\n const children = statementNode.getChildren();\n if (children.length === 6 && children[3].getFirstToken().getStr().toUpperCase() === \"LINES\") {\n message = \"DESCRIBE LINES, use lines() instead\";\n fix = this.conf.skipQuickFix === true ? undefined : this.getDescribeLinesFix(file, statementNode);\n }\n }\n else if (this.conf.statics && statement instanceof Statements.StaticBegin) {\n isStaticsBlock = true;\n message = \"STATICS\";\n }\n else if (this.conf.statics && statement instanceof Statements.StaticEnd) {\n isStaticsBlock = false;\n }\n else if (this.conf.exportToMemory && statement instanceof Statements.Export && statementNode.concatTokens().includes(\"TO MEMORY \")) {\n message = \"EXPORT TO MEMORY\";\n }\n else if (this.conf.exportToDatabase && statement instanceof Statements.Export && statementNode.concatTokens().includes(\"TO DATABASE \")) {\n message = \"EXPORT TO DATABASE\";\n }\n else if (this.conf.testSeams && statement instanceof Statements.TestSeam) {\n message = \"TEST-SEAM\";\n }\n else if (this.conf.statics && statement instanceof Statements.Static && isStaticsBlock === false) {\n message = \"STATICS\";\n }\n else if (this.conf.break && statement instanceof Statements.Break) {\n message = \"BREAK/BREAK-POINT\";\n fix = this.conf.skipQuickFix === true ? undefined : edit_helper_1.EditHelper.deleteStatement(file, statementNode);\n }\n if (message) {\n issues.push(issue_1.Issue.atStatement(file, statementNode, this.getDescription(message), this.getMetadata().key, this.conf.severity, fix));\n }\n if (this.conf.defaultKey\n && (this.reg.getConfig().getVersion() >= version_1.Version.v740sp02\n || this.reg.getConfig().getVersion() === version_1.Version.Cloud)\n && (statement instanceof Statements.Data || statement instanceof Statements.Type)) {\n const tt = (_a = statementNode.findFirstExpression(expressions_1.TypeTable)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(expressions_1.TypeTableKey);\n const token = tt === null || tt === void 0 ? void 0 : tt.findDirectTokenByText(\"DEFAULT\");\n if (tt && token) {\n message = \"DEFAULT KEY\";\n issues.push(issue_1.Issue.atToken(file, token, this.getDescription(message), this.getMetadata().key, this.conf.severity));\n }\n }\n }\n return issues;\n }\n getDescribeLinesFix(file, statementNode) {\n const children = statementNode.getChildren();\n const target = children[4].concatTokens();\n const source = children[2].concatTokens();\n const startPosition = children[0].getFirstToken().getStart();\n const insertText = target + \" = lines( \" + source + \" ).\";\n const deleteFix = edit_helper_1.EditHelper.deleteStatement(file, statementNode);\n const insertFix = edit_helper_1.EditHelper.insertAt(file, startPosition, insertText);\n const finalFix = edit_helper_1.EditHelper.merge(deleteFix, insertFix);\n return finalFix;\n }\n}\nexports.AvoidUse = AvoidUse;\n//# sourceMappingURL=avoid_use.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/avoid_use.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/begin_end_names.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/begin_end_names.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BeginEndNames = exports.BeginEndNamesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass BeginEndNamesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.BeginEndNamesConf = BeginEndNamesConf;\nclass BeginEndNames extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new BeginEndNamesConf();\n }\n getMetadata() {\n return {\n key: \"begin_end_names\",\n title: \"Check BEGIN END names\",\n shortDescription: `Check BEGIN OF and END OF names match, plus there must be statements between BEGIN and END`,\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `DATA: BEGIN OF stru,\r\n field TYPE i,\r\n END OF structure_not_the_same.`,\n goodExample: `DATA: BEGIN OF stru,\r\n field TYPE i,\r\n END OF stru.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const output = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n output.push(...this.test(struc, Structures.Data, Statements.DataBegin, Statements.DataEnd, file));\n output.push(...this.test(struc, Structures.ClassData, Statements.ClassDataBegin, Statements.ClassDataEnd, file));\n output.push(...this.test(struc, Structures.Constants, Statements.ConstantBegin, Statements.ConstantEnd, file));\n output.push(...this.test(struc, Structures.Statics, Statements.StaticBegin, Statements.StaticEnd, file));\n output.push(...this.test(struc, Structures.TypeEnum, Statements.TypeEnumBegin, Statements.TypeEnumEnd, file));\n output.push(...this.test(struc, Structures.Types, Statements.TypeBegin, Statements.TypeEnd, file));\n return output;\n }\n test(stru, type, b, e, file) {\n const output = [];\n for (const sub of stru.findAllStructuresRecursive(type)) {\n let begin = sub.findDirectStatements(b)[0].findFirstExpression(Expressions.NamespaceSimpleName);\n if (begin === undefined) {\n begin = sub.findDirectStatements(b)[0].findFirstExpression(Expressions.DefinitionName);\n }\n if (begin === undefined) {\n continue;\n }\n const first = begin.getFirstToken();\n let end = sub.findDirectStatements(e)[0].findFirstExpression(Expressions.NamespaceSimpleName);\n if (end === undefined) {\n end = sub.findDirectStatements(e)[0].findFirstExpression(Expressions.DefinitionName);\n }\n if (end === undefined) {\n continue;\n }\n const last = end.getFirstToken();\n if (first.getStr().toUpperCase() !== last.getStr().toUpperCase()) {\n const fix = edit_helper_1.EditHelper.replaceRange(file, last.getStart(), last.getEnd(), first.getStr());\n const message = \"BEGIN END names must match\";\n const issue = issue_1.Issue.atToken(file, first, message, this.getMetadata().key, this.conf.severity, fix);\n output.push(issue);\n }\n if (sub.getChildren().length === 2) {\n const message = \"There must be statements between BEGIN and END\";\n const issue = issue_1.Issue.atToken(file, first, message, this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n return output;\n }\n}\nexports.BeginEndNames = BeginEndNames;\n//# sourceMappingURL=begin_end_names.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/begin_end_names.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/begin_single_include.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/begin_single_include.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BeginSingleInclude = exports.BeginSingleIncludeConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass BeginSingleIncludeConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.BeginSingleIncludeConf = BeginSingleIncludeConf;\nclass BeginSingleInclude extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new BeginSingleIncludeConf();\n }\n getMetadata() {\n return {\n key: \"begin_single_include\",\n title: \"BEGIN contains single INCLUDE\",\n shortDescription: `Finds TYPE BEGIN with just one INCLUDE TYPE, and DATA with single INCLUDE STRUCTURE`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `TYPES: BEGIN OF dummy1.\r\n INCLUDE TYPE dselc.\r\nTYPES: END OF dummy1.\r\n\r\nDATA BEGIN OF foo.\r\nINCLUDE STRUCTURE syst.\r\nDATA END OF foo.\r\n\r\nSTATICS BEGIN OF bar.\r\nINCLUDE STRUCTURE syst.\r\nSTATICS END OF bar.`,\n goodExample: `DATA BEGIN OF foo.\r\nINCLUDE STRUCTURE dselc.\r\nDATA END OF foo.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n for (const t of stru.findAllStructures(Structures.Types)) {\n if (t.getChildren().length !== 3) {\n continue;\n }\n if (t.findFirstStatement(Statements.IncludeType)) {\n const token = t.getFirstToken();\n const message = \"TYPE BEGIN with single INCLUDE\";\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n for (const t of stru.findAllStructures(Structures.Data)) {\n if (t.getChildren().length !== 3) {\n continue;\n }\n if (t.findFirstStatement(Statements.IncludeType)) {\n const token = t.getFirstToken();\n const message = \"DATA BEGIN with single INCLUDE\";\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n for (const t of stru.findAllStructures(Structures.Statics)) {\n if (t.getChildren().length !== 3) {\n continue;\n }\n if (t.findFirstStatement(Statements.IncludeType)) {\n const token = t.getFirstToken();\n const message = \"STATICS BEGIN with single INCLUDE\";\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.BeginSingleInclude = BeginSingleInclude;\n//# sourceMappingURL=begin_single_include.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/begin_single_include.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/call_transaction_authority_check.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/call_transaction_authority_check.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CallTransactionAuthorityCheck = exports.CallTransactionAuthorityCheckConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass CallTransactionAuthorityCheckConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CallTransactionAuthorityCheckConf = CallTransactionAuthorityCheckConf;\nclass CallTransactionAuthorityCheck extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new CallTransactionAuthorityCheckConf();\n this.MINIMUM_VERSION = version_1.Version.v740sp02;\n }\n getMetadata() {\n return {\n key: \"call_transaction_authority_check\",\n title: \"Call Transaction Authority-Check\",\n shortDescription: `Checks that usages of CALL TRANSACTION contain an authority-check.`,\n extendedInformation: `https://docs.abapopenchecks.org/checks/54/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Security],\n badExample: `CALL TRANSACTION 'FOO'.`,\n goodExample: `TRY.\r\n CALL TRANSACTION 'FOO' WITH AUTHORITY-CHECK.\r\n CATCH cx_sy_authorization_error.\r\nENDTRY.`,\n };\n }\n getMessage() {\n return \"Add an authority check to CALL TRANSACTION\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const currentVersion = this.reg.getConfig().getVersion();\n // Cloud version does not support CALL TRANSACTION\n if (currentVersion < this.MINIMUM_VERSION || currentVersion === version_1.Version.Cloud) {\n return [];\n }\n const issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n for (const statNode of file.getStatements()) {\n const statement = statNode.get();\n if (statement instanceof Statements.CallTransaction && !statNode.concatTokensWithoutStringsAndComments().toUpperCase().includes(\"WITH AUTHORITY-CHECK\")) {\n issues.push(issue_1.Issue.atStatement(file, statNode, this.getMessage(), this.getMetadata().key));\n }\n }\n return issues;\n }\n}\nexports.CallTransactionAuthorityCheck = CallTransactionAuthorityCheck;\n//# sourceMappingURL=call_transaction_authority_check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/call_transaction_authority_check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/cds_comment_style.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/cds_comment_style.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSCommentStyle = exports.CDSCommentStyleConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst cds_lexer_1 = __webpack_require__(/*! ../cds/cds_lexer */ \"./node_modules/@abaplint/core/build/src/cds/cds_lexer.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nclass CDSCommentStyleConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CDSCommentStyleConf = CDSCommentStyleConf;\nclass CDSCommentStyle {\n constructor() {\n this.conf = new CDSCommentStyleConf();\n }\n getMetadata() {\n return {\n key: \"cds_comment_style\",\n title: \"CDS Comment Style\",\n shortDescription: `Check for obsolete comment style`,\n extendedInformation: `Check for obsolete comment style\r\n\r\nComments starting with \"--\" are considered obsolete\r\n\r\nhttps://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abencds_general_syntax_rules.htm`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: \"-- this is a comment\",\n goodExample: \"// this is a comment\",\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(object) {\n const issues = [];\n if ((object.getType() === \"DDLS\" && object instanceof objects_1.DataDefinition) ||\n (object.getType() === \"DDLX\" && object instanceof objects_1.CDSMetadataExtension)) {\n const file = object.findSourceFile();\n if (file === undefined) {\n return issues;\n }\n const tokens = cds_lexer_1.CDSLexer.run(file);\n for (const t of tokens) {\n if (t instanceof tokens_1.Comment && t.getStr().startsWith(\"--\")) {\n issues.push(issue_1.Issue.atToken(file, t, `Use \"//\" for comments instead of \"--\"`, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n return issues;\n }\n}\nexports.CDSCommentStyle = CDSCommentStyle;\n//# sourceMappingURL=cds_comment_style.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/cds_comment_style.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/cds_legacy_view.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/cds_legacy_view.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSLegacyView = exports.CDSLegacyViewConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nclass CDSLegacyViewConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CDSLegacyViewConf = CDSLegacyViewConf;\nclass CDSLegacyView {\n constructor() {\n this.conf = new CDSLegacyViewConf();\n }\n getMetadata() {\n return {\n key: \"cds_legacy_view\",\n title: \"CDS Legacy View\",\n shortDescription: `Identify CDS Legacy Views`,\n // eslint-disable-next-line max-len\n extendedInformation: `Use DEFINE VIEW ENTITY instead of DEFINE VIEW\r\n\r\nhttps://blogs.sap.com/2021/10/16/a-new-generation-of-cds-views-how-to-migrate-your-cds-views-to-cds-view-entities/\r\n\r\nv755 and up`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Upport],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(o) {\n const issues = [];\n if (this.reg.getConfig().getVersion() < version_1.Version.v755\n && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {\n return [];\n }\n if (o.getType() !== \"DDLS\") {\n return [];\n }\n if (o instanceof objects_1.DataDefinition) {\n const tree = o.getTree();\n if (tree === undefined) {\n return []; // parser error\n }\n if (tree.findDirectTokenByText(\"ENTITY\") === undefined) {\n const file = o.findSourceFile();\n if (file) {\n issues.push(issue_1.Issue.atRow(file, 1, \"CDS Legacy View\", this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n return issues;\n }\n}\nexports.CDSLegacyView = CDSLegacyView;\n//# sourceMappingURL=cds_legacy_view.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/cds_legacy_view.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/cds_parser_error.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/cds_parser_error.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CDSParserError = exports.CDSParserErrorConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nclass CDSParserErrorConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CDSParserErrorConf = CDSParserErrorConf;\nclass CDSParserError {\n constructor() {\n this.conf = new CDSParserErrorConf();\n }\n getMetadata() {\n return {\n key: \"cds_parser_error\",\n title: \"CDS Parser Error\",\n shortDescription: `CDS parsing`,\n extendedInformation: `Parses CDS and issues parser errors`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(object) {\n const issues = [];\n if ((object.getType() === \"DDLS\" && object instanceof objects_1.DataDefinition) ||\n (object.getType() === \"DDLX\" && object instanceof objects_1.CDSMetadataExtension)) {\n const hasError = object.hasParserError();\n const file = object.findSourceFile();\n if (hasError === true && file) {\n issues.push(issue_1.Issue.atRow(file, 1, \"CDS Parser error\", this.getMetadata().key, this.getConfig().severity));\n }\n }\n return issues;\n }\n}\nexports.CDSParserError = CDSParserError;\n//# sourceMappingURL=cds_parser_error.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/cds_parser_error.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/chain_mainly_declarations.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/chain_mainly_declarations.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ChainMainlyDeclarations = exports.ChainMainlyDeclarationsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass ChainMainlyDeclarationsConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Allow definition statements to be chained */\n this.definitions = true;\n /** Allow WRITE statements to be chained */\n this.write = true;\n /** Allow MOVE statements to be chained */\n this.move = true;\n /** Allow REFRESH statements to be chained */\n this.refresh = true;\n /** Allow UNASSIGN statements to be chained */\n this.unassign = true;\n /** Allow CLEAR statements to be chained */\n this.clear = true;\n /** Allow HIDE statements to be chained */\n this.hide = true;\n /** Allow FREE statements to be chained */\n this.free = true;\n /** Allow INCLUDE statements to be chained */\n this.include = true;\n /** Allow CHECK statements to be chained */\n this.check = true;\n /** Allow SORT statements to be chained */\n this.sort = true;\n }\n}\nexports.ChainMainlyDeclarationsConf = ChainMainlyDeclarationsConf;\nclass ChainMainlyDeclarations extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ChainMainlyDeclarationsConf();\n }\n getMetadata() {\n return {\n key: \"chain_mainly_declarations\",\n title: \"Chain mainly declarations\",\n shortDescription: `Chain mainly declarations, allows chaining for the configured statements, reports errors for other statements.`,\n extendedInformation: `\r\nhttps://docs.abapopenchecks.org/checks/23/\r\n\r\nhttps://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abenchained_statements_guidl.htm\r\n`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n badExample: `CALL METHOD: bar.`,\n goodExample: `CALL METHOD bar.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n const structure = file.getStructure();\n if (structure === undefined) {\n return [];\n }\n let previousRow;\n for (const statementNode of structure.findAllStatementNodes()) {\n const colon = statementNode.getColon();\n if (colon === undefined) {\n continue;\n }\n const statement = statementNode.get();\n if (this.conf.definitions === true\n && (statement instanceof Statements.ClassData\n || statement instanceof Statements.ClassDataBegin\n || statement instanceof Statements.ClassDataEnd\n || statement instanceof Statements.Static\n || statement instanceof Statements.StaticBegin\n || statement instanceof Statements.StaticEnd\n || statement instanceof Statements.Local\n || statement instanceof Statements.Constant\n || statement instanceof Statements.ConstantBegin\n || statement instanceof Statements.ConstantEnd\n || statement instanceof Statements.Controls\n || statement instanceof Statements.Parameter\n || statement instanceof Statements.SelectOption\n || statement instanceof Statements.SelectionScreen\n || statement instanceof Statements.Aliases\n || statement instanceof Statements.Tables\n || statement instanceof Statements.MethodDef\n || statement instanceof Statements.InterfaceDef\n || statement instanceof Statements.Type\n || statement instanceof Statements.TypeBegin\n || statement instanceof Statements.TypeEnd\n || statement instanceof Statements.TypeEnumBegin\n || statement instanceof Statements.TypeEnumEnd\n || statement instanceof Statements.TypeEnum\n || statement instanceof Statements.Events\n || statement instanceof Statements.Ranges\n || statement instanceof Statements.TypePools\n || statement instanceof Statements.FieldSymbol\n || statement instanceof Statements.Data\n || statement instanceof Statements.DataBegin\n || statement instanceof Statements.DataEnd)) {\n continue;\n }\n else if (this.conf.write === true && statement instanceof Statements.Write) {\n continue;\n }\n else if (this.conf.move === true && statement instanceof Statements.Move) {\n continue;\n }\n else if (this.conf.refresh === true && statement instanceof Statements.Refresh) {\n continue;\n }\n else if (this.conf.unassign === true && statement instanceof Statements.Unassign) {\n continue;\n }\n else if (this.conf.clear === true && statement instanceof Statements.Clear) {\n continue;\n }\n else if (this.conf.hide === true && statement instanceof Statements.Hide) {\n continue;\n }\n else if (this.conf.free === true && statement instanceof Statements.Free) {\n continue;\n }\n else if (this.conf.include === true && statement instanceof Statements.Include) {\n continue;\n }\n else if (this.conf.check === true && statement instanceof Statements.Check) {\n continue;\n }\n else if (this.conf.sort === true && statement instanceof Statements.Sort) {\n continue;\n }\n let prevFix;\n if (previousRow === colon.getStart().getRow()) {\n prevFix = (_a = issues.pop()) === null || _a === void 0 ? void 0 : _a.getFix();\n }\n const fix = this.getFix(file, statement, statementNode, prevFix);\n const message = \"Chain mainly declarations\";\n issues.push(issue_1.Issue.atToken(file, statementNode.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix));\n previousRow = statementNode.getColon().getStart().getRow();\n }\n return issues;\n }\n getFix(file, statement, statementNode, prevFix) {\n if (statement instanceof Statements.ClassDataBegin ||\n statement instanceof Statements.ClassDataEnd ||\n statement instanceof Statements.StaticBegin ||\n statement instanceof Statements.StaticEnd ||\n statement instanceof Statements.ConstantBegin ||\n statement instanceof Statements.ConstantEnd ||\n statement instanceof Statements.TypeBegin ||\n statement instanceof Statements.TypeEnd ||\n statement instanceof Statements.TypeEnumBegin ||\n statement instanceof Statements.TypeEnumEnd ||\n statement instanceof Statements.DataBegin ||\n statement instanceof Statements.DataEnd) {\n return undefined;\n }\n let replacement = statementNode.concatTokens();\n replacement = replacement.replace(\",\", \".\");\n let start;\n if (prevFix === undefined) {\n start = statementNode.getStart();\n }\n else {\n start = statementNode.getTokens()[1].getStart();\n }\n let fix = edit_helper_1.EditHelper.replaceRange(file, start, statementNode.getEnd(), replacement);\n if (prevFix !== undefined) {\n fix = edit_helper_1.EditHelper.merge(fix, prevFix);\n }\n return fix;\n }\n}\nexports.ChainMainlyDeclarations = ChainMainlyDeclarations;\n//# sourceMappingURL=chain_mainly_declarations.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/chain_mainly_declarations.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/change_if_to_case.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/change_if_to_case.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ChangeIfToCase = exports.ChangeIfToCaseConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass ChangeIfToCaseConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** skip specific names, case insensitive regular expression\n * @uniqueItems true\n */\n this.skipNames = [];\n }\n}\nexports.ChangeIfToCaseConf = ChangeIfToCaseConf;\nclass ChangeIfToCase extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ChangeIfToCaseConf();\n }\n getMetadata() {\n return {\n key: \"change_if_to_case\",\n title: \"Change IF to CASE\",\n shortDescription: `Finds IF constructs that can be changed to CASE`,\n // eslint-disable-next-line max-len\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-case-to-else-if-for-multiple-alternative-conditions\r\n\r\nIf the first comparison is a boolean compare, no issue is reported.`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],\n badExample: `IF l_fcat-fieldname EQ 'FOO'.\r\nELSEIF l_fcat-fieldname = 'BAR'\r\n OR l_fcat-fieldname = 'MOO'.\r\nENDIF.`,\n goodExample: `CASE l_fcat-fieldname.\r\n WHEN 'FOO'.\r\n WHEN 'BAR' OR 'MOO'.\r\nENDCASE.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return issues;\n }\n for (const i of stru.findAllStructuresRecursive(Structures.If)) {\n const conds = [];\n const ifStatement = i.findDirectStatement(Statements.If);\n if (ifStatement === undefined) {\n continue;\n }\n if (ifStatement.concatTokens().match(/ (abap_true|abap_false)\\s*\\./i)) {\n continue;\n }\n conds.push(ifStatement === null || ifStatement === void 0 ? void 0 : ifStatement.findDirectExpression(Expressions.Cond));\n for (const ei of i.findDirectStructures(Structures.ElseIf)) {\n conds.push((_a = ei.findDirectStatement(Statements.ElseIf)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Cond));\n }\n if (conds.length === 1) {\n continue;\n }\n const issue = this.analyze(conds);\n if (issue === true) {\n const message = \"Change IF to CASE\";\n issues.push(issue_1.Issue.atStatement(file, ifStatement, message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n return issues;\n }\n analyze(conds) {\n var _a, _b, _c, _d, _e;\n const tuples = [];\n for (const c of conds) {\n if (c === undefined) {\n continue;\n }\n if (c.findFirstExpression(Expressions.CondSub)) {\n return false;\n }\n else if (c.findDirectTokenByText(\"AND\") || c.findDirectTokenByText(\"EQUIV\")) {\n return false;\n }\n for (const compare of c.findAllExpressions(Expressions.Compare)) {\n const op = (_a = compare.findDirectExpression(Expressions.CompareOperator)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\n if (compare.getChildren().length !== 3) {\n return false;\n }\n else if (op !== \"=\" && op !== \"EQ\") {\n return false;\n }\n const left = (_c = (_b = compare.getChildren()[0]) === null || _b === void 0 ? void 0 : _b.concatTokens()) === null || _c === void 0 ? void 0 : _c.toUpperCase();\n const right = (_e = (_d = compare.getChildren()[2]) === null || _d === void 0 ? void 0 : _d.concatTokens()) === null || _e === void 0 ? void 0 : _e.toUpperCase();\n tuples.push({ left, right });\n }\n }\n if (tuples.length === 1) {\n return false;\n }\n let chain = \"\";\n if (tuples[0].left === tuples[1].left) {\n chain = tuples[0].left;\n }\n else if (tuples[0].left === tuples[1].right) {\n chain = tuples[0].left;\n }\n else if (tuples[0].right === tuples[1].right) {\n chain = tuples[0].right;\n }\n else if (tuples[0].right === tuples[1].left) {\n chain = tuples[0].right;\n }\n else {\n return false;\n }\n for (const skip of this.getConfig().skipNames || []) {\n const reg = new RegExp(skip, \"i\");\n if (chain.match(reg)) {\n return false;\n }\n }\n for (const t of tuples) {\n if (t.left !== chain && t.right !== chain) {\n return false;\n }\n }\n return true;\n }\n}\nexports.ChangeIfToCase = ChangeIfToCase;\n//# sourceMappingURL=change_if_to_case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/change_if_to_case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_abstract.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_abstract.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckAbstract = exports.CheckAbstractConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass CheckAbstractConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CheckAbstractConf = CheckAbstractConf;\nvar IssueType;\n(function (IssueType) {\n /** Abstract method defined in non-abstract class */\n IssueType[IssueType[\"NotAbstractClass\"] = 0] = \"NotAbstractClass\";\n IssueType[IssueType[\"AbstractAndFinal\"] = 1] = \"AbstractAndFinal\";\n})(IssueType || (IssueType = {}));\nclass CheckAbstract extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new CheckAbstractConf();\n }\n getMetadata() {\n return {\n key: \"check_abstract\",\n title: \"Check abstract methods and classes\",\n shortDescription: `Checks abstract methods and classes:\r\n- class defined as abstract and final,\r\n- non-abstract class contains abstract methods`,\n extendedInformation: `If a class defines only constants, use an interface instead`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(issueType, name) {\n switch (issueType) {\n case IssueType.AbstractAndFinal:\n return \"Classes should not be ABSTRACT and FINAL: \" + name;\n case IssueType.NotAbstractClass:\n return \"Abstract methods require abstract classes: \" + name;\n default:\n return \"\";\n }\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n for (const classDef of file.getInfo().listClassDefinitions()) {\n if (classDef.isAbstract === true) {\n if (classDef.isFinal === true && classDef.isForTesting === false) {\n issues.push(issue_1.Issue.atIdentifier(classDef.identifier, this.getDescription(IssueType.AbstractAndFinal, classDef.name), this.getMetadata().key, this.conf.severity));\n }\n continue;\n }\n for (const methodDef of classDef.methods) {\n if (methodDef.isAbstract === true) {\n issues.push(issue_1.Issue.atIdentifier(methodDef.identifier, this.getDescription(IssueType.NotAbstractClass, methodDef.name), this.getMetadata().key, this.conf.severity));\n }\n }\n }\n return issues;\n }\n}\nexports.CheckAbstract = CheckAbstract;\n//# sourceMappingURL=check_abstract.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_abstract.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_comments.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_comments.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckComments = exports.CheckCommentsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass CheckCommentsConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Allows the use of end-of-line comments. */\n this.allowEndOfLine = false;\n }\n}\nexports.CheckCommentsConf = CheckCommentsConf;\nvar IssueType;\n(function (IssueType) {\n IssueType[IssueType[\"EndOfLine\"] = 0] = \"EndOfLine\";\n})(IssueType || (IssueType = {}));\nclass CheckComments extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new CheckCommentsConf();\n }\n getMetadata() {\n return {\n key: \"check_comments\",\n title: \"Check Comments\",\n shortDescription: `\r\nVarious checks for comment usage.`,\n extendedInformation: `\r\nDetects end of line comments. Comments starting with \"#EC\" or \"##\" are ignored\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#put-comments-before-the-statement-they-relate-to`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n badExample: `WRITE 2. \" descriptive comment`,\n goodExample: `\" descriptive comment\\nWRITE 2.`,\n };\n }\n getDescription(issueType) {\n switch (issueType) {\n case IssueType.EndOfLine: return `Do not use end of line comments - move comment to previous row instead`;\n default: return \"\";\n }\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const rows = file.getRawRows();\n if (this.conf.allowEndOfLine === true) {\n return [];\n }\n const commentRows = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (row.trim().startsWith(\"*\") || row.trim().startsWith(`\"`)) {\n commentRows.push(i);\n }\n }\n const statements = file.getStatements();\n for (let i = statements.length - 1; i >= 0; i--) {\n const statement = statements[i];\n if (statement.get() instanceof _statement_1.Comment && !commentRows.includes(statement.getStart().getRow() - 1)) {\n if (statement.getFirstToken().getStr().startsWith(`\"#EC`)\n || statement.getFirstToken().getStr().startsWith(`\"##`)) {\n continue;\n }\n issues.push(issue_1.Issue.atStatement(file, statement, this.getDescription(IssueType.EndOfLine), this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.CheckComments = CheckComments;\n//# sourceMappingURL=check_comments.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_comments.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_ddic.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_ddic.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckDDIC = exports.CheckDDICConf = void 0;\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nclass CheckDDICConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CheckDDICConf = CheckDDICConf;\nclass CheckDDIC {\n constructor() {\n this.conf = new CheckDDICConf();\n }\n getMetadata() {\n return {\n key: \"check_ddic\",\n title: \"Check DDIC\",\n // eslint-disable-next-line max-len\n shortDescription: `Checks the types of DDIC objects can be resolved, the namespace of the development/errors can be configured in \"errorNamespace\" `,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n let found = undefined;\n if (obj instanceof Objects.DataElement\n || obj instanceof Objects.Domain\n || obj instanceof Objects.Table\n || obj instanceof Objects.View\n || obj instanceof Objects.AuthorizationCheckField\n || obj instanceof Objects.LockObject\n || obj instanceof Objects.MaintenanceAndTransportObject\n || obj instanceof Objects.TableType) {\n found = obj.parseType(this.reg);\n }\n else {\n return [];\n }\n return this.check(found, obj);\n }\n check(found, obj) {\n const ret = [];\n if (found instanceof basic_1.UnknownType) {\n const position = new position_1.Position(1, 1);\n const message = \"Unknown/un-resolveable type in \" + obj.getName() + \": \" + found.getError();\n ret.push(issue_1.Issue.atPosition(obj.getFiles()[0], position, message, this.getMetadata().key, this.conf.severity));\n }\n else if (found instanceof basic_1.StructureType) {\n // assumption: no circular types\n for (const c of found.getComponents()) {\n ret.push(...this.check(c.type instanceof _typed_identifier_1.TypedIdentifier ? c.type.getType() : c.type, obj));\n }\n }\n else if (found instanceof basic_1.TableType) {\n ret.push(...this.check(found.getRowType(), obj));\n }\n // todo, reference types?\n return ret;\n }\n}\nexports.CheckDDIC = CheckDDIC;\n//# sourceMappingURL=check_ddic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_ddic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_include.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_include.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckInclude = exports.CheckIncludeConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst include_graph_1 = __webpack_require__(/*! ../utils/include_graph */ \"./node_modules/@abaplint/core/build/src/utils/include_graph.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass CheckIncludeConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CheckIncludeConf = CheckIncludeConf;\nclass CheckInclude {\n constructor() {\n this.conf = new CheckIncludeConf();\n }\n getMetadata() {\n return {\n key: \"check_include\",\n title: \"Check INCLUDEs\",\n shortDescription: `Checks INCLUDE statements`,\n extendedInformation: `\r\n* Reports unused includes\r\n* Errors if the includes are not found\r\n* Error if including a main program`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n this.graph = new include_graph_1.IncludeGraph(this.reg);\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n let ret = [];\n for (const file of obj.getABAPFiles()) {\n ret = ret.concat(this.graph.getIssuesFile(file));\n }\n return ret;\n }\n}\nexports.CheckInclude = CheckInclude;\n//# sourceMappingURL=check_include.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_include.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_subrc.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_subrc.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckSubrc = exports.CheckSubrcConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass CheckSubrcConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.openDataset = true;\n this.authorityCheck = true;\n this.selectSingle = true;\n this.selectTable = true;\n this.updateDatabase = true;\n this.insertDatabase = true;\n this.modifyDatabase = true;\n this.readTable = true;\n this.assign = true;\n this.find = true;\n }\n}\nexports.CheckSubrcConf = CheckSubrcConf;\nclass CheckSubrc extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new CheckSubrcConf();\n }\n getMetadata() {\n return {\n key: \"check_subrc\",\n title: \"Check sy-subrc\",\n shortDescription: `Check sy-subrc`,\n extendedInformation: `Pseudo comment \"#EC CI_SUBRC can be added to suppress findings\r\n\r\nIf sy-dbcnt is checked after database statements, it is considered okay.\r\n\r\n\"SELECT SINGLE @abap_true FROM \" is considered as an existence check\r\n\r\nIf IS ASSIGNED is checked after assigning, it is considered okay.\r\n\r\nFIND statement with MATCH COUNT is considered okay if subrc is not checked`,\n tags: [_irule_1.RuleTag.SingleFile],\n pseudoComment: \"EC CI_SUBRC\",\n pragma: \"##SUBRC_OK\",\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const statements = file.getStatements();\n const message = \"Check sy-subrc\";\n const config = this.getConfig();\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i];\n // todo: CALL FUNCTION\n if (statement.getPragmas().some(t => t.getStr() === this.getMetadata().pragma)) {\n continue;\n }\n if (config.openDataset === true\n && statement.get() instanceof Statements.OpenDataset\n && this.isChecked(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.authorityCheck === true\n && statement.get() instanceof Statements.AuthorityCheck\n && this.isChecked(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.selectSingle === true\n && statement.get() instanceof Statements.Select\n && statement.concatTokens().toUpperCase().startsWith(\"SELECT SINGLE \")\n && this.isChecked(i, statements) === false\n && this.checksDbcnt(i, statements) === false) {\n const concat = statement.concatTokens().toUpperCase();\n if (concat.startsWith(\"SELECT SINGLE @ABAP_TRUE FROM \")) {\n continue;\n }\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.selectTable === true\n && statement.get() instanceof Statements.Select\n && statement.concatTokens().toUpperCase().startsWith(\"SELECT SINGLE \") === false\n && this.isChecked(i, statements) === false\n && this.checksDbcnt(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.updateDatabase === true\n && statement.get() instanceof Statements.UpdateDatabase\n && this.isChecked(i, statements) === false\n && this.checksDbcnt(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.insertDatabase === true\n && statement.get() instanceof Statements.InsertDatabase\n && this.isChecked(i, statements) === false\n && this.checksDbcnt(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.modifyDatabase === true\n && statement.get() instanceof Statements.ModifyDatabase\n && this.isChecked(i, statements) === false\n && this.checksDbcnt(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.readTable === true\n && statement.get() instanceof Statements.ReadTable\n && this.isChecked(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.assign === true\n && statement.get() instanceof Statements.Assign\n && this.isChecked(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n else if (config.find === true\n && statement.get() instanceof Statements.Find\n && this.isExemptedFind(statement) === false\n && this.isChecked(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n ////////////////\n isExemptedFind(s) {\n // see https://github.com/abaplint/abaplint/issues/2130\n return s.concatTokens().toUpperCase().includes(\" MATCH COUNT \") === true;\n }\n checksDbcnt(index, statements) {\n for (let i = index + 1; i < statements.length; i++) {\n const statement = statements[i];\n const concat = statement.concatTokens().toUpperCase();\n if (statement.get() instanceof _statement_1.Comment) {\n continue;\n }\n else if (statement.get() instanceof Statements.EndIf) {\n continue;\n }\n else {\n return concat.includes(\"SY-DBCNT\");\n }\n }\n return false;\n }\n isChecked(index, statements) {\n var _a, _b;\n let assigned = undefined;\n let assignedn = undefined;\n if (statements[index].get() instanceof Statements.Assign\n || statements[index].get() instanceof Statements.ReadTable) {\n const fs = (_b = (_a = statements[index].findFirstExpression(Expressions.FSTarget)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(Expressions.FieldSymbol)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr();\n assigned = (fs === null || fs === void 0 ? void 0 : fs.toUpperCase()) + \" IS ASSIGNED\";\n assignedn = (fs === null || fs === void 0 ? void 0 : fs.toUpperCase()) + \" IS NOT ASSIGNED\";\n }\n for (let i = index + 1; i < statements.length; i++) {\n const statement = statements[i];\n const concat = statement.concatTokens().toUpperCase();\n if (statement.get() instanceof _statement_1.Comment) {\n if (concat.includes(\"\" + this.getMetadata().pseudoComment)) {\n return true;\n }\n }\n else if (statement.get() instanceof Statements.EndIf) {\n continue;\n }\n else {\n if (assigned && concat.includes(assigned)) {\n return true;\n }\n if (assignedn && concat.includes(assignedn)) {\n return true;\n }\n return concat.includes(\" SY-SUBRC\")\n || concat.includes(\"CL_ABAP_UNIT_ASSERT=>ASSERT_SUBRC\");\n }\n }\n return false;\n }\n}\nexports.CheckSubrc = CheckSubrc;\n//# sourceMappingURL=check_subrc.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_subrc.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_syntax.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_syntax.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckSyntax = exports.CheckSyntaxConf = void 0;\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst severity_1 = __webpack_require__(/*! ../severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\nclass CheckSyntaxConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CheckSyntaxConf = CheckSyntaxConf;\nclass CheckSyntax {\n constructor() {\n this.conf = new CheckSyntaxConf();\n }\n getMetadata() {\n return {\n key: \"check_syntax\",\n title: \"Check syntax\",\n shortDescription: `Enables syntax check and variable resolution`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const issues = new syntax_1.SyntaxLogic(this.reg, obj).run().issues;\n // the syntax logic does not know the rule severity when its run\n if (this.conf.severity\n && this.conf.severity !== severity_1.Severity.Error) {\n issues.forEach((value, index) => {\n const data = value.getData();\n data.severity = this.conf.severity;\n issues[index] = new issue_1.Issue(data);\n });\n }\n return issues;\n }\n}\nexports.CheckSyntax = CheckSyntax;\n//# sourceMappingURL=check_syntax.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_syntax.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_text_elements.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_text_elements.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckTextElements = exports.CheckTextElementsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst include_graph_1 = __webpack_require__(/*! ../utils/include_graph */ \"./node_modules/@abaplint/core/build/src/utils/include_graph.js\");\nclass CheckTextElementsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CheckTextElementsConf = CheckTextElementsConf;\nclass CheckTextElements {\n constructor() {\n this.conf = new CheckTextElementsConf();\n }\n getMetadata() {\n return {\n key: \"check_text_elements\",\n title: \"Check text elements\",\n shortDescription: `Check text elements exists or matches code`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n this.graph = new include_graph_1.IncludeGraph(this.reg);\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const output = [];\n for (const file of obj.getABAPFiles()) {\n const stru = file.getStructure();\n if (stru === undefined) {\n continue;\n }\n let texts;\n let mainName = undefined;\n const expressions = stru.findAllExpressionsMulti([Expressions.TextElement, Expressions.TextElementString]);\n // optimize: no need to find main and texts if there are no expressions to check\n if (expressions.length > 0) {\n const mains = this.graph.listMainForInclude(file.getFilename());\n if (mains.length === 1) {\n // todo, this only checks the first main\n mainName = mains[0];\n const main1 = this.reg.findObjectForFile(this.reg.getFileByName(mains[0]));\n texts = main1.getTexts();\n }\n else {\n texts = obj.getTexts();\n }\n }\n for (const e of expressions) {\n if (e.get() instanceof Expressions.TextElement) {\n const token = e.findFirstExpression(Expressions.TextElementKey).getFirstToken();\n const key = token.getStr().toUpperCase();\n if (texts[key] === undefined) {\n const message = `Text element \"${key}\" not found` + (mainName ? \", \" + mainName : \"\");\n output.push(issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity));\n }\n }\n else {\n // its a Expressions.TextElementString\n const token = e.findFirstExpression(Expressions.TextElementKey).getFirstToken();\n const code = e.getFirstToken().getStr();\n const key = token.getStr().toUpperCase();\n let found = texts[key];\n if (found && code.startsWith(\"'\")) {\n found = found.replace(/'/g, \"''\");\n }\n if (found === undefined) {\n const message = `Text element \"${key}\" not found` + (mainName ? \", \" + mainName : \"\");\n output.push(issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity));\n }\n else if (code !== \"'\" + found + \"'\"\n && code !== \"`\" + found + \"`\") {\n output.push(issue_1.Issue.atToken(file, token, \"Text does not match text element\", this.getMetadata().key, this.conf.severity));\n }\n }\n }\n }\n return output;\n }\n}\nexports.CheckTextElements = CheckTextElements;\n//# sourceMappingURL=check_text_elements.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_text_elements.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/check_transformation_exists.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/check_transformation_exists.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CheckTransformationExists = exports.CheckTransformationExistsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass CheckTransformationExistsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CheckTransformationExistsConf = CheckTransformationExistsConf;\nclass CheckTransformationExists extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new CheckTransformationExistsConf();\n }\n getMetadata() {\n return {\n key: \"check_transformation_exists\",\n title: \"Check transformation exists\",\n shortDescription: `Checks that used XSLT transformations exist.`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getDescription(name) {\n return \"Transformation \\\"\" + name + \"\\\" not found\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const output = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n for (const s of file.getStatements()) {\n if (s.get() instanceof statements_1.CallTransformation) {\n const nameExpression = s.findFirstExpression(expressions_1.NamespaceSimpleName);\n if (nameExpression === undefined) {\n continue;\n }\n const tok = nameExpression.getFirstToken();\n const name = tok.getStr();\n if (this.reg.inErrorNamespace(name) === true\n && this.reg.getObject(\"XSLT\", name) === undefined) {\n const issue = issue_1.Issue.atToken(file, tok, this.getDescription(name), this.getMetadata().key);\n output.push(issue);\n }\n }\n }\n return output;\n }\n}\nexports.CheckTransformationExists = CheckTransformationExists;\n//# sourceMappingURL=check_transformation_exists.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/check_transformation_exists.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/class_attribute_names.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/class_attribute_names.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassAttributeNames = exports.ClassAttributeNamesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _naming_rule_config_1 = __webpack_require__(/*! ./_naming_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js\");\nconst name_validator_1 = __webpack_require__(/*! ../utils/name_validator */ \"./node_modules/@abaplint/core/build/src/utils/name_validator.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _abap_file_information_1 = __webpack_require__(/*! ../abap/4_file_information/_abap_file_information */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nclass ClassAttributeNamesConf extends _naming_rule_config_1.NamingRuleConfig {\n constructor() {\n super(...arguments);\n /** Ignore global exception classes */\n this.ignoreExceptions = true;\n /** Ignore local classes */\n this.ignoreLocal = true;\n /** Ignore interfaces */\n this.ignoreInterfaces = false;\n /** The pattern for static variable names */\n this.statics = \"^G._.+$\";\n /** The pattern for instance variable names */\n this.instance = \"^M._.+$\";\n /** The pattern for constant variable names */\n this.constants = \"\";\n }\n}\nexports.ClassAttributeNamesConf = ClassAttributeNamesConf;\nclass ClassAttributeNames extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ClassAttributeNamesConf();\n }\n getMetadata() {\n return {\n key: \"class_attribute_names\",\n title: \"Class attributes naming\",\n shortDescription: `Allows you to enforce a pattern, such as a prefix, for class variable names.`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(actual, expected) {\n return this.conf.patternKind === \"required\" ?\n \"Class attribute name \\\"\" + actual + \"\\\" does not match pattern \" + expected :\n \"Class attribute name \\\"\" + actual + \"\\\" must not match pattern \" + expected;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n let issues = [];\n if (this.conf.patternKind === undefined) {\n this.conf.patternKind = \"required\";\n }\n let attributes = [];\n const ddic = new ddic_1.DDIC(this.reg);\n for (const classDef of file.getInfo().listClassDefinitions()) {\n if ((classDef.isLocal && this.conf.ignoreLocal)\n || (ddic.isException(classDef, obj) && this.conf.ignoreExceptions)) {\n continue;\n }\n attributes = attributes.concat(classDef.attributes);\n }\n if (this.conf.ignoreInterfaces === false) {\n for (const intfDef of file.getInfo().listInterfaceDefinitions()) {\n if (intfDef.isLocal && this.conf.ignoreLocal) {\n continue;\n }\n attributes = attributes.concat(intfDef.attributes);\n }\n }\n issues = this.checkAttributes(attributes);\n return issues;\n }\n checkAttributes(attr) {\n if (attr === undefined) {\n return [];\n }\n let ret = [];\n for (const a of attr) {\n switch (a.level) {\n case _abap_file_information_1.AttributeLevel.Instance:\n ret = ret.concat(this.checkName(a.identifier, this.conf.instance));\n break;\n case _abap_file_information_1.AttributeLevel.Static:\n ret = ret.concat(this.checkName(a.identifier, this.conf.statics));\n break;\n case _abap_file_information_1.AttributeLevel.Constant:\n ret = ret.concat(this.checkName(a.identifier, this.conf.constants));\n break;\n default:\n break;\n }\n }\n return ret;\n }\n checkName(attr, expected) {\n const ret = [];\n const regex = new RegExp(expected, \"i\");\n const name = attr.getName();\n if (name_validator_1.NameValidator.violatesRule(name, regex, this.conf)) {\n const issue = issue_1.Issue.atIdentifier(attr, this.getDescription(name, expected), this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n return ret;\n }\n}\nexports.ClassAttributeNames = ClassAttributeNames;\n//# sourceMappingURL=class_attribute_names.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/class_attribute_names.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/classic_exceptions_overlap.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/classic_exceptions_overlap.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ClassicExceptionsOverlap = exports.ClassicExceptionsOverlapConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass ClassicExceptionsOverlapConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ClassicExceptionsOverlapConf = ClassicExceptionsOverlapConf;\nclass ClassicExceptionsOverlap extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ClassicExceptionsOverlapConf();\n }\n getMetadata() {\n return {\n key: \"classic_exceptions_overlap\",\n title: \"Classic exceptions overlap when catching\",\n shortDescription: `Find overlapping classic exceptions`,\n extendedInformation: `When debugging its typically good to know exactly which exception is caught`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `CALL FUNCTION 'SOMETHING'\r\n EXCEPTIONS\r\n system_failure = 1 MESSAGE lv_message\r\n communication_failure = 1 MESSAGE lv_message\r\n resource_failure = 1\r\n OTHERS = 1.`,\n goodExample: `CALL FUNCTION 'SOMETHING'\r\n EXCEPTIONS\r\n system_failure = 1 MESSAGE lv_message\r\n communication_failure = 2 MESSAGE lv_message\r\n resource_failure = 3\r\n OTHERS = 4.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const output = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return []; // syntax error\n }\n for (const p of struc.findAllExpressions(Expressions.ParameterListExceptions)) {\n const set = new Set();\n for (const e of p.findAllExpressions(Expressions.ParameterException)) {\n const text = (_a = e.findDirectExpression(Expressions.SimpleName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\n if (text === undefined) {\n continue;\n }\n if (set.has(text)) {\n const message = \"Exception overlap, \" + text;\n const issue = issue_1.Issue.atToken(file, e.getFirstToken(), message, this.getMetadata().key, this.getConfig().severity);\n output.push(issue);\n break;\n }\n set.add(text);\n }\n }\n return output;\n }\n}\nexports.ClassicExceptionsOverlap = ClassicExceptionsOverlap;\n//# sourceMappingURL=classic_exceptions_overlap.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/classic_exceptions_overlap.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/cloud_types.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/cloud_types.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CloudTypes = exports.CloudTypesConf = void 0;\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass CloudTypesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.CloudTypesConf = CloudTypesConf;\nclass CloudTypes {\n constructor() {\n this.conf = new CloudTypesConf();\n }\n getMetadata() {\n return {\n key: \"cloud_types\",\n title: \"Check cloud types\",\n shortDescription: `Checks that the package does not contain any object types unsupported in cloud ABAP.`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Syntax],\n };\n }\n getDescription(objectType) {\n return \"Object type \" + objectType + \" not supported in cloud\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (this.reg.getConfig().getVersion() !== version_1.Version.Cloud\n || obj instanceof Objects.AssignmentServiceToAuthorizationGroup\n || obj instanceof Objects.AuthorizationCheckField\n || obj instanceof Objects.AuthorizationObject\n || obj instanceof Objects.AuthorizationObjectExtension\n || obj instanceof Objects.BehaviorDefinition\n || obj instanceof Objects.BusinessCatalog\n || obj instanceof Objects.BusinessCatalogAppAssignment\n || obj instanceof Objects.CDSMetadataExtension\n || obj instanceof Objects.RestrictionField\n || obj instanceof Objects.Class\n || obj instanceof Objects.CommunicationScenario\n || obj instanceof Objects.DataControl\n || obj instanceof Objects.DataDefinition\n || obj instanceof Objects.DataElement\n || obj instanceof Objects.Domain\n || obj instanceof Objects.FunctionGroup\n || obj instanceof Objects.HttpService\n || obj instanceof Objects.IAMApp\n || obj instanceof Objects.InboundService\n || obj instanceof Objects.Interface\n || obj instanceof Objects.LockObject\n || obj instanceof Objects.ATCCheckCategory\n || obj instanceof Objects.ATCCheckObject\n || obj instanceof Objects.ATCCheckVariant\n || obj instanceof Objects.MessageClass\n || obj instanceof Objects.Package\n || obj instanceof Objects.RestrictionType\n || obj instanceof Objects.ServiceBinding\n || obj instanceof Objects.ServiceDefinition\n || obj instanceof Objects.Table\n || obj instanceof Objects.TableType\n || obj instanceof Objects.Transformation) {\n return [];\n }\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, this.getDescription(obj.getType()), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n}\nexports.CloudTypes = CloudTypes;\n//# sourceMappingURL=cloud_types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/cloud_types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/colon_missing_space.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/colon_missing_space.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ColonMissingSpace = exports.ColonMissingSpaceConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass ColonMissingSpaceConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ColonMissingSpaceConf = ColonMissingSpaceConf;\nclass ColonMissingSpace extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ColonMissingSpaceConf();\n }\n getMetadata() {\n return {\n key: \"colon_missing_space\",\n title: \"Colon missing space\",\n shortDescription: `Checks for missing spaces after colons in chained statements.`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `WRITE:hello, world.`,\n goodExample: `WRITE: hello, world.`,\n };\n }\n getMessage() {\n return \"Missing space after the colon\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const tokens = file.getTokens();\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.getStr() === \":\"\n && tokens[i + 1] !== undefined\n && tokens[i + 1].getRow() === token.getRow()\n && tokens[i + 1].getCol() === token.getCol() + 1) {\n const start = token.getStart();\n const end = new position_1.Position(start.getRow(), start.getCol() + 1);\n const fix = edit_helper_1.EditHelper.insertAt(file, end, \" \");\n const issue = issue_1.Issue.atRange(file, start, end, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.ColonMissingSpace = ColonMissingSpace;\n//# sourceMappingURL=colon_missing_space.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/colon_missing_space.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/commented_code.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/commented_code.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CommentedCode = exports.CommentedCodeConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst abap_parser_1 = __webpack_require__(/*! ../abap/abap_parser */ \"./node_modules/@abaplint/core/build/src/abap/abap_parser.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst memory_file_1 = __webpack_require__(/*! ../files/memory_file */ \"./node_modules/@abaplint/core/build/src/files/memory_file.js\");\nclass CommentedCodeConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Allow INCLUDEs in function groups */\n this.allowIncludeInFugr = true;\n }\n}\nexports.CommentedCodeConf = CommentedCodeConf;\nclass CommentedCode extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new CommentedCodeConf();\n }\n getMetadata() {\n return {\n key: \"commented_code\",\n title: \"Find commented code\",\n shortDescription: `Detects usage of commented out code.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#delete-code-instead-of-commenting-it\r\nhttps://docs.abapopenchecks.org/checks/14/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Commented code\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n let issues = [];\n const rows = file.getRawRows();\n let code = \"\";\n let posEnd = undefined;\n let posStart = undefined;\n for (let i = 0; i < rows.length; i++) {\n if (this.isCommentLine(rows[i])) {\n if (code === \"\") {\n posStart = new position_1.Position(i + 1, 1);\n }\n code = code + rows[i].trim().substr(1) + \"\\n\";\n posEnd = new position_1.Position(i + 1, rows[i].length + 1);\n }\n else if (code !== \"\" && posStart && posEnd) {\n issues = issues.concat(this.check(code.trim(), file, posStart, posEnd, obj));\n code = \"\";\n }\n }\n if (posStart && posEnd) {\n issues = issues.concat(this.check(code.trim(), file, posStart, posEnd, obj));\n }\n return issues;\n }\n check(code, file, posStart, posEnd, obj) {\n // assumption: code must end with \".\" in order to be valid ABAP\n if (code === \"\" || code.charAt(code.length - 1) !== \".\") {\n return [];\n }\n const commented = new memory_file_1.MemoryFile(\"_foobar.prog.abap\", code);\n const abapFile = new abap_parser_1.ABAPParser().parse([commented]).output[0];\n const statementNodes = abapFile.getStatements();\n if (statementNodes.length === 0) {\n return [];\n }\n let containsStatement = false;\n for (const statementNode of statementNodes) {\n const statement = statementNode.get();\n if (this.getConfig().allowIncludeInFugr === true\n && obj instanceof objects_1.FunctionGroup\n && statement instanceof statements_1.Include) {\n continue;\n }\n if (!(statement instanceof _statement_1.Unknown\n || statement instanceof _statement_1.Empty\n || statement instanceof _statement_1.Comment)) {\n containsStatement = true;\n break;\n }\n }\n if (!containsStatement) {\n return [];\n }\n const fix = edit_helper_1.EditHelper.deleteRange(file, posStart, posEnd);\n const issue = issue_1.Issue.atRange(file, posStart, posEnd, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n return [issue];\n }\n isCommentLine(text) {\n return (text.substr(0, 1) === \"*\")\n || (text.trim().substr(0, 1) === \"\\\"\" && text.trim().substr(1, 1) !== \"!\");\n }\n}\nexports.CommentedCode = CommentedCode;\n//# sourceMappingURL=commented_code.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/commented_code.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/constant_classes.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/constant_classes.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConstantClasses = exports.ConstantClassesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/index.js\");\n/** Checks that constants classes are in sync with domain fixed values */\nclass ConstantClassesConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Specify a list of domain-class pairs which will be validated */\n this.mapping = [];\n }\n}\nexports.ConstantClassesConf = ConstantClassesConf;\nclass ConstantClasses {\n constructor() {\n this.conf = new ConstantClassesConf();\n }\n getMetadata() {\n return {\n key: \"constant_classes\",\n title: \"Validate constant classes\",\n shortDescription: `Checks that a class contains exactly the constants corresponding to a domain's fixed values.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-enumeration-classes-to-constants-interfaces`,\n tags: [_irule_1.RuleTag.Styleguide],\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n if (this.conf\n && this.conf.mapping\n && obj instanceof __1.Objects.Domain) {\n const configEntry = this.conf.mapping.find(x => x.domain.toUpperCase() === obj.getName().toUpperCase());\n if (!configEntry) {\n return [];\n }\n const classWithConstants = this.reg.getObject(\"CLAS\", configEntry === null || configEntry === void 0 ? void 0 : configEntry.class.toUpperCase());\n if (!classWithConstants) {\n return [issue_1.Issue.atIdentifier(obj.getIdentifier(), `Constant class pattern implementation ${configEntry.class} missing for domain ${configEntry.domain}`, this.getMetadata().key, this.conf.severity)];\n // quickfix will implement the whole class\n }\n const classContents = classWithConstants.getMainABAPFile();\n if (classContents === undefined) {\n return [];\n }\n const def = classWithConstants.getClassDefinition();\n if (!def) {\n // this issue is checked by rule implement_methods.\n // we will not issue errors that all constants are missing until there is a class implementation\n return [];\n }\n const domainValueInfo = obj.getFixedValues();\n const domainValues = domainValueInfo.map(x => x.low);\n const issues = [];\n if (obj.getFixedValues().length === 0) {\n // possibly this is not even a domain with fixed values\n issues.push(issue_1.Issue.atStatement(classContents, classContents.getStatements()[0], `Domain ${configEntry.domain} does not contain any fixed values. Either add some values or disable this check`, this.getMetadata().key, this.conf.severity));\n }\n // later we will raise an issue if we did not find it\n let domainNameConstantFound = false;\n for (const constant of def.constants) {\n if (configEntry.constantForDomainName\n && constant.name === configEntry.constantForDomainName) {\n // we require the constant value to be uppercase just in case\n // in the config it does not matter\n if (constant.value !== configEntry.domain.toLocaleUpperCase()) {\n issues.push(this.issueAtConstant(constant, `Constant value ${constant.value} must match domain name ${configEntry.domain} `));\n }\n domainNameConstantFound = true;\n continue;\n }\n if (configEntry.useExactType && constant.typeName.toLowerCase() !== configEntry.domain.toLowerCase()) {\n issues.push(this.issueAtConstant(constant, `Use exact type ${configEntry.domain} instead of ${constant.typeName}`));\n // quickfix will change the type\n }\n if (constant.visibility !== __1.Visibility.Public) {\n issues.push(this.issueAtConstant(constant, `Constant ${constant.name} should be public`));\n // quickfix will move constant\n }\n if (!domainValues.includes(constant.value)) {\n issues.push(this.issueAtConstant(constant, `Extra constant ${constant.name} found which is not present in domain ${configEntry.domain}`));\n // quickfix will remove constant\n }\n }\n for (const d of domainValueInfo) {\n if (!def.constants.find(c => c.value === d.low)) {\n issues.push(issue_1.Issue.atStatement(classContents, classContents.getStatements()[0], `Missing constant for ${d.low} (domain ${configEntry.domain})`, this.getMetadata().key, this.conf.severity));\n // quickfix will add constant\n }\n }\n if (configEntry.constantForDomainName && !domainNameConstantFound) {\n issues.push(issue_1.Issue.atStatement(classContents, classContents.getStatements()[0], `Missing constant ${configEntry.constantForDomainName} for name of domain ${configEntry.domain}`, this.getMetadata().key, this.conf.severity));\n }\n return issues;\n }\n return [];\n }\n issueAtConstant(constant, message) {\n return issue_1.Issue.atIdentifier(constant.identifier, message, this.getMetadata().key, this.conf.severity);\n }\n}\nexports.ConstantClasses = ConstantClasses;\n//# sourceMappingURL=constant_classes.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/constant_classes.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/constructor_visibility_public.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/constructor_visibility_public.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ConstructorVisibilityPublic = exports.ConstructorVisibilityPublicConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst visibility_1 = __webpack_require__(/*! ../abap/4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nclass ConstructorVisibilityPublicConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ConstructorVisibilityPublicConf = ConstructorVisibilityPublicConf;\nclass ConstructorVisibilityPublic {\n constructor() {\n this.conf = new ConstructorVisibilityPublicConf();\n }\n getMetadata() {\n return {\n key: \"constructor_visibility_public\",\n title: \"Check constructor visibility is public\",\n shortDescription: `Constructor must be placed in the public section, even if the class is not CREATE PUBLIC.`,\n extendedInformation: `\r\nThis only applies to global classes.\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#if-your-global-class-is-create-private-leave-the-constructor-public\r\nhttps://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abeninstance_constructor_guidl.htm`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Constructor visibility should be public\";\n }\n getConfig() {\n return this.conf;\n }\n initialize(_reg) {\n return this;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n const issues = [];\n if (!(obj instanceof objects_1.Class)) {\n return [];\n }\n const def = obj.getClassDefinition();\n if (def === undefined) {\n return [];\n }\n for (const method of def.methods) {\n if (method.name.toUpperCase() === \"CONSTRUCTOR\"\n && method.visibility !== visibility_1.Visibility.Public) {\n const issue = issue_1.Issue.atIdentifier(method.identifier, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.ConstructorVisibilityPublic = ConstructorVisibilityPublic;\n//# sourceMappingURL=constructor_visibility_public.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/constructor_visibility_public.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/contains_tab.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/contains_tab.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ContainsTab = exports.ContainsTabConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass ContainsTabConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** quick fix replace with number of spaces */\n this.spaces = 1;\n }\n}\nexports.ContainsTabConf = ContainsTabConf;\nclass ContainsTab extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ContainsTabConf();\n }\n getMetadata() {\n return {\n key: \"contains_tab\",\n title: \"Code contains tab\",\n shortDescription: `Checks for usage of tabs (enable to enforce spaces)`,\n extendedInformation: `\r\nhttps://docs.abapopenchecks.org/checks/09/\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#indent-and-snap-to-tab`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Code should not contain tabs\";\n }\n getConfig() {\n if (this.conf.spaces === undefined) {\n this.conf.spaces = 1;\n }\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const lines = file.getRaw().split(\"\\n\");\n lines.forEach((_, i) => {\n const tabCol = lines[i].indexOf(\"\\t\");\n if (tabCol >= 0) {\n let tabAmount = 1;\n while (lines[i].indexOf(\"\\t\", tabCol + tabAmount - 1) >= 0) {\n tabAmount++;\n }\n issues.push(this.createIssue(i, tabCol, tabAmount, file));\n }\n });\n return issues;\n }\n createIssue(line, tabCol, tabAmount, file) {\n const tabStartPos = new position_1.Position(line + 1, tabCol + 1);\n const tabEndPos = new position_1.Position(line + 1, tabCol + tabAmount);\n const fix = edit_helper_1.EditHelper.replaceRange(file, tabStartPos, tabEndPos, \" \".repeat(this.getConfig().spaces));\n return issue_1.Issue.atRange(file, tabStartPos, tabEndPos, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n }\n}\nexports.ContainsTab = ContainsTab;\n//# sourceMappingURL=contains_tab.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/contains_tab.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/cyclic_oo.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/cyclic_oo.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CyclicOO = exports.CyclicOOConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass CyclicOOConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** List of object names to skip, must be full upper case name\n * @uniqueItems true\n */\n this.skip = [];\n /** Skips shared memory enabled classes */\n this.skipSharedMemory = true;\n /** Skip testclass inclues */\n this.skipTestclasses = true;\n }\n}\nexports.CyclicOOConf = CyclicOOConf;\nclass CyclicOO {\n constructor() {\n this.conf = new CyclicOOConf();\n this.edges = {};\n }\n getMetadata() {\n return {\n key: \"cyclic_oo\",\n title: \"Cyclic OO\",\n shortDescription: `Finds cyclic OO references`,\n extendedInformation: `Runs for global INTF + CLAS objects\r\n\r\nObjects must be without syntax errors for this rule to take effect\r\n\r\nReferences in testclass includes are ignored`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.skip === undefined) {\n this.conf.skip = [];\n }\n }\n initialize(reg) {\n var _a;\n this.reg = reg;\n this.edges = {};\n for (const obj of this.reg.getObjectsByType(\"CLAS\")) {\n if (this.reg.isDependency(obj)) {\n continue;\n }\n const name = obj.getName().toUpperCase();\n if (!(obj instanceof objects_1.Class)) {\n continue;\n }\n else if (this.conf.skip.indexOf(name) >= 0) {\n continue;\n }\n else if (this.conf.skipSharedMemory === true && ((_a = obj.getClassDefinition()) === null || _a === void 0 ? void 0 : _a.isSharedMemory) === true) {\n continue;\n }\n const run = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (run.issues.length > 0) {\n continue;\n }\n this.buildEdges(name, run.spaghetti.getTop());\n }\n for (const obj of this.reg.getObjectsByType(\"INTF\")) {\n if (this.reg.isDependency(obj)) {\n continue;\n }\n const name = obj.getName().toUpperCase();\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n continue;\n }\n else if (this.conf.skip.indexOf(name) >= 0) {\n continue;\n }\n const run = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (run.issues.length > 0) {\n continue;\n }\n this.buildEdges(name, run.spaghetti.getTop());\n }\n return this;\n }\n run(obj) {\n if (!(obj instanceof objects_1.Interface) && !(obj instanceof objects_1.Class)) {\n return [];\n }\n const id = obj.getIdentifier();\n if (id === undefined) {\n return [];\n }\n const previous = {};\n previous[obj.getName()] = true;\n const path = this.findCycle(obj.getName(), obj.getName(), previous);\n if (path) {\n const message = \"Cyclic definition/usage: \" + obj.getName() + \" -> \" + path;\n return [issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.conf.severity)];\n }\n return [];\n }\n /////////////////////////////\n findCycle(source, current, previous) {\n if (this.edges[current] === undefined) {\n return undefined;\n }\n for (const e of this.edges[current]) {\n if (e === source) {\n return e;\n }\n if (previous[e] === undefined) { // dont revisit vertices\n previous[e] = true;\n const found = this.findCycle(source, e, previous);\n if (found) {\n return e + \" -> \" + found;\n }\n }\n }\n return undefined;\n }\n buildEdges(from, node) {\n var _a;\n for (const r of node.getData().references) {\n if (r.resolved === undefined\n || node.getIdentifier().filename === r.resolved.getFilename()\n || r.resolved.getFilename() === _builtin_1.BuiltIn.filename) {\n continue;\n }\n if (this.conf.skipTestclasses === true\n && (r.position.getFilename().includes(\".testclasses.\")\n || r.resolved.getFilename().includes(\".testclasses.\"))) {\n continue;\n }\n if (r.referenceType === _reference_1.ReferenceType.ObjectOrientedReference\n && ((_a = r.extra) === null || _a === void 0 ? void 0 : _a.ooName)) {\n if (this.edges[from] === undefined) {\n this.edges[from] = [];\n }\n const name = r.extra.ooName.toUpperCase();\n if (name !== from && this.edges[from].indexOf(name) < 0) {\n const obj = this.reg.getObject(\"INTF\", name) || this.reg.getObject(\"CLAS\", name);\n if (obj && this.reg.isDependency(obj)) {\n continue;\n }\n this.edges[from].push(name);\n }\n }\n }\n for (const c of node.getChildren()) {\n this.buildEdges(from, c);\n }\n }\n}\nexports.CyclicOO = CyclicOO;\n//# sourceMappingURL=cyclic_oo.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/cyclic_oo.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/cyclomatic_complexity.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/cyclomatic_complexity.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CyclomaticComplexity = exports.CyclomaticComplexityConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst cyclomatic_complexity_stats_1 = __webpack_require__(/*! ../utils/cyclomatic_complexity_stats */ \"./node_modules/@abaplint/core/build/src/utils/cyclomatic_complexity_stats.js\");\nclass CyclomaticComplexityConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.max = 20;\n }\n}\nexports.CyclomaticComplexityConf = CyclomaticComplexityConf;\nclass CyclomaticComplexity {\n constructor() {\n this.conf = new CyclomaticComplexityConf();\n }\n getMetadata() {\n return {\n key: \"cyclomatic_complexity\",\n title: \"Cyclomatic Complexity\",\n shortDescription: `Cyclomatic complexity, only reported for methods`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.max === undefined) {\n this.conf.max = new CyclomaticComplexityConf().max;\n }\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n const issues = [];\n const stats = cyclomatic_complexity_stats_1.CyclomaticComplexityStats.run(obj);\n for (const s of stats) {\n if (s.count > this.conf.max) {\n const message = \"Max cyclomatic complexity reached, \" + s.count + \", \" + s.name;\n const issue = issue_1.Issue.atPosition(s.file, s.pos, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.CyclomaticComplexity = CyclomaticComplexity;\n//# sourceMappingURL=cyclomatic_complexity.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/cyclomatic_complexity.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/dangerous_statement.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/dangerous_statement.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DangerousStatement = exports.DangerousStatementConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass DangerousStatementConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Detects execSQL (dynamic SQL) */\n this.execSQL = true;\n /** Detects kernel calls */\n this.kernelCall = true;\n /** Detects SYSTEM-CALL */\n this.systemCall = true;\n /** Detects INSERT REPORT */\n this.insertReport = true;\n this.generateDynpro = true;\n this.generateReport = true;\n this.generateSubroutine = true;\n this.deleteReport = true;\n this.deleteTextpool = true;\n this.deleteDynpro = true;\n this.exportDynpro = true;\n /** Finds instances of dynamic SQL: SELECT, UPDATE, DELETE, INSERT, MODIFY */\n this.dynamicSQL = true;\n }\n}\nexports.DangerousStatementConf = DangerousStatementConf;\nclass DangerousStatement extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new DangerousStatementConf();\n }\n getMetadata() {\n return {\n key: \"dangerous_statement\",\n title: \"Dangerous statement\",\n shortDescription: `Detects potentially dangerous statements`,\n extendedInformation: `Dynamic SQL: Typically ABAP logic does not need dynamic SQL,\r\ndynamic SQL can potentially create SQL injection problems`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Security],\n };\n }\n getDescription(statement) {\n return \"Potential dangerous statement \" + statement;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n for (const statementNode of file.getStatements()) {\n const statement = statementNode.get();\n let message = undefined;\n if (this.conf.execSQL && statement instanceof Statements.ExecSQL) {\n message = \"EXEC SQL\";\n }\n else if (this.conf.kernelCall && statement instanceof Statements.CallKernel) {\n message = \"KERNEL CALL\";\n }\n else if (this.conf.systemCall && statement instanceof Statements.SystemCall) {\n message = \"SYSTEM-CALL\";\n }\n else if (this.conf.insertReport && statement instanceof Statements.InsertReport) {\n message = \"INSERT REPORT\";\n }\n else if (this.conf.generateDynpro && statement instanceof Statements.GenerateDynpro) {\n message = \"GENERATE DYNPRO\";\n }\n else if (this.conf.generateReport && statement instanceof Statements.GenerateReport) {\n message = \"GENERATE REPORT\";\n }\n else if (this.conf.generateSubroutine && statement instanceof Statements.GenerateSubroutine) {\n message = \"GENERATE SUBROUTINE\";\n }\n else if (this.conf.deleteReport && statement instanceof Statements.DeleteReport) {\n message = \"DELETE REPORT\";\n }\n else if (this.conf.deleteTextpool && statement instanceof Statements.DeleteTextpool) {\n message = \"DELETE TEXTPOOL\";\n }\n else if (this.conf.deleteDynpro && statement instanceof Statements.DeleteDynpro) {\n message = \"DELETE DYNPRO\";\n }\n else if (this.conf.exportDynpro && statement instanceof Statements.ExportDynpro) {\n message = \"EXPORT DYNPRO\";\n }\n if (message) {\n issues.push(issue_1.Issue.atStatement(file, statementNode, this.getDescription(message), this.getMetadata().key, this.conf.severity));\n }\n if (this.conf.dynamicSQL) {\n message = this.findDynamicSQL(statementNode);\n if (message) {\n issues.push(issue_1.Issue.atStatement(file, statementNode, this.getDescription(message), this.getMetadata().key, this.conf.severity));\n }\n }\n }\n return issues;\n }\n findDynamicSQL(statementNode) {\n const statement = statementNode.get();\n if (statement instanceof Statements.UpdateDatabase\n || statement instanceof Statements.Select\n || statement instanceof Statements.SelectLoop\n || statement instanceof Statements.InsertDatabase\n || statement instanceof Statements.ModifyDatabase\n || statement instanceof Statements.DeleteDatabase) {\n const dyn = statementNode.findFirstExpression(Expressions.Dynamic);\n if (dyn && dyn.findDirectExpression(Expressions.Constant) === undefined) {\n return \"Dynamic SQL\";\n }\n }\n return undefined;\n }\n}\nexports.DangerousStatement = DangerousStatement;\n//# sourceMappingURL=dangerous_statement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/dangerous_statement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/db_operation_in_loop.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/db_operation_in_loop.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DbOperationInLoop = exports.DbOperationInLoopConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass DbOperationInLoopConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.DbOperationInLoopConf = DbOperationInLoopConf;\nclass DbOperationInLoop extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new DbOperationInLoopConf();\n }\n getMetadata() {\n return {\n key: \"db_operation_in_loop\",\n title: \"Database operation in loop\",\n shortDescription: `Database operation in LOOP/DO/WHILE`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Performance],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return issues;\n }\n const loops = stru.findAllStructures(Structures.Loop);\n loops.push(...stru.findAllStructures(Structures.Do));\n loops.push(...stru.findAllStructures(Structures.While));\n for (const l of loops) {\n let found = undefined;\n if (found === undefined) {\n found = l.findFirstStatement(Statements.Select);\n }\n if (found === undefined) {\n found = l.findFirstStatement(Statements.SelectLoop);\n }\n if (found === undefined) {\n found = l.findFirstStatement(Statements.InsertDatabase);\n }\n if (found === undefined) {\n found = l.findFirstStatement(Statements.DeleteDatabase);\n }\n if (found === undefined) {\n found = l.findFirstStatement(Statements.UpdateDatabase);\n }\n if (found === undefined) {\n found = l.findFirstStatement(Statements.ModifyDatabase);\n }\n if (found) {\n const message = \"Database operation in loop\";\n issues.push(issue_1.Issue.atStatement(file, found, message, this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.DbOperationInLoop = DbOperationInLoop;\n//# sourceMappingURL=db_operation_in_loop.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/db_operation_in_loop.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/definitions_top.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/definitions_top.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DefinitionsTop = exports.DefinitionsTopConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass DefinitionsTopConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.DefinitionsTopConf = DefinitionsTopConf;\n// todo, use enum instead?\n// const ANY = 1;\nconst DEFINITION = 2;\nconst AFTER = 3;\nconst IGNORE = 4;\nclass DefinitionsTop extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new DefinitionsTopConf();\n }\n getMetadata() {\n return {\n key: \"definitions_top\",\n title: \"Place definitions in top of routine\",\n shortDescription: `Checks that definitions are placed at the beginning of METHODs, FORMs and FUNCTIONs.`,\n extendedInformation: `If the routine has inline definitions then no issues are reported\r\n\r\nhttps://docs.abapopenchecks.org/checks/17/`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n };\n }\n getMessage() {\n return \"Reorder definitions to top of routine\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n const structure = file.getStructure();\n if (structure === undefined) {\n return [];\n }\n const containsUnknown = file.getStatements().some(s => s.get() instanceof _statement_1.Unknown);\n if (containsUnknown === true) {\n return [];\n }\n const routines = structure.findAllStructuresMulti([Structures.Form, Structures.Method, Structures.FunctionModule]);\n for (const r of routines) {\n // one fix per routine\n this.fixed = false;\n this.mode = DEFINITION;\n this.moveTo = (_a = r.getFirstStatement()) === null || _a === void 0 ? void 0 : _a.getLastToken().getEnd();\n if (this.reg.getConfig().getVersion() !== version_1.Version.v702\n && r.findFirstExpression(Expressions.InlineData)) {\n continue;\n }\n const found = this.walk(r, file);\n if (found) {\n issues.push(found);\n }\n }\n return issues;\n }\n //////////////////\n walk(r, file) {\n var _a, _b, _c, _d, _e, _f;\n let previous = undefined;\n for (const c of r.getChildren()) {\n const get = c.get();\n if (c instanceof nodes_1.StatementNode) {\n if (get instanceof _statement_1.Comment) {\n continue;\n }\n else if (get instanceof Statements.FunctionModule) {\n continue;\n }\n else if (get instanceof Statements.Form) {\n continue;\n }\n else if (get instanceof Statements.MethodImplementation) {\n continue;\n }\n }\n if (c instanceof nodes_1.StructureNode\n && (get instanceof Structures.Data\n || get instanceof Structures.Types\n || get instanceof Structures.Constants\n || get instanceof Structures.Statics)) {\n if (this.mode === AFTER) {\n // These are chained structured statements\n let fix = undefined;\n if (((_b = (_a = c.getLastChild()) === null || _a === void 0 ? void 0 : _a.getLastChild()) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr()) === \".\"\n && !(previous instanceof nodes_1.StructureNode)\n && this.moveTo) {\n // this is not perfect, but will work for now\n const start = (_d = (_c = c.getFirstChild()) === null || _c === void 0 ? void 0 : _c.getFirstChild()) === null || _d === void 0 ? void 0 : _d.getFirstToken().getStart();\n const end = (_f = (_e = c.getLastChild()) === null || _e === void 0 ? void 0 : _e.getLastChild()) === null || _f === void 0 ? void 0 : _f.getLastToken().getEnd();\n if (start && end) {\n let concat = c.concatTokens();\n concat = concat.replace(/,/g, \".\\n\");\n const fix1 = edit_helper_1.EditHelper.deleteRange(file, start, end);\n const fix2 = edit_helper_1.EditHelper.insertAt(file, this.moveTo, \"\\n\" + concat);\n fix = edit_helper_1.EditHelper.merge(fix1, fix2);\n }\n }\n // no quick fixes for these, its difficult?\n return issue_1.Issue.atStatement(file, c.getFirstStatement(), this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n }\n else {\n this.moveTo = c.getLastToken().getEnd();\n }\n }\n else if (c instanceof nodes_1.StatementNode\n && (get instanceof Statements.Data\n || get instanceof Statements.Type\n || get instanceof Statements.Constant\n || get instanceof Statements.Static\n || get instanceof Statements.FieldSymbol)) {\n if (this.mode === AFTER) {\n // only one fix per routine, as it reorders a lot\n let fix = undefined;\n if (this.fixed === false && this.moveTo) {\n fix = this.buildFix(file, c, this.moveTo);\n this.fixed = true;\n }\n return issue_1.Issue.atStatement(file, c, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n }\n else {\n this.moveTo = c.getLastToken().getEnd();\n }\n }\n else if (c instanceof nodes_1.StructureNode && get instanceof Structures.Define) {\n this.mode = IGNORE;\n return undefined;\n }\n else if (c instanceof nodes_1.StatementNode && get instanceof _statement_1.Unknown) {\n this.mode = IGNORE;\n return undefined;\n }\n else if (c instanceof nodes_1.StatementNode && this.mode === DEFINITION) {\n this.mode = AFTER;\n }\n else if (c instanceof nodes_1.StructureNode) {\n const found = this.walk(c, file);\n if (found) {\n return found;\n }\n }\n previous = c;\n }\n return undefined;\n }\n buildFix(file, statement, at) {\n let concat = statement.concatTokens();\n concat = concat.replace(/,$/, \".\");\n const fix1 = edit_helper_1.EditHelper.deleteStatement(file, statement);\n const indentation = \" \".repeat(statement.getFirstToken().getCol() - 1);\n const fix2 = edit_helper_1.EditHelper.insertAt(file, at, \"\\n\" + indentation + concat);\n return edit_helper_1.EditHelper.merge(fix1, fix2);\n }\n}\nexports.DefinitionsTop = DefinitionsTop;\n//# sourceMappingURL=definitions_top.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/definitions_top.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/description_empty.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/description_empty.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DescriptionEmpty = exports.DescriptionEmptyConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\n// standard class CL_OO_CLASS assumes classes have descriptions\nclass DescriptionEmptyConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.DescriptionEmptyConf = DescriptionEmptyConf;\nclass DescriptionEmpty {\n constructor() {\n this.conf = new DescriptionEmptyConf();\n }\n getMetadata() {\n return {\n key: \"description_empty\",\n title: \"Description in class must exist\",\n shortDescription: `Ensures descriptions in class metadata exist.`,\n };\n }\n getDescription(name) {\n return \"Description empty in \" + name;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n const issues = [];\n if (obj instanceof objects_1.Class || obj instanceof objects_1.Interface) {\n const description = obj.getDescription();\n let message = undefined;\n if (description === \"\") {\n message = this.getDescription(obj.getName());\n }\n else if (description === undefined) {\n message = this.getDescription(obj.getName() + \", class XML file not found\");\n }\n if (message) {\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.DescriptionEmpty = DescriptionEmpty;\n//# sourceMappingURL=description_empty.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/description_empty.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/double_space.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/double_space.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DoubleSpace = exports.DoubleSpaceConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass DoubleSpaceConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Check for double space after keywords */\n this.keywords = true;\n /** Check for double space after start parenthesis */\n this.startParen = true;\n /** Check for double space before end parenthesis */\n this.endParen = true;\n /** Check for double space after colon/chaining operator */\n this.afterColon = true;\n }\n}\nexports.DoubleSpaceConf = DoubleSpaceConf;\nclass DoubleSpace extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new DoubleSpaceConf();\n }\n getMetadata() {\n return {\n key: \"double_space\",\n title: \"Double space\",\n shortDescription: `Checks that only a single space follows certain common statements.`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `DATA foo TYPE i.`,\n goodExample: `DATA foo TYPE i.`,\n };\n }\n getMessage() {\n return \"Remove double space\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n let issues = [];\n for (const s of file.getStatements()) {\n if (this.conf.keywords === true\n && !(s.get() instanceof _statement_1.Unknown)\n && !(s.get() instanceof statements_1.MethodDef)\n && !(s.get() instanceof _statement_1.MacroCall)\n && !(s.get() instanceof statements_1.Events)\n && !(s.get() instanceof _statement_1.MacroContent)) {\n issues = issues.concat(this.checkKeywords(s, file));\n }\n issues = issues.concat(this.checkParen(s, file));\n }\n issues = issues.concat(this.checkAfterColon(file));\n return issues;\n }\n checkAfterColon(file) {\n const issues = [];\n let cPosition = undefined;\n if (this.conf.afterColon !== true) {\n return [];\n }\n for (const s of file.getStatements()) {\n const colon = s.getColon();\n if (colon === undefined) {\n continue;\n }\n else if (cPosition !== undefined && cPosition.getCol() === colon.getCol()) {\n continue;\n }\n cPosition = colon.getStart();\n for (const t of s.getTokens()) {\n if (t.getRow() !== cPosition.getRow()) {\n return [];\n }\n else if (t.getCol() < cPosition.getCol()) {\n continue;\n }\n if (t.getCol() > cPosition.getCol() + 2) {\n const issueStartPos = new position_1.Position(cPosition.getRow(), cPosition.getCol() + 2);\n const issueEndPos = new position_1.Position(t.getRow(), t.getCol());\n const fix = edit_helper_1.EditHelper.deleteRange(file, issueStartPos, issueEndPos);\n issues.push(issue_1.Issue.atRange(file, issueStartPos, issueEndPos, this.getMessage(), this.getMetadata().key, this.conf.severity, fix));\n }\n break;\n }\n }\n return issues;\n }\n checkParen(s, file) {\n const issues = [];\n let prev = undefined;\n for (const t of s.getTokens()) {\n if (prev === undefined) {\n prev = t;\n continue;\n }\n if (this.getConfig().startParen === true\n && prev.getRow() === t.getRow()\n && prev instanceof tokens_1.ParenLeftW\n && !(t instanceof tokens_1.Comment)\n && prev.getEnd().getCol() + 1 < t.getCol()) {\n const issueStartPos = new position_1.Position(prev.getRow(), prev.getCol() + 2);\n const issueEndPos = new position_1.Position(t.getRow(), t.getCol());\n const fix = edit_helper_1.EditHelper.deleteRange(file, issueStartPos, issueEndPos);\n if (this.pragmaInRange(s.getPragmas(), issueStartPos, issueEndPos) === false) {\n issues.push(issue_1.Issue.atRange(file, issueStartPos, issueEndPos, this.getMessage(), this.getMetadata().key, this.conf.severity, fix));\n }\n }\n if (this.getConfig().endParen === true\n && prev.getRow() === t.getRow()\n && !(prev instanceof tokens_1.ParenLeftW)\n && (t instanceof tokens_1.WParenRightW || t instanceof tokens_1.WParenRight)\n && prev.getEnd().getCol() + 1 < t.getCol()) {\n const issueStartPos = new position_1.Position(prev.getEnd().getRow(), prev.getEnd().getCol() + 1);\n const issueEndPos = new position_1.Position(t.getRow(), t.getCol());\n const fix = edit_helper_1.EditHelper.deleteRange(file, issueStartPos, issueEndPos);\n if (this.pragmaInRange(s.getPragmas(), issueStartPos, issueEndPos) === false) {\n issues.push(issue_1.Issue.atRange(file, issueStartPos, issueEndPos, this.getMessage(), this.getMetadata().key, this.conf.severity, fix));\n }\n }\n prev = t;\n }\n return issues;\n }\n pragmaInRange(pragmas, start, end) {\n let ret = false;\n for (const p of pragmas) {\n if (p.getStart().isBetween(start, end)) {\n ret = true;\n }\n }\n return ret;\n }\n checkKeywords(s, file) {\n const issues = [];\n let prev = undefined;\n if (s.getColon() !== undefined || s.getPragmas().length > 0) {\n // for chained statments just give up\n return [];\n }\n for (const n of s.getTokenNodes()) {\n if (prev === undefined) {\n prev = n;\n continue;\n }\n const upper = prev.get().getStr().toUpperCase();\n if (prev instanceof nodes_1.TokenNodeRegex\n || upper === \"(\"\n || upper === \")\"\n || upper === \"CHANGING\"\n || upper === \"EXPORTING\"\n || upper === \"OTHERS\") {\n // not a keyword, continue\n prev = n;\n continue;\n }\n if (prev.get().getStart().getRow() === n.get().getStart().getRow()\n && prev.get().getEnd().getCol() + 1 < n.get().getStart().getCol()) {\n const issueStartPos = new position_1.Position(prev.get().getEnd().getRow(), prev.get().getEnd().getCol() + 1);\n const issueEndPos = new position_1.Position(n.get().getRow(), n.get().getCol());\n const fix = edit_helper_1.EditHelper.deleteRange(file, issueStartPos, issueEndPos);\n issues.push(issue_1.Issue.atRange(file, issueStartPos, issueEndPos, this.getMessage(), this.getMetadata().key, this.conf.severity, fix));\n return issues;\n }\n prev = n;\n }\n return [];\n }\n}\nexports.DoubleSpace = DoubleSpace;\n//# sourceMappingURL=double_space.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/double_space.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/downport.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/downport.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Downport = exports.DownportConf = void 0;\n/* eslint-disable max-len */\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst registry_1 = __webpack_require__(/*! ../registry */ \"./node_modules/@abaplint/core/build/src/registry.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst config_1 = __webpack_require__(/*! ../config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst include_graph_1 = __webpack_require__(/*! ../utils/include_graph */ \"./node_modules/@abaplint/core/build/src/utils/include_graph.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst crypto = __webpack_require__(/*! crypto */ \"./node_modules/crypto-browserify/index.js\");\n// todo: refactor each sub-rule to new classes?\n// todo: add configuration\nclass DownportConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.DownportConf = DownportConf;\nclass SkipToNextFile extends Error {\n constructor(issue) {\n super();\n this.issue = issue;\n }\n}\nclass SpagHelper {\n constructor(spag) {\n this.spag = spag;\n }\n renameVariable(oldName, pos, lowFile, newName) {\n let fix = undefined;\n const references = this.findReferences(oldName, pos);\n references.sort((a, b) => {\n if (a.start.equals(b.start)) {\n return 0;\n }\n return a.start.isAfter(b.start) ? 1 : -1;\n });\n for (const r of references) {\n const replace = edit_helper_1.EditHelper.replaceRange(lowFile, r.start, r.end, newName);\n if (fix === undefined) {\n fix = replace;\n }\n else {\n fix = edit_helper_1.EditHelper.merge(replace, fix);\n }\n }\n return fix;\n }\n findReferences(name, pos) {\n var _a, _b;\n const positions = [];\n function has(element) {\n return positions.some(a => a.start.equals(element.start));\n }\n for (const r of this.spag.getData().references) {\n if (((_a = r.resolved) === null || _a === void 0 ? void 0 : _a.getName()) === name && ((_b = r.resolved) === null || _b === void 0 ? void 0 : _b.getStart().equals(pos))) {\n const sub = {\n start: r.position.getStart(),\n end: r.position.getEnd(),\n };\n if (has(sub) === false) {\n positions.push(sub);\n }\n }\n }\n for (const child of this.spag.getChildren()) {\n const subPositions = new SpagHelper(child).findReferences(name, pos);\n for (const sub of subPositions) {\n if (has(sub) === false) {\n positions.push(sub);\n }\n }\n }\n return positions;\n }\n findRecursiveDuplicate(name, skip) {\n var _a;\n const found = this.spag.findVariable(name);\n if ((found === null || found === void 0 ? void 0 : found.getStart().equals(skip)) === false) {\n return found;\n }\n for (const child of ((_a = this.spag) === null || _a === void 0 ? void 0 : _a.getChildren()) || []) {\n const sub = new SpagHelper(child).findRecursiveDuplicate(name, skip);\n if (sub) {\n return sub;\n }\n }\n return undefined;\n }\n isDuplicateName(name, pos) {\n let parent = this.spag.getParent();\n while ((parent === null || parent === void 0 ? void 0 : parent.getIdentifier().stype) === _scope_type_1.ScopeType.Let\n || (parent === null || parent === void 0 ? void 0 : parent.getIdentifier().stype) === _scope_type_1.ScopeType.For) {\n parent = parent.getParent();\n }\n if (parent === undefined) {\n return undefined;\n }\n return new SpagHelper(parent).findRecursiveDuplicate(name, pos) !== undefined;\n }\n}\nclass Downport {\n constructor() {\n this.conf = new DownportConf();\n }\n getMetadata() {\n return {\n key: \"downport\",\n title: \"Downport statement\",\n shortDescription: `Downport functionality`,\n extendedInformation: `Much like the 'commented_code' rule this rule loops through unknown statements and tries parsing with\r\na higher level language version. If successful, various rules are applied to downport the statement.\r\nTarget downport version is always v702, thus rule is only enabled if target version is v702.\r\n\r\nCurrent rules:\r\n* NEW transformed to CREATE OBJECT, opposite of https://rules.abaplint.org/use_new/\r\n* DATA() definitions are outlined, opposite of https://rules.abaplint.org/prefer_inline/\r\n* FIELD-SYMBOL() definitions are outlined\r\n* CONV is outlined\r\n* COND is outlined\r\n* REDUCE is outlined\r\n* SWITCH is outlined\r\n* FILTER is outlined\r\n* APPEND expression is outlined\r\n* INSERT expression is outlined\r\n* EMPTY KEY is changed to DEFAULT KEY, opposite of DEFAULT KEY in https://rules.abaplint.org/avoid_use/\r\n* CAST changed to ?=\r\n* LOOP AT method_call( ) is outlined\r\n* VALUE # with structure fields\r\n* VALUE # with internal table lines\r\n* Table Expressions are outlined\r\n* SELECT INTO @DATA definitions are outlined\r\n* Some occurrences of string template formatting option ALPHA changed to function module call\r\n* SELECT/INSERT/MODIFY/DELETE/UPDATE \",\" in field list removed, \"@\" in source/targets removed\r\n* PARTIALLY IMPLEMENTED removed, it can be quick fixed via rule implement_methods\r\n* RAISE EXCEPTION ... MESSAGE\r\n* Moving with +=, -=, /=, *=, &&= is expanded\r\n* line_exists and line_index is downported to READ TABLE\r\n* ENUMs, but does not nessesarily give the correct type and value\r\n* MESSAGE with non simple source\r\n\r\nOnly one transformation is applied to a statement at a time, so multiple steps might be required to do the full downport.\r\n\r\nMake sure to test the downported code, it might not always be completely correct.`,\n tags: [_irule_1.RuleTag.Downport, _irule_1.RuleTag.Quickfix],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.lowReg = reg;\n const version = this.lowReg.getConfig().getVersion();\n if (version === version_1.Version.v702 || version === version_1.Version.OpenABAP) {\n this.initHighReg();\n }\n return this;\n }\n listMainForInclude(filename) {\n if (filename === undefined) {\n return [];\n }\n // only initialize this.graph if needed\n if (this.graph === undefined) {\n this.graph = new include_graph_1.IncludeGraph(this.lowReg);\n }\n return this.graph.listMainForInclude(filename);\n }\n containsError(highObj) {\n for (const file of highObj.getABAPFiles()) {\n for (const statement of file.getStatements()) {\n if (statement.get() instanceof _statement_1.Unknown) {\n return true; // contains parser errors\n }\n }\n if (file.getStructure() === undefined) {\n return true;\n }\n }\n return false;\n }\n run(lowObj) {\n var _a;\n const ret = [];\n this.counter = 1;\n const version = this.lowReg.getConfig().getVersion();\n if (version !== version_1.Version.v702 && version !== version_1.Version.OpenABAP) {\n return ret;\n }\n else if (!(lowObj instanceof _abap_object_1.ABAPObject)) {\n return ret;\n }\n const highObj = this.highReg.getObject(lowObj.getType(), lowObj.getName());\n if (highObj === undefined || !(highObj instanceof _abap_object_1.ABAPObject)) {\n return ret;\n }\n let highSyntaxObj = highObj;\n if (this.containsError(highObj)) {\n return ret;\n }\n // for includes do the syntax check via a main program\n if (lowObj instanceof objects_1.Program && lowObj.isInclude()) {\n const mains = this.listMainForInclude((_a = lowObj.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getFilename());\n if (mains.length <= 0) {\n return [];\n }\n const f = this.highReg.getFileByName(mains[0]);\n if (f === undefined) {\n return [];\n }\n highSyntaxObj = this.highReg.findObjectForFile(f);\n }\n for (const lowFile of lowObj.getABAPFiles()) {\n let highSyntax = undefined;\n const highFile = highObj.getABAPFileByName(lowFile.getFilename());\n if (highFile === undefined) {\n continue;\n }\n const lowStatements = lowFile.getStatements();\n const highStatements = highFile.getStatements();\n if (lowStatements.length !== highStatements.length) {\n // after applying a fix, there might be more statements in lowFile\n // should highReg be initialized again?\n /*\n const message = \"Internal Error: Statement lengths does not match\";\n ret.push(Issue.atStatement(lowFile, lowStatements[0], message, this.getMetadata().key));\n */\n // hmm, add some way to disable lazyUnknown() in statement_parser.ts\n // alternatively explicit enable it in vscode, its only relevant when a user is\n // actively editing the files\n continue;\n }\n if (highSyntax === undefined) {\n highSyntax = new syntax_1.SyntaxLogic(this.highReg, highSyntaxObj).run();\n }\n let containsUnknown = false;\n for (let i = 0; i < lowStatements.length; i++) {\n const low = lowStatements[i];\n const high = highStatements[i];\n if ((low.get() instanceof _statement_1.Unknown && !(high.get() instanceof _statement_1.Unknown))\n || high.findFirstExpression(Expressions.InlineData)) {\n containsUnknown = true;\n try {\n const issue = this.checkStatement(low, high, lowFile, highSyntax, highFile);\n if (issue) {\n ret.push(issue);\n }\n }\n catch (e) {\n if (e instanceof SkipToNextFile) {\n ret.push(e.issue);\n break;\n }\n else {\n throw e;\n }\n }\n }\n }\n if (ret.length === 0 && containsUnknown) {\n // this is a hack in order not to change too many unit tests\n for (let i = 0; i < lowStatements.length; i++) {\n const high = highStatements[i];\n if (high.get() instanceof Statements.Data) {\n const issue = this.anonymousTableType(high, lowFile, highSyntax);\n if (issue) {\n ret.push(issue);\n }\n }\n }\n }\n if (ret.length === 0 && lowFile.getRaw().includes(\" xsdbool( \")) {\n for (let i = 0; i < lowStatements.length; i++) {\n const high = highStatements[i];\n const issue = this.replaceXsdBool(high, lowFile, highSyntax);\n if (issue) {\n ret.push(issue);\n }\n }\n }\n }\n return ret;\n }\n ////////////////////\n /** clones the orginal repository into highReg, and parses it with higher language version */\n initHighReg() {\n // use default configuration, ie. default target version\n const highConfig = config_1.Config.getDefault().get();\n const lowConfig = this.lowReg.getConfig().get();\n highConfig.syntax.errorNamespace = lowConfig.syntax.errorNamespace;\n highConfig.syntax.globalConstants = lowConfig.syntax.globalConstants;\n highConfig.syntax.globalMacros = lowConfig.syntax.globalMacros;\n this.highReg = new registry_1.Registry();\n for (const o of this.lowReg.getObjects()) {\n for (const f of o.getFiles()) {\n if (this.lowReg.isDependency(o) === true) {\n this.highReg.addDependency(f);\n }\n else {\n this.highReg.addFile(f);\n }\n }\n }\n this.highReg.parse();\n }\n /** applies one rule at a time, multiple iterations are required to transform complex statements */\n checkStatement(low, high, lowFile, highSyntax, highFile) {\n if (low.getFirstToken().getStart() instanceof position_1.VirtualPosition) {\n return undefined;\n }\n // downport XSDBOOL() early, as it is valid 702 syntax\n /*\n let found = this.replaceXsdBool(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n */\n let found = this.downportEnum(low, high, lowFile, highSyntax, highFile);\n if (found) {\n return found;\n }\n found = this.partiallyImplemented(high, lowFile);\n if (found) {\n return found;\n }\n found = this.raiseException(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.emptyKey(low, high, lowFile);\n if (found) {\n return found;\n }\n found = this.stringTemplateAlpha(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.moveWithOperator(low, high, lowFile);\n if (found) {\n return found;\n }\n found = this.moveWithSimpleValue(low, high, lowFile);\n if (found) {\n return found;\n }\n found = this.assignWithTable(low, high, lowFile);\n if (found) {\n return found;\n }\n found = this.downportRefSimple(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportCorrespondingSimple(high, lowFile);\n if (found) {\n return found;\n }\n found = this.downportRef(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportLoopGroup(high, lowFile, highSyntax, highFile);\n if (found) {\n return found;\n }\n found = this.callFunctionParameterSimple(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.moveWithTableTarget(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportSelectInline(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportSelectExistence(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportSQLExtras(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineLoopInput(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineLoopTarget(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n let skipValue = false;\n let skipReduce = false;\n const valueBody = high.findFirstExpression(Expressions.ValueBody);\n const reduceBody = high.findFirstExpression(Expressions.ReduceBody);\n if (valueBody && reduceBody) {\n const valueToken = valueBody.getFirstToken();\n const reduceToken = reduceBody.getFirstToken();\n if (valueToken.getStart().isBefore(reduceToken.getStart())) {\n skipReduce = true;\n }\n else {\n skipValue = true;\n }\n }\n if (skipValue !== true) {\n found = this.outlineValue(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n }\n if (skipReduce !== true) {\n found = this.outlineReduce(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n }\n found = this.outlineCorresponding(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportSelectFields(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineSwitch(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineFilter(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineCast(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineConv(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineCond(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineCatchSimple(high, lowFile);\n if (found) {\n return found;\n }\n found = this.outlineGetReferenceSimple(high, lowFile);\n if (found) {\n return found;\n }\n found = this.outlineDataSimple(high, lowFile);\n if (found) {\n return found;\n }\n found = this.outlineData(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.outlineFS(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.newToCreateObject(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.replaceLineFunctions(high, lowFile, highSyntax, highFile);\n if (found) {\n return found;\n }\n found = this.getReference(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.replaceContains(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.replaceMethodConditional(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.replaceTableExpression(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.replaceAppendExpression(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.replaceInsertExpression(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportMessage(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportReadTable(high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n return undefined;\n }\n //////////////////////////////////////////\n /** removes @'s */\n downportSQLExtras(low, high, lowFile, highSyntax) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n if (!(high.get() instanceof Statements.Select)\n && !(high.get() instanceof Statements.SelectLoop)\n && !(high.get() instanceof Statements.UpdateDatabase)\n && !(high.get() instanceof Statements.ModifyDatabase)\n && !(high.get() instanceof Statements.DeleteDatabase)\n && !(high.get() instanceof Statements.InsertDatabase)) {\n return undefined;\n }\n let fix = undefined;\n const addFix = (token) => {\n const add = edit_helper_1.EditHelper.deleteToken(lowFile, token);\n if (fix === undefined) {\n fix = add;\n }\n else {\n fix = edit_helper_1.EditHelper.merge(fix, add);\n }\n };\n const candidates = [high.findAllExpressionsRecursive(Expressions.SQLTarget),\n high.findAllExpressionsRecursive(Expressions.SQLSource),\n high.findAllExpressionsRecursive(Expressions.SQLSourceSimple)].flat();\n for (const c of candidates.reverse()) {\n if (c.getFirstToken() instanceof tokens_1.WAt\n || c.getFirstToken() instanceof tokens_1.At) {\n const tokens = c.getAllTokens();\n if (tokens[1] instanceof tokens_1.ParenLeftW && tokens[tokens.length - 1] instanceof tokens_1.WParenRightW) {\n const source = c.findDirectExpression(Expressions.Source);\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getStart(), `DATA(${uniqueName}) = ${source === null || source === void 0 ? void 0 : source.concatTokens()}.\\n`);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, c.getFirstToken().getStart(), c.getLastToken().getEnd(), \"@\" + uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, low.getFirstToken(), \"SQL, outline complex @\", this.getMetadata().key, this.conf.severity, fix);\n }\n else {\n addFix(c.getFirstToken());\n }\n }\n }\n for (const fieldList of high.findAllExpressionsMulti([Expressions.SQLFieldList, Expressions.SQLFieldListLoop], true)) {\n for (const token of fieldList.getDirectTokens()) {\n if (token.getStr() === \",\") {\n addFix(token);\n }\n }\n }\n if (fix !== undefined) {\n return issue_1.Issue.atToken(lowFile, low.getFirstToken(), \"SQL, remove @ and ,\", this.getMetadata().key, this.conf.severity, fix);\n }\n for (const c of high.findAllExpressionsRecursive(Expressions.SQLIn)) {\n const children = c.getChildren();\n const first = children[1];\n if (!(first.get() instanceof tokens_1.WParenLeftW)) {\n continue;\n }\n const last = children[children.length - 1];\n if (last.get() instanceof tokens_1.WParenRightW || last.get() instanceof tokens_1.WParenRight) {\n const firstEnd = first.getFirstToken().getEnd();\n const endDelete = new position_1.Position(firstEnd.getRow(), firstEnd.getCol() + 1);\n const fix1 = edit_helper_1.EditHelper.deleteRange(lowFile, firstEnd, endDelete);\n const lastStart = last.getFirstToken().getStart();\n const startDelete = new position_1.Position(lastStart.getRow(), lastStart.getCol() - 1);\n const fix2 = edit_helper_1.EditHelper.deleteRange(lowFile, startDelete, lastStart);\n fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, low.getFirstToken(), \"SQL, remove spaces\", this.getMetadata().key, this.conf.severity, fix);\n }\n }\n return undefined;\n }\n downportSelectExistence(low, high, lowFile, highSyntax) {\n var _a, _b, _c, _d;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n else if (!(high.get() instanceof Statements.Select)) {\n return undefined;\n }\n const fieldList = high.findFirstExpression(Expressions.SQLFieldList);\n if ((fieldList === null || fieldList === void 0 ? void 0 : fieldList.concatTokens().toUpperCase()) !== \"@ABAP_TRUE\") {\n return undefined;\n }\n const fieldName = (_b = (_a = high.findFirstExpression(Expressions.SQLCond)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(Expressions.SQLFieldName)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (fieldName === undefined) {\n return undefined;\n }\n const into = high.findFirstExpression(Expressions.SQLIntoStructure);\n if (into === undefined) {\n return undefined;\n }\n const intoName = (_d = (_c = into.findFirstExpression(Expressions.SQLTarget)) === null || _c === void 0 ? void 0 : _c.findFirstExpression(Expressions.Target)) === null || _d === void 0 ? void 0 : _d.concatTokens();\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const fix1 = edit_helper_1.EditHelper.replaceRange(lowFile, fieldList.getFirstToken().getStart(), fieldList.getLastToken().getEnd(), fieldName);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, into === null || into === void 0 ? void 0 : into.getFirstToken().getStart(), into === null || into === void 0 ? void 0 : into.getLastToken().getEnd(), `INTO @DATA(${uniqueName})`);\n let fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n const fix3 = edit_helper_1.EditHelper.insertAt(lowFile, high.getLastToken().getEnd(), `\\nCLEAR ${intoName}.\\nIF sy-subrc = 0.\\n ${intoName} = abap_true.\\nENDIF.`);\n fix = edit_helper_1.EditHelper.merge(fix, fix3);\n return issue_1.Issue.atToken(lowFile, low.getFirstToken(), \"SQL, refactor existence check\", this.getMetadata().key, this.conf.severity, fix);\n }\n downportSelectInline(low, high, lowFile, highSyntax) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n else if (!(high.get() instanceof Statements.Select) && !(high.get() instanceof Statements.SelectLoop)) {\n return undefined;\n }\n // as first step outline the @DATA, note that void types are okay, as long the field names are specified\n let found = this.downportSelectSingleInline(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n found = this.downportSelectTableInline(low, high, lowFile, highSyntax);\n if (found) {\n return found;\n }\n return undefined;\n }\n downportSelectFields(low, high, lowFile, _highSyntax) {\n var _a;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n else if (!(high.get() instanceof Statements.Select)) {\n return undefined;\n }\n const fields = high.findFirstExpression(Expressions.SQLFields);\n if (fields === undefined) {\n return undefined;\n }\n const code = (_a = fields.getLastChild()) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (code === undefined) {\n return undefined;\n }\n const fix1 = edit_helper_1.EditHelper.deleteRange(lowFile, fields.getFirstToken().getStart(), fields.getLastToken().getEnd());\n const fix2 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getEnd(), \" \" + code);\n const fix = edit_helper_1.EditHelper.merge(fix1, fix2);\n return issue_1.Issue.atToken(lowFile, fields.getFirstToken(), \"Replace FIELDS\", this.getMetadata().key, this.conf.severity, fix);\n }\n downportSelectSingleInline(low, high, lowFile, _highSyntax) {\n var _a, _b, _c, _d;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n const targets = ((_a = high.findFirstExpression(Expressions.SQLIntoStructure)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.SQLTarget)) || [];\n if (targets.length !== 1) {\n return undefined;\n }\n const inlineData = targets[0].findFirstExpression(Expressions.InlineData);\n if (inlineData === undefined) {\n return undefined;\n }\n const sqlFrom = high.findAllExpressions(Expressions.SQLFromSource);\n if (sqlFrom.length !== 1) {\n return undefined;\n }\n const tableName = (_b = sqlFrom[0].findDirectExpression(Expressions.DatabaseTable)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (tableName === undefined) {\n return undefined;\n }\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n let fieldList = high.findFirstExpression(Expressions.SQLFieldList);\n if (fieldList === undefined) {\n fieldList = high.findFirstExpression(Expressions.SQLFieldListLoop);\n }\n if (fieldList === undefined) {\n return undefined;\n }\n let fieldDefinition = \"\";\n const fields = fieldList.findAllExpressions(Expressions.SQLFieldName);\n const name = ((_c = inlineData.findFirstExpression(Expressions.TargetField)) === null || _c === void 0 ? void 0 : _c.concatTokens()) || \"error\";\n if (fields.length === 1) {\n fieldDefinition = `DATA ${name} TYPE ${tableName}-${fields[0].concatTokens()}.`;\n }\n else if (fieldList.concatTokens() === \"*\") {\n fieldDefinition = `DATA ${name} TYPE ${tableName}.`;\n }\n else if (fieldList.concatTokens().toUpperCase() === \"COUNT( * )\") {\n fieldDefinition = `DATA ${name} TYPE i.`;\n }\n else if (fieldList.concatTokens().toUpperCase() === \"@ABAP_TRUE\"\n || fieldList.concatTokens().toUpperCase() === \"@ABAP_FALSE\") {\n fieldDefinition = `DATA ${name} TYPE abap_bool.`;\n }\n else if (fieldList.getChildren().length === 1 && fieldList.getChildren()[0].get() instanceof Expressions.SQLAggregation) {\n const c = fieldList.getChildren()[0];\n if (c instanceof nodes_1.ExpressionNode) {\n const concat = (_d = c.findFirstExpression(Expressions.SQLArithmetics)) === null || _d === void 0 ? void 0 : _d.concatTokens();\n fieldDefinition = `DATA ${name} TYPE ${tableName}-${concat}.`;\n }\n }\n else {\n for (const f of fields) {\n const fieldName = f.concatTokens();\n fieldDefinition += indentation + \" \" + fieldName + \" TYPE \" + tableName + \"-\" + fieldName + \",\\n\";\n }\n fieldDefinition = `DATA: BEGIN OF ${name},\r\n${fieldDefinition}${indentation} END OF ${name}.`;\n }\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getStart(), `${fieldDefinition}\r\n${indentation}`);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, inlineData.getFirstToken().getStart(), inlineData.getLastToken().getEnd(), name);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, inlineData.getFirstToken(), \"Outline SELECT @DATA\", this.getMetadata().key, this.conf.severity, fix);\n }\n downportSelectTableInline(low, high, lowFile, highSyntax) {\n var _a, _b, _c;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n const targets = ((_a = high.findFirstExpression(Expressions.SQLIntoTable)) === null || _a === void 0 ? void 0 : _a.findDirectExpressions(Expressions.SQLTarget)) || [];\n if (targets.length !== 1) {\n return undefined;\n }\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const inlineData = targets[0].findFirstExpression(Expressions.InlineData);\n if (inlineData === undefined) {\n return undefined;\n }\n const sqlFrom = high.findAllExpressions(Expressions.SQLFromSource);\n if (sqlFrom.length === 0) {\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Error outlining, sqlFrom not found\", this.getMetadata().key, this.conf.severity);\n }\n let tableName = (_b = sqlFrom[0].findDirectExpression(Expressions.DatabaseTable)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (tableName === undefined) {\n return undefined;\n }\n const fieldList = high.findFirstExpression(Expressions.SQLFieldList);\n if (fieldList === undefined) {\n return undefined;\n }\n let fieldDefinitions = \"\";\n for (const f of fieldList.findAllExpressions(Expressions.SQLFieldName)) {\n let fieldName = f.concatTokens();\n if (fieldName.includes(\"~\")) {\n const split = fieldName.split(\"~\");\n tableName = split[0];\n fieldName = split[1];\n }\n fieldDefinitions += indentation + \" \" + fieldName + \" TYPE \" + tableName + \"-\" + fieldName + \",\\n\";\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const name = ((_c = inlineData.findFirstExpression(Expressions.TargetField)) === null || _c === void 0 ? void 0 : _c.concatTokens()) || \"error\";\n let fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getStart(), `TYPES: BEGIN OF ${uniqueName},\r\n${fieldDefinitions}${indentation} END OF ${uniqueName}.\r\n${indentation}DATA ${name} TYPE STANDARD TABLE OF ${uniqueName} WITH DEFAULT KEY.\r\n${indentation}`);\n if (fieldDefinitions === \"\") {\n fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getStart(), `DATA ${name} TYPE STANDARD TABLE OF ${tableName} WITH DEFAULT KEY.\r\n${indentation}`);\n }\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, inlineData.getFirstToken().getStart(), inlineData.getLastToken().getEnd(), name);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, inlineData.getFirstToken(), \"Outline SELECT @DATA\", this.getMetadata().key, this.conf.severity, fix);\n }\n // the anonymous type minght be used in inferred type statements, define it so it can be referred\n anonymousTableType(high, lowFile, highSyntax) {\n if (!(high.get() instanceof Statements.Data)) {\n return undefined;\n }\n const tt = high.findFirstExpression(Expressions.TypeTable);\n if (tt === undefined) {\n return undefined;\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const code = `TYPES ${uniqueName} ${tt.concatTokens()}.\\n`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, tt.getFirstToken().getStart(), tt.getLastToken().getEnd(), \"TYPE \" + uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Add type for table definition\", this.getMetadata().key, this.conf.severity, fix);\n }\n downportMessage(high, lowFile, highSyntax) {\n var _a, _b;\n if (!(high.get() instanceof Statements.Message)) {\n return undefined;\n }\n const foundWith = high.findExpressionAfterToken(\"WITH\");\n if (foundWith === undefined) {\n return undefined;\n }\n const likeSource = high.findExpressionAfterToken(\"LIKE\");\n for (const s of high.findAllExpressions(Expressions.Source)) {\n if (s === likeSource) {\n continue;\n }\n else if (s.getChildren().length === 1 && ((_a = s.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Constant) {\n continue;\n }\n else if (s.getChildren().length === 1 && ((_b = s.getFirstChild()) === null || _b === void 0 ? void 0 : _b.get()) instanceof Expressions.FieldChain) {\n continue;\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const firstToken = high.getFirstToken();\n const code = `DATA(${uniqueName}) = ${s.concatTokens()}.\\n${indentation}`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, firstToken.getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, s.getFirstToken().getStart(), s.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Refactor MESSAGE WITH source\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n replaceAppendExpression(high, lowFile, highSyntax) {\n if (!(high.get() instanceof Statements.Append)) {\n return undefined;\n }\n const children = high.getChildren();\n if (children[1].get() instanceof Expressions.Source) {\n const source = children[1];\n const target = high.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n return undefined;\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const firstToken = high.getFirstToken();\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, firstToken.getStart(), `DATA ${uniqueName} LIKE LINE OF ${target === null || target === void 0 ? void 0 : target.concatTokens()}.\r\n${indentation}${uniqueName} = ${source.concatTokens()}.\\n${indentation}`);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, source.getFirstToken().getStart(), source.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Outline APPEND source expression\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n downportReadTable(high, lowFile, highSyntax) {\n if (!(high.get() instanceof Statements.ReadTable)) {\n return undefined;\n }\n const source = high.findExpressionAfterToken(\"TABLE\");\n if ((source === null || source === void 0 ? void 0 : source.get()) instanceof Expressions.Source) {\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const firstToken = high.getFirstToken();\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, firstToken.getStart(), `DATA(${uniqueName}) = ${source.concatTokens()}.\\n` + indentation);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, source.getFirstToken().getStart(), source.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Outline table source\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n replaceInsertExpression(high, lowFile, highSyntax) {\n if (!(high.get() instanceof Statements.InsertInternal)) {\n return undefined;\n }\n const children = high.getChildren();\n if (children[1].get() instanceof Expressions.Source) {\n const source = children[1];\n const target = high.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n return undefined;\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const firstToken = high.getFirstToken();\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, firstToken.getStart(), `DATA ${uniqueName} LIKE LINE OF ${target === null || target === void 0 ? void 0 : target.concatTokens()}.\r\n${indentation}${uniqueName} = ${source.concatTokens()}.\\n${indentation}`);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, source.getFirstToken().getStart(), source.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Outline INSERT source expression\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n replaceTableExpression(low, high, lowFile, highSyntax) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const fieldChain of high.findAllExpressionsRecursive(Expressions.FieldChain)) {\n const tableExpression = fieldChain.findDirectExpression(Expressions.TableExpression);\n if (tableExpression === undefined) {\n continue;\n }\n const concat = high.concatTokens().toUpperCase();\n if (concat.includes(\" LINE_EXISTS( \") || concat.includes(\" LINE_INDEX( \")) {\n // note: line_exists() must be replaced before handling table expressions\n continue;\n }\n let pre = \"\";\n let startToken = undefined;\n for (const child of fieldChain.getChildren()) {\n if (startToken === undefined) {\n startToken = child.getFirstToken();\n }\n else if (child === tableExpression) {\n break;\n }\n pre += child.concatTokens();\n }\n if (startToken === undefined) {\n continue;\n }\n const condition = this.tableCondition(tableExpression);\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const tabixBackup = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const firstToken = high.getFirstToken();\n // note that the tabix restore should be done before throwing the exception\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, firstToken.getStart(), `DATA ${uniqueName} LIKE LINE OF ${pre}.\r\n${indentation}DATA ${tabixBackup} LIKE sy-tabix.\r\n${indentation}${tabixBackup} = sy-tabix.\r\n${indentation}READ TABLE ${pre} ${condition}INTO ${uniqueName}.\r\n${indentation}sy-tabix = ${tabixBackup}.\r\n${indentation}IF sy-subrc <> 0.\r\n${indentation} RAISE EXCEPTION TYPE cx_sy_itab_line_not_found.\r\n${indentation}ENDIF.\r\n${indentation}`);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, startToken.getStart(), tableExpression.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n if (high.get() instanceof Statements.ElseIf) {\n throw \"downport, unable to downport table expression in ELSEIF\";\n }\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Outline table expression\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n tableCondition(tableExpression) {\n let condition = \"\";\n let keyName = \"\";\n for (const c of tableExpression.getChildren() || []) {\n if (c.getFirstToken().getStr() === \"[\" || c.getFirstToken().getStr() === \"]\") {\n continue;\n }\n else if (c.get() instanceof Expressions.ComponentChainSimple && condition === \"\") {\n if (keyName === \"\") {\n condition = \"WITH KEY \";\n }\n else {\n condition = \"WITH TABLE KEY \" + keyName + \" COMPONENTS \";\n }\n }\n else if (c.get() instanceof Expressions.Source && condition === \"\") {\n condition = \"INDEX \";\n }\n else if (c instanceof nodes_1.TokenNode && c.getFirstToken().getStr().toUpperCase() === \"KEY\") {\n continue;\n }\n else if (c.get() instanceof Expressions.SimpleName) {\n keyName = c.concatTokens();\n continue;\n }\n condition += c.concatTokens() + \" \";\n }\n return condition;\n }\n outlineCatchSimple(node, lowFile) {\n // outlines \"CATCH cx_bcs INTO DATA(lx_bcs_excep).\", note that this does not need to look at types\n var _a, _b;\n if (!(node.get() instanceof Statements.Catch)) {\n return undefined;\n }\n const target = node.findFirstExpression(Expressions.Target);\n if (!(((_a = target === null || target === void 0 ? void 0 : target.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.InlineData)) {\n return undefined;\n }\n const classNames = node.findDirectExpressions(Expressions.ClassName);\n if (classNames.length !== 1) {\n return undefined;\n }\n const className = classNames[0].concatTokens();\n const targetName = (_b = target.findFirstExpression(Expressions.TargetField)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n const indentation = \" \".repeat(node.getFirstToken().getStart().getCol() - 1);\n const code = ` DATA ${targetName} TYPE REF TO ${className}.\r\n${indentation}CATCH ${className} INTO ${targetName}.`;\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, node.getStart(), node.getEnd(), code);\n return issue_1.Issue.atToken(lowFile, node.getFirstToken(), \"Outline DATA\", this.getMetadata().key, this.conf.severity, fix);\n }\n outlineGetReferenceSimple(node, lowFile) {\n var _a, _b, _c;\n if (!(node.get() instanceof Statements.GetReference)) {\n return undefined;\n }\n const target = node.findFirstExpression(Expressions.Target);\n if (!(((_a = target === null || target === void 0 ? void 0 : target.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.InlineData)) {\n return undefined;\n }\n const source = node.findFirstExpression(Expressions.Source);\n if (!(((_b = source === null || source === void 0 ? void 0 : source.getFirstChild()) === null || _b === void 0 ? void 0 : _b.get()) instanceof Expressions.FieldChain)) {\n return undefined;\n }\n const targetName = ((_c = target.findFirstExpression(Expressions.TargetField)) === null || _c === void 0 ? void 0 : _c.concatTokens()) || \"errorError\";\n const indentation = \" \".repeat(node.getFirstToken().getStart().getCol() - 1);\n const firstToken = target.getFirstToken();\n const lastToken = target.getLastToken();\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, node.getStart(), `DATA ${targetName} LIKE REF TO ${source.concatTokens()}.\\n${indentation}`);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, firstToken.getStart(), lastToken.getEnd(), targetName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, node.getFirstToken(), \"Outline DATA\", this.getMetadata().key, this.conf.severity, fix);\n }\n outlineDataSimple(node, lowFile) {\n // outlines \"DATA(ls_msg) = temp1.\", note that this does not need to look at types\n var _a, _b, _c;\n if (!(node.get() instanceof Statements.Move)) {\n return undefined;\n }\n const target = node.findFirstExpression(Expressions.Target);\n if (!(((_a = target === null || target === void 0 ? void 0 : target.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.InlineData)) {\n return undefined;\n }\n let type = \"\";\n const source = node.findFirstExpression(Expressions.Source);\n if (source === undefined) {\n return undefined;\n }\n else if (source.getChildren().length !== 1) {\n return undefined;\n }\n else if (!(((_b = source.getFirstChild()) === null || _b === void 0 ? void 0 : _b.get()) instanceof Expressions.FieldChain)) {\n return undefined;\n }\n else if (source.findFirstExpression(Expressions.FieldOffset)) {\n return undefined;\n }\n else if (source.findFirstExpression(Expressions.FieldLength)) {\n return undefined;\n }\n else if (source.findFirstExpression(Expressions.TableExpression)) {\n const chain = source.findDirectExpression(Expressions.FieldChain);\n if (chain !== undefined\n && chain.getChildren().length === 2\n && chain.getChildren()[0].get() instanceof Expressions.SourceField\n && chain.getChildren()[1].get() instanceof Expressions.TableExpression) {\n type = \"LINE OF \" + chain.getChildren()[0].concatTokens();\n }\n else {\n return undefined;\n }\n }\n else {\n type = source.concatTokens();\n }\n const targetName = (_c = target.findFirstExpression(Expressions.TargetField)) === null || _c === void 0 ? void 0 : _c.concatTokens();\n const indentation = \" \".repeat(node.getFirstToken().getStart().getCol() - 1);\n const firstToken = node.getFirstToken();\n const lastToken = node.getLastToken();\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, firstToken.getStart(), `DATA ${targetName} LIKE ${type}.\\n${indentation}`);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, firstToken.getStart(), lastToken.getEnd(), `${targetName} = ${source.concatTokens()}.`);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, node.getFirstToken(), \"Outline DATA\", this.getMetadata().key, this.conf.severity, fix);\n }\n partiallyImplemented(node, lowFile) {\n if (node.get() instanceof Statements.InterfaceDef) {\n const partially = node.findDirectTokenByText(\"PARTIALLY\");\n if (partially === undefined) {\n return undefined;\n }\n const implemented = node.findDirectTokenByText(\"IMPLEMENTED\");\n if (implemented === undefined) {\n return undefined;\n }\n const fix = edit_helper_1.EditHelper.deleteRange(lowFile, partially.getStart(), implemented.getEnd());\n return issue_1.Issue.atToken(lowFile, partially, \"Downport PARTIALLY IMPLEMENTED\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n raiseException(node, lowFile, highSyntax) {\n /*\n Note: IF_T100_DYN_MSG does not exist in 702, so this rule is mostly relevant for the transpiler\n \n DATA foo LIKE if_t100_message=>t100key.\n foo-msgid = 'ZHVAM'.\n foo-msgno = '001'.\n foo-attr1 = 'IF_T100_DYN_MSG~MSGV1'.\n foo-attr2 = 'IF_T100_DYN_MSG~MSGV2'.\n foo-attr3 = 'IF_T100_DYN_MSG~MSGV3'.\n foo-attr4 = 'IF_T100_DYN_MSG~MSGV4'.\n DATA bar TYPE REF TO zcl_hvam_exception.\n CREATE OBJECT bar EXPORTING textid = foo.\n bar->if_t100_dyn_msg~msgty = 'E'.\n bar->if_t100_dyn_msg~msgv1 = 'abc'.\n bar->if_t100_dyn_msg~msgv2 = 'abc'.\n bar->if_t100_dyn_msg~msgv3 = 'abc'.\n bar->if_t100_dyn_msg~msgv4 = 'abc'.\n RAISE EXCEPTION bar.\n */\n var _a, _b, _c, _d, _e, _f, _g;\n if (!(node.get() instanceof Statements.Raise)) {\n return undefined;\n }\n let id = undefined;\n let number = undefined;\n let startToken = node.findDirectTokenByText(\"ID\");\n if (startToken) {\n const sources = node.findDirectExpressions(Expressions.Source);\n id = sources[0].concatTokens();\n const numberExpression = node.findExpressionAfterToken(\"NUMBER\");\n if (numberExpression === undefined) {\n throw \"downport raiseException, could not find number\";\n }\n number = numberExpression.concatTokens();\n if (numberExpression.get() instanceof Expressions.MessageNumber) {\n number = \"'\" + number + \"'\";\n }\n }\n else {\n const s = node.findDirectExpression(Expressions.MessageSource);\n if (s === undefined) {\n return undefined;\n }\n if (s.findDirectExpression(Expressions.MessageClass)) {\n id = \"'\" + ((_b = (_a = s.findDirectExpression(Expressions.MessageClass)) === null || _a === void 0 ? void 0 : _a.concatTokens()) === null || _b === void 0 ? void 0 : _b.toUpperCase()) + \"'\";\n }\n else {\n id = (_c = s.findExpressionAfterToken(\"ID\")) === null || _c === void 0 ? void 0 : _c.concatTokens();\n }\n if (s.findDirectExpression(Expressions.MessageTypeAndNumber)) {\n number = \"'\" + ((_d = s.findDirectExpression(Expressions.MessageTypeAndNumber)) === null || _d === void 0 ? void 0 : _d.concatTokens().substring(1)) + \"'\";\n }\n else {\n number = (_e = s.findExpressionAfterToken(\"NUMBER\")) === null || _e === void 0 ? void 0 : _e.concatTokens();\n }\n startToken = node.getFirstToken();\n }\n const withs = ((_f = node.findDirectExpression(Expressions.RaiseWith)) === null || _f === void 0 ? void 0 : _f.findDirectExpressions(Expressions.Source)) || [];\n const className = ((_g = node.findDirectExpression(Expressions.ClassName)) === null || _g === void 0 ? void 0 : _g.concatTokens()) || \"ERROR\";\n const uniqueName1 = this.uniqueName(node.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const uniqueName2 = this.uniqueName(node.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(node.getFirstToken().getStart().getCol() - 1);\n let abap = `DATA ${uniqueName1} LIKE if_t100_message=>t100key.\r\n${indentation}${uniqueName1}-msgid = ${id}.\r\n${indentation}${uniqueName1}-msgno = ${number}.\\n`;\n if (withs.length > 0) {\n abap += `${indentation}${uniqueName1}-attr1 = 'IF_T100_DYN_MSG~MSGV1'.\r\n${indentation}${uniqueName1}-attr2 = 'IF_T100_DYN_MSG~MSGV2'.\r\n${indentation}${uniqueName1}-attr3 = 'IF_T100_DYN_MSG~MSGV3'.\r\n${indentation}${uniqueName1}-attr4 = 'IF_T100_DYN_MSG~MSGV4'.\\n`;\n }\n abap += `${indentation}DATA ${uniqueName2} TYPE REF TO ${className}.\r\n${indentation}CREATE OBJECT ${uniqueName2} EXPORTING textid = ${uniqueName1}.\\n`;\n if (withs.length > 0) {\n abap += `${indentation}${uniqueName2}->if_t100_dyn_msg~msgty = 'E'.\\n`;\n }\n let count = 1;\n for (const w of withs) {\n abap += `${indentation}${uniqueName2}->if_t100_dyn_msg~msgv${count} = ${w.concatTokens()}.\\n`;\n count++;\n }\n abap += `${indentation}RAISE EXCEPTION ${uniqueName2}.`;\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, node.getStart(), node.getEnd(), abap);\n return issue_1.Issue.atToken(lowFile, startToken, \"Downport RAISE MESSAGE\", this.getMetadata().key, this.conf.severity, fix);\n }\n emptyKey(low, node, lowFile) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (let i of node.findAllExpressions(Expressions.TypeTable)) {\n const key = i.findDirectExpression(Expressions.TypeTableKey);\n if (key === undefined) {\n continue;\n }\n i = key;\n const concat = i.concatTokens();\n if (concat.toUpperCase().includes(\"WITH EMPTY KEY\") === false) {\n continue;\n }\n const token = i.findDirectTokenByText(\"EMPTY\");\n if (token === undefined) {\n continue;\n }\n const fix = edit_helper_1.EditHelper.replaceToken(lowFile, token, \"DEFAULT\");\n return issue_1.Issue.atToken(lowFile, i.getFirstToken(), \"Downport EMPTY KEY\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n callFunctionParameterSimple(high, lowFile, highSyntax) {\n if (!(high.get() instanceof Statements.CallFunction)) {\n return undefined;\n }\n let found = undefined;\n for (const p of high.findAllExpressions(Expressions.FunctionExportingParameter)) {\n found = p.findDirectExpression(Expressions.Source);\n if (found && (found.findDirectExpression(Expressions.FieldChain)\n || found.findDirectExpression(Expressions.Constant)\n || found.findDirectExpression(Expressions.TextElement))) {\n // its actually simple, ok\n found = undefined;\n }\n else if (found !== undefined) {\n break;\n }\n }\n if (found === undefined) {\n return undefined;\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const code = `DATA(${uniqueName}) = ${found.concatTokens()}.\\n`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, found.getFirstToken().getStart(), found.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, call function parameter\", this.getMetadata().key, this.conf.severity, fix);\n }\n downportCorrespondingSimple(high, lowFile) {\n var _a, _b;\n if (!(high.get() instanceof Statements.Move)\n || high.getChildren().length !== 4\n || high.getChildren()[2].getFirstToken().getStr().toUpperCase() !== \"CORRESPONDING\") {\n return undefined;\n }\n const target = high.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n return undefined;\n }\n const sourceRef = (_a = high.findFirstExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(Expressions.CorrespondingBody);\n if ((sourceRef === null || sourceRef === void 0 ? void 0 : sourceRef.getChildren().length) === 1) {\n const code = `MOVE-CORRESPONDING ${sourceRef.concatTokens()} TO ${target.concatTokens()}`;\n const start = high.getFirstToken().getStart();\n const end = high.getLastToken().getStart();\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, code);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, simple CORRESPONDING move\", this.getMetadata().key, this.conf.severity, fix);\n }\n else if ((sourceRef === null || sourceRef === void 0 ? void 0 : sourceRef.getChildren().length) === 5 && ((_b = sourceRef.getFirstChild()) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase()) === \"BASE\") {\n let code = `${target.concatTokens()} = ${sourceRef.getChildren()[2].concatTokens()}.\\n`;\n code += `MOVE-CORRESPONDING ${sourceRef.getChildren()[4].concatTokens()} TO ${target.concatTokens()}`;\n const start = high.getFirstToken().getStart();\n const end = high.getLastToken().getStart();\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, code);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, CORRESPONDING BASE move\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n downportRefSimple(high, lowFile, highSyntax) {\n var _a;\n if (!(high.get() instanceof Statements.Move)\n || high.getChildren().length !== 4\n || high.getChildren()[2].getFirstToken().getStr().toUpperCase() !== \"REF\") {\n return undefined;\n }\n const target = high.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n return undefined;\n }\n const sourceRef = (_a = high.findFirstExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Source);\n if (sourceRef === undefined\n || sourceRef.getChildren().length !== 1) {\n return undefined;\n }\n let code = \"\";\n if (sourceRef.findFirstExpression(Expressions.TableExpression)) {\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n code = `ASSIGN ${sourceRef.concatTokens()} TO FIELD-SYMBOL(<${uniqueName}>).\r\nIF sy-subrc <> 0.\r\n RAISE EXCEPTION TYPE cx_sy_itab_line_not_found.\r\nENDIF.\r\nGET REFERENCE OF <${uniqueName}> INTO ${target.concatTokens()}`;\n }\n else {\n code = `GET REFERENCE OF ${sourceRef.concatTokens()} INTO ${target.concatTokens()}`;\n }\n const start = high.getFirstToken().getStart();\n const end = high.getLastToken().getStart();\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, code);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, simple REF move\", this.getMetadata().key, this.conf.severity, fix);\n }\n downportLoopGroup(high, lowFile, highSyntax, highFile) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n if (!(high.get() instanceof Statements.Loop)) {\n return undefined;\n }\n const group = high.findDirectExpression(Expressions.LoopGroupBy);\n if (group === undefined) {\n return undefined;\n }\n const groupTargetName = ((_a = group.findFirstExpression(Expressions.TargetField)) === null || _a === void 0 ? void 0 : _a.concatTokens())\n || ((_b = group.findFirstExpression(Expressions.TargetFieldSymbol)) === null || _b === void 0 ? void 0 : _b.concatTokens().replace(\"<\", \"_\").replace(\">\", \"_\"))\n || \"nameNotFound\";\n const loopSourceName = ((_c = high.findFirstExpression(Expressions.SimpleSource2)) === null || _c === void 0 ? void 0 : _c.concatTokens()) || \"nameNotFound\";\n const loopTargetName = ((_d = high.findFirstExpression(Expressions.TargetField)) === null || _d === void 0 ? void 0 : _d.concatTokens())\n || ((_e = high.findFirstExpression(Expressions.TargetFieldSymbol)) === null || _e === void 0 ? void 0 : _e.concatTokens())\n || \"nameNotFound\";\n const groupTarget = ((_f = group.findDirectExpression(Expressions.LoopGroupByTarget)) === null || _f === void 0 ? void 0 : _f.concatTokens()) || \"\";\n const isReference = (_g = high.findFirstExpression(Expressions.LoopTarget)) === null || _g === void 0 ? void 0 : _g.concatTokens().toUpperCase().startsWith(\"REFERENCE INTO \");\n let loopSourceRowType = \"typeNotFound\";\n const spag = highSyntax.spaghetti.lookupPosition(high.getFirstToken().getStart(), lowFile.getFilename());\n if (spag !== undefined) {\n const found = spag.findVariable(loopSourceName);\n const tt = found === null || found === void 0 ? void 0 : found.getType();\n if (tt instanceof basic_1.TableType) {\n loopSourceRowType = tt.getRowType().getQualifiedName() || \"typeNotFound\";\n }\n }\n let code = `TYPES: BEGIN OF ${groupTargetName}type,\\n`;\n let condition = \"\";\n let groupCountName = undefined;\n let groupIndexName = undefined;\n for (const c of group.findAllExpressions(Expressions.LoopGroupByComponent)) {\n const name = c.findFirstExpression(Expressions.ComponentName);\n let type = ((_h = c.findFirstExpression(Expressions.Source)) === null || _h === void 0 ? void 0 : _h.concatTokens()) || \"todo\";\n if ((_j = c.concatTokens()) === null || _j === void 0 ? void 0 : _j.toUpperCase().endsWith(\" = GROUP SIZE\")) {\n type = \"i\";\n groupCountName = name === null || name === void 0 ? void 0 : name.concatTokens();\n }\n else if ((_k = c.concatTokens()) === null || _k === void 0 ? void 0 : _k.toUpperCase().endsWith(\" = GROUP INDEX\")) {\n type = \"i\";\n groupIndexName = name === null || name === void 0 ? void 0 : name.concatTokens();\n }\n else {\n if (condition !== \"\") {\n condition += \" \";\n }\n condition += c.concatTokens();\n type = type.replace(loopTargetName, loopSourceRowType);\n type = type.replace(\"->\", \"-\");\n }\n code += ` ${name === null || name === void 0 ? void 0 : name.concatTokens()} TYPE ${type},\\n`;\n }\n const s = group.findDirectExpression(Expressions.Source);\n let singleName = \"\";\n if (s) {\n let type = s.concatTokens();\n type = type.replace(loopTargetName, loopSourceRowType);\n type = type.replace(\"->\", \"-\");\n singleName = s.concatTokens().split(\"-\")[1];\n code += ` ${singleName} TYPE ${type},\\n`;\n condition = singleName + \" = \" + s.concatTokens();\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const uniqueFS = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const uniqueNameIndex = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n code += ` items LIKE ${loopSourceName},\r\n END OF ${groupTargetName}type.\r\nDATA ${groupTargetName}tab TYPE STANDARD TABLE OF ${groupTargetName}type WITH DEFAULT KEY.\r\nDATA ${uniqueName} LIKE LINE OF ${groupTargetName}tab.\r\nLOOP AT ${loopSourceName} ${(_l = high.findFirstExpression(Expressions.LoopTarget)) === null || _l === void 0 ? void 0 : _l.concatTokens()}.\\n`;\n if (groupIndexName !== undefined) {\n code += `DATA(${uniqueNameIndex}) = sy-tabix.\\n`;\n }\n code += `READ TABLE ${groupTargetName}tab ASSIGNING FIELD-SYMBOL(<${uniqueFS}>) WITH KEY ${condition}.\r\nIF sy-subrc = 0.\\n`;\n if (groupCountName !== undefined) {\n code += ` <${uniqueFS}>-${groupCountName} = <${uniqueFS}>-${groupCountName} + 1.\\n`;\n }\n code += ` INSERT ${loopTargetName}${isReference ? \"->*\" : \"\"} INTO TABLE <${uniqueFS}>-items.\r\nELSE.\\n`;\n code += ` CLEAR ${uniqueName}.\\n`;\n for (const c of group.findAllExpressions(Expressions.LoopGroupByComponent)) {\n const concat = c.concatTokens();\n // console.dir(concat);\n if (concat.endsWith(\" GROUP INDEX\")) {\n code += ` ${uniqueName}-${groupIndexName} = ${uniqueNameIndex}.\\n`;\n }\n else if (concat.endsWith(\" GROUP SIZE\")) {\n code += ` ${uniqueName}-${groupCountName} = 1.\\n`;\n }\n else {\n code += ` ${uniqueName}-${concat}.\\n`;\n }\n }\n if (singleName !== \"\") {\n code += ` ${uniqueName}-${singleName} = ${loopTargetName}-${singleName}.\\n`;\n }\n code += ` INSERT ${loopTargetName}${isReference ? \"->*\" : \"\"} INTO TABLE ${uniqueName}-items.\\n`;\n code += ` INSERT ${uniqueName} INTO TABLE ${groupTargetName}tab.\\n`;\n code += `ENDIF.\r\nENDLOOP.\r\nLOOP AT ${groupTargetName}tab ${groupTarget}.`;\n let fix = edit_helper_1.EditHelper.replaceRange(lowFile, high.getFirstToken().getStart(), high.getLastToken().getEnd(), code);\n for (const l of ((_m = highFile.getStructure()) === null || _m === void 0 ? void 0 : _m.findAllStructures(Structures.Loop)) || []) {\n // make sure to find the correct/current loop statement\n if (l.findDirectStatement(Statements.Loop) !== high) {\n continue;\n }\n for (const loop of l.findAllStatements(Statements.Loop)) {\n if ((_o = loop.concatTokens()) === null || _o === void 0 ? void 0 : _o.toUpperCase().startsWith(\"LOOP AT GROUP \")) {\n const subLoopSource = loop.findFirstExpression(Expressions.SimpleSource2);\n if (subLoopSource === undefined) {\n continue;\n }\n const subLoopSourceName = (subLoopSource === null || subLoopSource === void 0 ? void 0 : subLoopSource.concatTokens()) || \"nameNotFound\";\n const subCode = `LOOP AT ${subLoopSourceName}${isReference ? \"->\" : \"-\"}items`;\n const subFix = edit_helper_1.EditHelper.replaceRange(lowFile, loop.getFirstToken().getStart(), subLoopSource.getLastToken().getEnd(), subCode);\n fix = edit_helper_1.EditHelper.merge(subFix, fix);\n }\n }\n }\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, LOOP GROUP\", this.getMetadata().key, this.conf.severity, fix);\n }\n downportRef(low, high, lowFile, highSyntax) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n let found = undefined;\n for (const s of high.findAllExpressionsRecursive(Expressions.Source)) {\n if (s.getFirstToken().getStr().toUpperCase() === \"REF\"\n && s.findDirectExpression(Expressions.TypeNameOrInfer)) {\n found = s;\n }\n }\n if (found === undefined) {\n return undefined;\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const code = `DATA(${uniqueName}) = ${found.concatTokens()}.\\n`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, found.getFirstToken().getStart(), found.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, REF\", this.getMetadata().key, this.conf.severity, fix);\n }\n assignWithTable(low, high, lowFile) {\n var _a, _b;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n if (!(high.get() instanceof Statements.Assign)) {\n return undefined;\n }\n else if (high.getChildren().length !== 5) {\n return undefined;\n }\n const fieldChain = (_b = (_a = high.findDirectExpression(Expressions.AssignSource)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Source)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.FieldChain);\n const tableExpression = fieldChain === null || fieldChain === void 0 ? void 0 : fieldChain.getLastChild();\n if (tableExpression === undefined\n || !(tableExpression.get() instanceof Expressions.TableExpression)\n || !(tableExpression instanceof nodes_1.ExpressionNode)) {\n return undefined;\n }\n let condition = \"\";\n if (tableExpression.getChildren().length === 3) {\n const index = tableExpression.findDirectExpression(Expressions.Source);\n if (index === undefined) {\n return undefined;\n }\n condition = `INDEX ${index.concatTokens()}`;\n }\n else {\n let concat = tableExpression.concatTokens();\n concat = concat.substring(2);\n concat = concat.substring(0, concat.length - 2);\n condition = `WITH KEY ${concat}`;\n }\n let pre = \"\";\n for (const c of fieldChain.getChildren()) {\n if (c === tableExpression) {\n break;\n }\n pre += c.concatTokens();\n }\n const fsTarget = high.findDirectExpression(Expressions.FSTarget);\n const code = `READ TABLE ${pre} ${condition} ASSIGNING ${fsTarget === null || fsTarget === void 0 ? void 0 : fsTarget.concatTokens()}.`;\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, high.getFirstToken().getStart(), high.getLastToken().getEnd(), code);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, ASSIGN table expr\", this.getMetadata().key, this.conf.severity, fix);\n }\n moveWithSimpleValue(low, high, lowFile) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n if (!(high.get() instanceof Statements.Move)\n || high.getChildren().length !== 4) {\n return undefined;\n }\n const target = high.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n return undefined;\n }\n const source = high.findDirectExpression(Expressions.Source);\n if (source === undefined) {\n return undefined;\n }\n const field = target.findDirectExpression(Expressions.TargetField);\n if (field === undefined) {\n return;\n }\n const valueBody = source.findDirectExpression(Expressions.ValueBody);\n if (valueBody === undefined) {\n return;\n }\n const fieldAssignments = valueBody.findDirectExpressions(Expressions.FieldAssignment);\n if (fieldAssignments.length === 0) {\n return;\n }\n else if (fieldAssignments.length !== valueBody.getChildren().length) {\n return;\n }\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n let code = `CLEAR ${target.concatTokens()}.\\n`;\n for (const fieldAssignment of fieldAssignments) {\n code += indentation + target.concatTokens() + \"-\" + fieldAssignment.concatTokens() + `.\\n`;\n }\n code = code.trimEnd();\n const start = high.getFirstToken().getStart();\n const end = high.getLastToken().getEnd();\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, code);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, simple move\", this.getMetadata().key, this.conf.severity, fix);\n }\n // note, downporting ENUM does not give the correct types, but it will work in most cases?\n downportEnum(_low, high, lowFile, _highSyntax, highFile) {\n var _a, _b, _c, _d, _e;\n if (!(high.get() instanceof Statements.TypeEnumBegin)) {\n return undefined;\n }\n const enumStructure = (_a = highFile.getStructure()) === null || _a === void 0 ? void 0 : _a.findFirstStructure(Structures.TypeEnum);\n if (enumStructure === undefined) {\n return undefined;\n }\n if (enumStructure.getFirstStatement() !== high) {\n return undefined;\n }\n const enumName = (_b = high.findExpressionAfterToken(\"ENUM\")) === null || _b === void 0 ? void 0 : _b.concatTokens();\n const structureName = (_c = high.findExpressionAfterToken(\"STRUCTURE\")) === null || _c === void 0 ? void 0 : _c.concatTokens();\n // all ENUMS are char like?\n let code = `TYPES ${enumName} TYPE string.\r\nCONSTANTS: BEGIN OF ${structureName},\\n`;\n let count = 1;\n for (const e of enumStructure.findDirectStatements(Statements.TypeEnum).concat(enumStructure.findDirectStatements(Statements.Type))) {\n const name = (_d = e.findFirstExpression(Expressions.NamespaceSimpleName)) === null || _d === void 0 ? void 0 : _d.concatTokens();\n let value = (_e = e.findFirstExpression(Expressions.Value)) === null || _e === void 0 ? void 0 : _e.concatTokens();\n if (value === undefined) {\n value = \"VALUE '\" + count++ + \"'\";\n }\n code += ` ${name} TYPE ${enumName} ${value},\\n`;\n }\n code += ` END OF ${structureName}.`;\n const start = enumStructure.getFirstToken().getStart();\n const end = enumStructure.getLastToken().getEnd();\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, code);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport ENUM\", this.getMetadata().key, this.conf.severity, fix);\n }\n moveWithTableTarget(low, high, lowFile, highSyntax) {\n var _a;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n if (!(high.get() instanceof Statements.Move)) {\n return undefined;\n }\n const target = high.findDirectExpression(Expressions.Target);\n if (target === undefined) {\n return undefined;\n }\n const tableExpression = target.findDirectExpression(Expressions.TableExpression);\n if (tableExpression === undefined) {\n return undefined;\n }\n const index = tableExpression.findDirectExpression(Expressions.Source);\n if (index === undefined) {\n return undefined;\n }\n let uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n uniqueName = `<${uniqueName}>`;\n const tName = target.concatTokens().split(\"[\")[0];\n const condition = this.tableCondition(tableExpression);\n const tabixBackup = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n // restore tabix before exeption\n const code = `FIELD-SYMBOLS ${uniqueName} LIKE LINE OF ${tName}.\r\n${indentation}DATA ${tabixBackup} LIKE sy-tabix.\r\n${indentation}${tabixBackup} = sy-tabix.\r\n${indentation}READ TABLE ${tName} ${condition}ASSIGNING ${uniqueName}.\r\n${indentation}sy-tabix = ${tabixBackup}.\r\n${indentation}IF sy-subrc <> 0.\r\n${indentation} RAISE EXCEPTION TYPE cx_sy_itab_line_not_found.\r\n${indentation}ENDIF.\r\n${indentation}${uniqueName}`;\n const start = target.getFirstToken().getStart();\n const end = (_a = tableExpression.findDirectTokenByText(\"]\")) === null || _a === void 0 ? void 0 : _a.getEnd();\n if (end === undefined) {\n return undefined;\n }\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, code);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport, move with table target\", this.getMetadata().key, this.conf.severity, fix);\n }\n moveWithOperator(low, high, lowFile) {\n var _a, _b, _c;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n else if (!(high.get() instanceof Statements.Move)) {\n return undefined;\n }\n const children = high.getChildren();\n const secondChild = children[1];\n if (secondChild === undefined) {\n return undefined;\n }\n const op = secondChild.getFirstToken();\n let operator = \"\";\n switch (op.getStr()) {\n case \"+\":\n operator = \" + \";\n break;\n case \"-\":\n operator = \" - \";\n break;\n case \"/=\":\n operator = \" / \";\n break;\n case \"*=\":\n operator = \" * \";\n break;\n case \"&&=\":\n operator = \" && \";\n break;\n default:\n return undefined;\n }\n const target = (_a = high.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (target === undefined) {\n return;\n }\n const sourceStart = (_c = (_b = high.findDirectExpression(Expressions.Source)) === null || _b === void 0 ? void 0 : _b.getFirstChild()) === null || _c === void 0 ? void 0 : _c.getFirstToken().getStart();\n if (sourceStart === undefined) {\n return;\n }\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, op.getStart(), sourceStart, \"= \" + target + operator);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Expand operator\", this.getMetadata().key, this.conf.severity, fix);\n }\n // must be very simple string templates, like \"|{ ls_line-no ALPHA = IN }|\"\n stringTemplateAlpha(low, high, lowFile, highSyntax) {\n var _a, _b;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const child of high.findAllExpressionsRecursive(Expressions.StringTemplate)) {\n const templateTokens = child.getChildren();\n if (templateTokens.length !== 3\n || templateTokens[0].getFirstToken().getStr() !== \"|{\"\n || templateTokens[2].getFirstToken().getStr() !== \"}|\") {\n continue;\n }\n const templateSource = child.findDirectExpression(Expressions.StringTemplateSource);\n const formatting = (_a = templateSource === null || templateSource === void 0 ? void 0 : templateSource.findDirectExpression(Expressions.StringTemplateFormatting)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n let functionName = \"\";\n switch (formatting) {\n case \"ALPHA = IN\":\n functionName = \"CONVERSION_EXIT_ALPHA_INPUT\";\n break;\n case \"ALPHA = OUT\":\n functionName = \"CONVERSION_EXIT_ALPHA_OUTPUT\";\n break;\n default:\n return undefined;\n }\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const source = (_b = templateSource === null || templateSource === void 0 ? void 0 : templateSource.findDirectExpression(Expressions.Source)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const code = `DATA ${uniqueName} TYPE string.\r\n${indentation}CALL FUNCTION '${functionName}'\r\n${indentation} EXPORTING\r\n${indentation} input = ${source}\r\n${indentation} IMPORTING\r\n${indentation} output = ${uniqueName}.\\n`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, child.getFirstToken().getStart(), child.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Downport ALPHA\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineLoopInput(low, high, lowFile, highSyntax) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n else if (!(high.get() instanceof Statements.Loop)) {\n return undefined;\n }\n else if (high.findDirectExpression(Expressions.SimpleSource2)) {\n return undefined;\n }\n // the first Source must be outlined\n const s = high.findDirectExpression(Expressions.Source);\n if (s === undefined) {\n return undefined;\n }\n const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const code = `DATA(${uniqueName}) = ${s.concatTokens()}.\\n` +\n \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, s.getFirstToken().getStart(), s.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Outline LOOP input\", this.getMetadata().key, this.conf.severity, fix);\n }\n outlineLoopTarget(node, lowFile, highSyntax) {\n var _a, _b, _c, _d, _e, _f, _g;\n // also allows outlining of voided types\n if (!(node.get() instanceof Statements.Loop)) {\n return undefined;\n }\n const sourceName = (_a = node.findDirectExpression(Expressions.SimpleSource2)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (sourceName === undefined) {\n return undefined;\n }\n const concat = node.concatTokens().toUpperCase();\n if (concat.includes(\" GROUP BY \") || concat.startsWith(\"LOOP AT GROUP \")) {\n return undefined;\n }\n const isReference = concat.includes(\" REFERENCE INTO \");\n const indentation = \" \".repeat(node.getFirstToken().getStart().getCol() - 1);\n const dataTarget = (_c = (_b = node.findDirectExpression(Expressions.LoopTarget)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.Target)) === null || _c === void 0 ? void 0 : _c.findDirectExpression(Expressions.InlineData);\n if (dataTarget) {\n const targetName = ((_d = dataTarget.findDirectExpression(Expressions.TargetField)) === null || _d === void 0 ? void 0 : _d.concatTokens()) || \"DOWNPORT_ERROR\";\n let code = `DATA ${targetName} LIKE LINE OF ${sourceName}.\\n${indentation}`;\n if (isReference) {\n const likeName = this.uniqueName(node.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n code = `DATA ${likeName} LIKE LINE OF ${sourceName}.\\n${indentation}DATA ${targetName} LIKE REF TO ${likeName}.\\n${indentation}`;\n }\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, node.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, dataTarget.getFirstToken().getStart(), dataTarget.getLastToken().getEnd(), targetName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, node.getFirstToken(), \"Outline LOOP data target\", this.getMetadata().key, this.conf.severity, fix);\n }\n const fsTarget = (_f = (_e = node.findDirectExpression(Expressions.LoopTarget)) === null || _e === void 0 ? void 0 : _e.findDirectExpression(Expressions.FSTarget)) === null || _f === void 0 ? void 0 : _f.findDirectExpression(Expressions.InlineFS);\n if (fsTarget) {\n const targetName = ((_g = fsTarget.findDirectExpression(Expressions.TargetFieldSymbol)) === null || _g === void 0 ? void 0 : _g.concatTokens()) || \"DOWNPORT_ERROR\";\n const code = `FIELD-SYMBOLS ${targetName} LIKE LINE OF ${sourceName}.\\n${indentation}`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, node.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, fsTarget.getFirstToken().getStart(), fsTarget.getLastToken().getEnd(), targetName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, node.getFirstToken(), \"Outline LOOP fs target\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineFor(forLoop, indentation, lowFile, highSyntax) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n let body = \"\";\n let end = \"\";\n const loopSource = (_a = forLoop.findFirstExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n let loopTargetFieldExpression = forLoop.findFirstExpression(Expressions.TargetField);\n let loopTargetFieldName = loopTargetFieldExpression === null || loopTargetFieldExpression === void 0 ? void 0 : loopTargetFieldExpression.concatTokens();\n const of = forLoop.findExpressionAfterToken(\"OF\");\n if (of !== undefined) {\n loopTargetFieldExpression = of;\n loopTargetFieldName = of === null || of === void 0 ? void 0 : of.concatTokens();\n }\n if (((_c = (_b = forLoop.findDirectExpression(Expressions.InlineLoopDefinition)) === null || _b === void 0 ? void 0 : _b.getFirstChild()) === null || _c === void 0 ? void 0 : _c.get()) instanceof Expressions.TargetFieldSymbol) {\n loopTargetFieldExpression = undefined;\n loopTargetFieldName = undefined;\n }\n if (loopTargetFieldExpression) {\n const start = loopTargetFieldExpression.getFirstToken().getStart();\n const spag = highSyntax.spaghetti.lookupPosition(start, lowFile.getFilename());\n if (loopTargetFieldName && spag) {\n if (new SpagHelper(spag).isDuplicateName(loopTargetFieldName, start)) {\n this.renameVariable(spag, loopTargetFieldName, start, lowFile, highSyntax);\n }\n }\n }\n let cond = ((_d = forLoop.findDirectExpression(Expressions.ComponentCond)) === null || _d === void 0 ? void 0 : _d.concatTokens()) || \"\";\n if (cond !== \"\") {\n cond = \" WHERE \" + cond;\n }\n const loop = forLoop.findDirectExpression(Expressions.InlineLoopDefinition);\n const indexInto = (_e = loop === null || loop === void 0 ? void 0 : loop.findExpressionAfterToken(\"INTO\")) === null || _e === void 0 ? void 0 : _e.concatTokens();\n if (forLoop.findDirectTokenByText(\"UNTIL\")\n || forLoop.findDirectTokenByText(\"WHILE\")) {\n const fieldDef = forLoop.findDirectExpression(Expressions.InlineFieldDefinition);\n const field = (_f = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.findFirstExpression(Expressions.Field)) === null || _f === void 0 ? void 0 : _f.concatTokens();\n const indexBackup = this.uniqueName(forLoop.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n body += indentation + \"DATA \" + field + \" TYPE i.\\n\";\n const second = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.getChildren()[2];\n if ((second === null || second === void 0 ? void 0 : second.get()) instanceof Expressions.Source) {\n body += indentation + field + \" = \" + second.concatTokens() + \".\\n\";\n }\n const not = forLoop.findDirectTokenByText(\"UNTIL\") ? \" NOT\" : \"\";\n const cond = forLoop.findFirstExpression(Expressions.Cond);\n body += indentation + `DATA ${indexBackup} LIKE sy-index.\\n`;\n body += indentation + `${indexBackup} = sy-index.\\n`;\n body += indentation + `WHILE${not} ${cond === null || cond === void 0 ? void 0 : cond.concatTokens()}.\\n`;\n body += indentation + ` sy-index = ${indexBackup}.\\n`;\n const then = forLoop.findExpressionAfterToken(\"THEN\");\n if (then) {\n end += ` ${field} = ${then.concatTokens()}.\\n`;\n }\n else {\n end += ` ${field} = ${field} + 1.\\n`;\n }\n end += indentation + \"ENDWHILE\";\n }\n else if (loopTargetFieldName !== undefined) {\n let from = (_g = forLoop.findExpressionAfterToken(\"FROM\")) === null || _g === void 0 ? void 0 : _g.concatTokens();\n from = from ? \" FROM \" + from : \"\";\n let to = (_h = forLoop.findExpressionAfterToken(\"TO\")) === null || _h === void 0 ? void 0 : _h.concatTokens();\n to = to ? \" TO \" + to : \"\";\n let gby = \"\";\n for (const lg of forLoop.findDirectExpressions(Expressions.LoopGroupByComponent)) {\n if (gby !== \"\") {\n gby += \" \";\n }\n gby += lg.concatTokens();\n }\n if (gby !== \"\") {\n gby = \" GROUP BY ( \" + gby + \" )\";\n }\n const fc = forLoop.findDirectExpression(Expressions.FieldChain);\n if (fc) {\n gby = \" GROUP BY \" + fc.concatTokens();\n }\n if (forLoop.findDirectTokenByText(\"ASCENDING\")) {\n gby += \" ASCENDING\";\n }\n if (forLoop.findDirectTokenByText(\"DESCENDING\")) {\n gby += \" DESCENDING\";\n }\n const groups = forLoop.findExpressionAfterToken(\"GROUPS\");\n if (groups) {\n const concat = groups.concatTokens();\n if (concat.startsWith(\"<\")) {\n gby += \" ASSIGNING FIELD-SYMBOL(\" + concat + \")\";\n }\n else {\n gby += \" INTO DATA(\" + concat + \")\";\n }\n }\n let inGroup = \"\";\n if (forLoop.concatTokens().toUpperCase().includes(\" IN GROUP \")) {\n inGroup = \"-items\";\n }\n let into = \"INTO DATA\";\n if (loopTargetFieldName.startsWith(\"<\")) {\n into = \"ASSIGNING FIELD-SYMBOL\";\n }\n // todo, also backup sy-index / sy-tabix here?\n body += indentation + `LOOP AT ${loopSource}${inGroup} ${into}(${loopTargetFieldName})${from}${to}${cond}${gby}.\\n`;\n if (indexInto) {\n body += indentation + \" DATA(\" + indexInto + \") = sy-tabix.\\n\";\n }\n end = \"ENDLOOP\";\n }\n else if (loopTargetFieldName === undefined) {\n // todo, also backup sy-index / sy-tabix here?\n const loopTargetFieldSymbol = (_j = forLoop.findFirstExpression(Expressions.TargetFieldSymbol)) === null || _j === void 0 ? void 0 : _j.concatTokens();\n body += indentation + `LOOP AT ${loopSource} ASSIGNING FIELD-SYMBOL(${loopTargetFieldSymbol})${cond}.\\n`;\n if (indexInto) {\n body += indentation + \" DATA(\" + indexInto + \") = sy-tabix.\\n\";\n }\n end = \"ENDLOOP\";\n }\n const l = forLoop.findDirectExpression(Expressions.Let);\n if (l) {\n body += this.outlineLet(l, indentation, highSyntax, lowFile);\n }\n return { body, end };\n }\n outlineFilter(low, high, lowFile, highSyntax) {\n var _a;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const i of high.findAllExpressionsRecursive(Expressions.Source)) {\n const firstToken = i.getFirstToken();\n if (firstToken.getStr().toUpperCase() !== \"FILTER\") {\n continue;\n }\n const filterBody = i.findDirectExpression(Expressions.FilterBody);\n if (filterBody === undefined) {\n continue;\n }\n const sourceName = (_a = filterBody.findDirectExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (sourceName === undefined) {\n continue;\n }\n let type = this.findType(i, lowFile, highSyntax);\n if (type === undefined) {\n type = \"LIKE \" + sourceName;\n }\n else {\n type = \"TYPE \" + type;\n }\n const uniqueName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n const loopName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n let body = \"\";\n body += `DATA ${uniqueName} ${type}.\\n`;\n body += `${indentation}LOOP AT ${sourceName} INTO DATA(${loopName}) ${filterBody.concatTokens().substring(sourceName.length + 1)}.\\n`;\n body += `${indentation} INSERT ${loopName} INTO TABLE ${uniqueName}.\\n`;\n body += `${indentation}ENDLOOP.\\n${indentation}`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), body);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, firstToken.getStart(), i.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, firstToken, \"Downport FILTER\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineSwitch(low, high, lowFile, highSyntax) {\n var _a, _b, _c, _d;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const i of high.findAllExpressionsRecursive(Expressions.Source)) {\n const firstToken = i.getFirstToken();\n if (firstToken.getStr().toUpperCase() !== \"SWITCH\") {\n continue;\n }\n let type = this.findType(i, lowFile, highSyntax);\n if (type === undefined) {\n if (high.get() instanceof Statements.Move\n && high.findDirectExpression(Expressions.Source) === i\n && ((_a = high.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.TargetField)) !== undefined) {\n type = \"LIKE \" + ((_b = high.findDirectExpression(Expressions.Target)) === null || _b === void 0 ? void 0 : _b.concatTokens());\n }\n if (type === undefined) {\n continue;\n }\n }\n else {\n type = \"TYPE \" + type;\n }\n const uniqueName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n let body = \"\";\n let name = \"\";\n const switchBody = i.findDirectExpression(Expressions.SwitchBody);\n if (switchBody === undefined) {\n continue;\n }\n for (const l of ((_c = switchBody === null || switchBody === void 0 ? void 0 : switchBody.findDirectExpression(Expressions.Let)) === null || _c === void 0 ? void 0 : _c.findDirectExpressions(Expressions.InlineFieldDefinition)) || []) {\n name = l.getFirstToken().getStr();\n body += indentation + `DATA(${name}) = ${(_d = switchBody.findFirstExpression(Expressions.Source)) === null || _d === void 0 ? void 0 : _d.concatTokens()}.\\n`;\n }\n body += `DATA ${uniqueName} ${type}.\\n`;\n let firstSource = false;\n let inWhen = false;\n for (const c of switchBody.getChildren()) {\n if (c.get() instanceof Expressions.Source && firstSource === false) {\n body += indentation + `CASE ${c.concatTokens()}.`;\n firstSource = true;\n }\n else if (c instanceof nodes_1.TokenNode && c.concatTokens().toUpperCase() === \"THEN\") {\n inWhen = true;\n body += \".\\n\";\n }\n else if (c instanceof nodes_1.TokenNode && c.concatTokens().toUpperCase() === \"WHEN\") {\n inWhen = false;\n body += `\\n${indentation} WHEN `;\n }\n else if (c instanceof nodes_1.TokenNode && c.concatTokens().toUpperCase() === \"OR\") {\n body += ` OR `;\n }\n else if (c instanceof nodes_1.TokenNode && c.concatTokens().toUpperCase() === \"ELSE\") {\n inWhen = true;\n body += `\\n${indentation} WHEN OTHERS.\\n`;\n }\n else if (inWhen === false) {\n body += c.concatTokens();\n }\n else {\n body += indentation + \" \" + uniqueName + \" = \" + c.concatTokens() + \".\";\n }\n }\n body += \"\\n\" + indentation + \"ENDCASE.\\n\" + indentation;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), body);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, firstToken.getStart(), i.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, firstToken, \"Downport SWITCH\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineReduce(low, high, lowFile, highSyntax) {\n var _a, _b;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const i of high.findAllExpressionsRecursive(Expressions.Source)) {\n const firstToken = i.getFirstToken();\n if (firstToken.getStr().toUpperCase() !== \"REDUCE\") {\n continue;\n }\n const type = this.findType(i, lowFile, highSyntax);\n if (type === undefined) {\n continue;\n }\n const uniqueName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n let body = \"\";\n let name = \"\";\n const reduceBody = i.findDirectExpression(Expressions.ReduceBody);\n if (reduceBody === undefined) {\n continue;\n }\n const letNode = reduceBody.findDirectExpression(Expressions.Let);\n if (letNode) {\n body += this.outlineLet(letNode, indentation, highSyntax, lowFile);\n }\n let firstName = \"\";\n for (const init of reduceBody.findDirectExpressions(Expressions.InlineFieldDefinition)) {\n name = init.getFirstToken().getStr();\n if (firstName === \"\") {\n firstName = name;\n }\n const spag = highSyntax.spaghetti.lookupPosition(init.getFirstToken().getStart(), lowFile.getFilename());\n if (spag && new SpagHelper(spag).isDuplicateName(name, init.getFirstToken().getStart())) {\n this.renameVariable(spag, name, init.getFirstToken().getStart(), lowFile, highSyntax);\n }\n const s = (_a = init.findFirstExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n const t = (_b = init.findFirstExpression(Expressions.TypeName)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (s) {\n if (s.toUpperCase().startsWith(\"VALUE #\")) {\n body += indentation + `DATA(${name}) = ${s.replace(\"#\", type)}.\\n`;\n }\n else {\n body += indentation + `DATA(${name}) = ${s}.\\n`;\n }\n }\n else {\n body += indentation + `DATA ${name} TYPE ${t}.\\n`;\n }\n }\n let end = \"\";\n for (const forLoop of (reduceBody === null || reduceBody === void 0 ? void 0 : reduceBody.findDirectExpressions(Expressions.For)) || []) {\n const outlineFor = this.outlineFor(forLoop, indentation, lowFile, highSyntax);\n body += outlineFor.body;\n end = outlineFor.end + `.\\n` + end;\n }\n const next = reduceBody.findDirectExpression(Expressions.ReduceNext);\n if (next === undefined) {\n continue;\n }\n for (const n of next.getChildren()) {\n const concat = n.concatTokens();\n if (concat.toUpperCase() === \"NEXT\") {\n continue;\n }\n else if (n.get() instanceof Expressions.SimpleTarget) {\n body += indentation + \" \" + concat + \" \";\n }\n else if (n.get() instanceof Expressions.Source) {\n body += \" \" + concat + \".\\n\";\n }\n else {\n body += concat;\n }\n }\n body += indentation + end;\n body += indentation + `${uniqueName} = ${firstName}.\\n`;\n const abap = `DATA ${uniqueName} TYPE ${type}.\\n` +\n body +\n indentation;\n const reduceEnd = i.findDirectTokenByText(\")\");\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), abap);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, firstToken.getStart(), reduceEnd.getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, firstToken, \"Downport REDUCE\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineCorresponding(low, high, lowFile, highSyntax) {\n var _a;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n const allSources = high.findAllExpressionsRecursive(Expressions.Source);\n for (const s of allSources) {\n const firstToken = s.getFirstToken();\n if (firstToken.getStr().toUpperCase() !== \"CORRESPONDING\") {\n continue;\n }\n const correspondingBody = s.findDirectExpression(Expressions.CorrespondingBody);\n if ((correspondingBody === null || correspondingBody === void 0 ? void 0 : correspondingBody.getFirstToken().getStr().toUpperCase()) === \"BASE\") {\n continue;\n }\n const uniqueName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n let type = this.findType(s, lowFile, highSyntax);\n if (type === undefined) {\n if (high.get() instanceof Statements.Move && high.findDirectExpression(Expressions.Source) === s) {\n type = \"LIKE \" + ((_a = high.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.concatTokens());\n }\n if (type === undefined) {\n continue;\n }\n }\n else {\n type = \"TYPE \" + type;\n }\n const abap = `DATA ${uniqueName} ${type}.\\n` +\n indentation + `CLEAR ${uniqueName}.\\n` + // might be called inside a loop\n indentation + `MOVE-CORRESPONDING ${correspondingBody === null || correspondingBody === void 0 ? void 0 : correspondingBody.concatTokens()} TO ${uniqueName}.\\n` +\n indentation;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), abap);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, firstToken.getStart(), s.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, firstToken, \"Downport CORRESPONDING\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineValue(low, high, lowFile, highSyntax) {\n var _a, _b, _c;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n const allSources = high.findAllExpressionsRecursive(Expressions.Source);\n for (const s of allSources) {\n const firstToken = s.getFirstToken();\n if (firstToken.getStr().toUpperCase() !== \"VALUE\") {\n continue;\n }\n const valueBody = s.findDirectExpression(Expressions.ValueBody);\n let type = this.findType(s, lowFile, highSyntax);\n if (type === undefined) {\n if (high.get() instanceof Statements.Move && high.findDirectExpression(Expressions.Source) === s) {\n type = \"LIKE \" + ((_a = high.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.concatTokens());\n }\n if (type === undefined) {\n continue;\n }\n }\n else {\n type = \"TYPE \" + type;\n }\n const uniqueName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n let indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n let body = \"\";\n const base = valueBody === null || valueBody === void 0 ? void 0 : valueBody.findExpressionAfterToken(\"BASE\");\n if (base) {\n body += indentation + uniqueName + \" = \" + base.concatTokens() + \".\\n\";\n }\n let end = \"\";\n let structureName = uniqueName;\n let added = false;\n let data = \"\";\n let previous = undefined;\n if ((valueBody === null || valueBody === void 0 ? void 0 : valueBody.findDirectExpression(Expressions.ValueBodyLine)) !== undefined) {\n structureName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n const extra = (valueBody === null || valueBody === void 0 ? void 0 : valueBody.findDirectExpression(Expressions.For)) ? \" \" : \"\";\n data = indentation + extra + `DATA ${structureName} LIKE LINE OF ${uniqueName}.\\n`;\n }\n for (const a of (valueBody === null || valueBody === void 0 ? void 0 : valueBody.getChildren()) || []) {\n if (a.get() instanceof Expressions.FieldAssignment) {\n if (added === false) {\n body += data;\n added = true;\n }\n body += indentation + structureName + \"-\" + a.concatTokens() + \".\\n\";\n }\n else if (a instanceof nodes_1.ExpressionNode && a.get() instanceof Expressions.For) {\n const outlineFor = this.outlineFor(a, indentation, lowFile, highSyntax);\n body += outlineFor.body;\n end = outlineFor.end + `.\\n` + end;\n indentation += \" \";\n }\n else if (a instanceof nodes_1.ExpressionNode && a.get() instanceof Expressions.Source) {\n // special handling for superflous value expression\n if ((valueBody === null || valueBody === void 0 ? void 0 : valueBody.getChildren().length) === 1) {\n body += indentation + uniqueName + \" = \" + a.concatTokens() + `.\\n`;\n }\n }\n else if (a instanceof nodes_1.ExpressionNode && a.get() instanceof Expressions.Let) {\n body += this.outlineLet(a, indentation, highSyntax, lowFile);\n }\n if (a instanceof nodes_1.ExpressionNode && a.get() instanceof Expressions.ValueBodyLine) {\n let skip = false;\n for (const b of (a === null || a === void 0 ? void 0 : a.getChildren()) || []) {\n if (b.get() instanceof Expressions.FieldAssignment) {\n if (added === false) {\n body += data;\n added = true;\n }\n body += indentation + structureName + \"-\" + b.concatTokens() + \".\\n\";\n }\n else if (b.get() instanceof Expressions.Source) {\n // note: it wont work with APPEND for Hashed/Sorted Tables, so use INSERT,\n body += indentation + \"INSERT \" + b.concatTokens() + ` INTO TABLE ${uniqueName}.\\n`;\n skip = true;\n }\n else if (b.get() instanceof Expressions.ValueBodyLines) {\n body += indentation + \"INSERT \" + b.concatTokens() + ` INTO TABLE ${uniqueName}.\\n`;\n skip = true;\n }\n else if (b.concatTokens() === \")\") {\n if (added === false && (previous === null || previous === void 0 ? void 0 : previous.concatTokens()) === \"(\") {\n body += data;\n added = true;\n }\n if (skip === false) {\n body += indentation + `INSERT ${structureName} INTO TABLE ${uniqueName}.\\n`;\n }\n }\n previous = b;\n }\n }\n }\n if (body === \"\" && ((_b = valueBody === null || valueBody === void 0 ? void 0 : valueBody.getLastChild()) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr().toUpperCase()) === \"OPTIONAL\") {\n const fieldChain = valueBody.findFirstExpression(Expressions.FieldChain);\n const rowName = this.uniqueName(firstToken.getStart(), lowFile.getFilename(), highSyntax);\n let tableExpression = undefined;\n let tabName = \"\";\n let after = \"\";\n for (const c of (fieldChain === null || fieldChain === void 0 ? void 0 : fieldChain.getChildren()) || []) {\n if (c.get() instanceof Expressions.TableExpression && c instanceof nodes_1.ExpressionNode) {\n tableExpression = c;\n }\n else if (tableExpression === undefined) {\n tabName += c.concatTokens();\n }\n else {\n after += c.concatTokens();\n }\n }\n let condition = \"\";\n if ((tableExpression === null || tableExpression === void 0 ? void 0 : tableExpression.getChildren().length) === 3) {\n condition = \"INDEX \" + ((_c = tableExpression === null || tableExpression === void 0 ? void 0 : tableExpression.findDirectExpression(Expressions.Source)) === null || _c === void 0 ? void 0 : _c.concatTokens());\n }\n else {\n condition = \"WITH KEY \" + (tableExpression === null || tableExpression === void 0 ? void 0 : tableExpression.concatTokens().replace(\"[ \", \"\").replace(\" ]\", \"\"));\n }\n body +=\n indentation + `READ TABLE ${tabName} INTO DATA(${rowName}) ${condition}.\\n` +\n indentation + `IF sy-subrc = 0.\\n` +\n indentation + ` ${uniqueName} = ${rowName}${after}.\\n` +\n indentation + `ENDIF.\\n`;\n if (type.includes(\"LIKE DATA(\")) {\n type = `LIKE LINE OF ${tabName}`;\n }\n }\n if (end !== \"\") {\n indentation = indentation.substring(2);\n body += indentation + end;\n }\n const abap = `DATA ${uniqueName} ${type}.\\n` +\n indentation + `CLEAR ${uniqueName}.\\n` + // might be called inside a loop\n body +\n indentation;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), abap);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, firstToken.getStart(), s.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, firstToken, \"Downport VALUE\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineLet(node, indentation, highSyntax, lowFile) {\n var _a;\n let ret = \"\";\n for (const f of node.findDirectExpressions(Expressions.InlineFieldDefinition)) {\n const c = f.getFirstChild();\n if (c === undefined) {\n continue;\n }\n const name = c.concatTokens().toLowerCase();\n const spag = highSyntax.spaghetti.lookupPosition(c.getFirstToken().getStart(), lowFile.getFilename());\n if (spag === undefined) {\n continue;\n }\n if (new SpagHelper(spag).isDuplicateName(name, c.getFirstToken().getStart())) {\n this.renameVariable(spag, name, c.getFirstToken().getStart(), lowFile, highSyntax);\n }\n const found = spag.findVariable(name);\n if (found === undefined) {\n const source = f.findFirstExpression(Expressions.Source);\n if (source) {\n ret += indentation + \"DATA(\" + name + `) = ${source.concatTokens()}.\\n`;\n }\n continue;\n }\n const type = found.getType().getQualifiedName() ? (_a = found.getType().getQualifiedName()) === null || _a === void 0 ? void 0 : _a.toLowerCase() : found.getType().toABAP();\n ret += indentation + \"DATA \" + name + ` TYPE ${type}.\\n`;\n const source = f.findFirstExpression(Expressions.Source);\n if (source) {\n ret += indentation + name + ` = ${source.concatTokens()}.\\n`;\n }\n }\n return ret;\n }\n renameVariable(spag, name, pos, lowFile, highSyntax) {\n const newName = this.uniqueName(pos, lowFile.getFilename(), highSyntax);\n const fix = new SpagHelper(spag).renameVariable(name, pos, lowFile, newName);\n const issue = issue_1.Issue.atPosition(lowFile, pos, \"Rename before outline\", this.getMetadata().key, this.conf.severity, fix);\n throw new SkipToNextFile(issue);\n }\n findType(i, lowFile, highSyntax, ref = false) {\n var _a;\n const expr = i.findDirectExpression(Expressions.TypeNameOrInfer);\n if (expr === undefined) {\n return undefined;\n }\n const firstToken = expr.getFirstToken();\n const concat = expr.concatTokens().toLowerCase();\n if (concat !== \"#\") {\n return ref ? \"REF TO \" + concat : concat;\n }\n const spag = highSyntax.spaghetti.lookupPosition(firstToken.getStart(), lowFile.getFilename());\n if (spag === undefined) {\n return undefined;\n }\n let inferred = undefined;\n for (const r of (spag === null || spag === void 0 ? void 0 : spag.getData().references) || []) {\n if (r.referenceType === _reference_1.ReferenceType.InferredType\n && r.resolved\n && r.position.getStart().equals(firstToken.getStart())\n && r.resolved instanceof _typed_identifier_1.TypedIdentifier) {\n inferred = r.resolved;\n break;\n }\n }\n if (inferred === undefined) {\n return undefined;\n }\n if (inferred.getType() instanceof basic_1.ObjectReferenceType) {\n return inferred.getType().toABAP();\n }\n else {\n return (_a = inferred.getType().getQualifiedName()) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n }\n }\n outlineFS(low, high, lowFile, highSyntax) {\n var _a, _b;\n if (!(low.get() instanceof _statement_1.Unknown)\n || (high.get() instanceof Statements.Loop)) {\n return undefined;\n }\n for (const i of high.findAllExpressionsRecursive(Expressions.InlineFS)) {\n const nameToken = (_a = i.findDirectExpression(Expressions.TargetFieldSymbol)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (nameToken === undefined) {\n continue;\n }\n const name = nameToken.getStr();\n let type = \"\";\n if (high.concatTokens().toUpperCase().startsWith(\"APPEND INITIAL LINE TO \")) {\n type = \"LIKE LINE OF \" + ((_b = high.findFirstExpression(Expressions.Target)) === null || _b === void 0 ? void 0 : _b.concatTokens());\n }\n else {\n const spag = highSyntax.spaghetti.lookupPosition(nameToken.getStart(), lowFile.getFilename());\n if (spag === undefined) {\n continue;\n }\n const found = spag.findVariable(name);\n if (found === undefined) {\n continue;\n }\n else if (found.getType() instanceof basic_1.VoidType) {\n return issue_1.Issue.atToken(lowFile, i.getFirstToken(), \"Error outlining voided type\", this.getMetadata().key, this.conf.severity);\n }\n type = \"TYPE \";\n type += found.getType().getQualifiedName() ? found.getType().getQualifiedName().toLowerCase() : found.getType().toABAP();\n }\n const code = `FIELD-SYMBOLS ${name} ${type}.\\n` +\n \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, i.getFirstToken().getStart(), i.getLastToken().getEnd(), name);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, i.getFirstToken(), \"Outline FIELD-SYMBOL\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineData(node, lowFile, highSyntax) {\n // hmm, no guard here, as DATA(SDF) is valid in 702\n var _a, _b;\n for (const i of node.findAllExpressionsRecursive(Expressions.InlineData)) {\n const nameToken = (_a = i.findDirectExpression(Expressions.TargetField)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (nameToken === undefined) {\n continue;\n }\n const name = nameToken.getStr();\n const spag = highSyntax.spaghetti.lookupPosition(nameToken.getStart(), lowFile.getFilename());\n if (spag === undefined) {\n continue;\n }\n const found = spag.findVariable(name);\n if (found === undefined) {\n continue;\n }\n else if (found.getType() instanceof basic_1.VoidType && found.getType().getQualifiedName() === undefined) {\n continue;\n }\n let type = found.getType().getQualifiedName()\n ? (_b = found.getType().getQualifiedName()) === null || _b === void 0 ? void 0 : _b.toLowerCase()\n : found.getType().toABAP();\n if (found.getType() instanceof basic_1.ObjectReferenceType) {\n type = found.getType().toABAP();\n }\n if (type === \"\") {\n continue;\n }\n const code = `DATA ${name} TYPE ${type}.\\n` +\n \" \".repeat(node.getFirstToken().getStart().getCol() - 1);\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, node.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, i.getFirstToken().getStart(), i.getLastToken().getEnd(), name);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, i.getFirstToken(), \"Outline DATA\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n outlineCond(low, high, lowFile, highSyntax) {\n var _a, _b;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const i of high.findAllExpressionsRecursive(Expressions.Source)) {\n if (i.getFirstToken().getStr().toUpperCase() !== \"COND\") {\n continue;\n }\n const body = i.findDirectExpression(Expressions.CondBody);\n if (body === undefined) {\n continue;\n }\n const uniqueName = this.uniqueName(i.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n let type = this.findType(i, lowFile, highSyntax);\n if (type === undefined) {\n if (high.get() instanceof Statements.Move\n && high.findDirectExpression(Expressions.Source) === i\n && ((_a = high.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.TargetField)) !== undefined) {\n type = \"LIKE \" + ((_b = high.findDirectExpression(Expressions.Target)) === null || _b === void 0 ? void 0 : _b.concatTokens());\n }\n if (type === undefined) {\n continue;\n }\n }\n else {\n type = \"TYPE \" + type;\n }\n const indent = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const bodyCode = this.buildCondBody(body, uniqueName, indent, lowFile, highSyntax);\n const last = i.findDirectTokenByText(\")\");\n const abap = `DATA ${uniqueName} ${type}.\\n` + bodyCode;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), abap);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, i.getFirstToken().getStart(), last.getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, i.getFirstToken(), \"Downport COND\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n buildCondBody(body, uniqueName, indent, lowFile, highSyntax) {\n let code = \"\";\n let first = true;\n let addElse = true;\n for (const c of body.getChildren()) {\n if (c instanceof nodes_1.TokenNode) {\n switch (c.getFirstToken().getStr().toUpperCase()) {\n case \"WHEN\":\n if (first === true) {\n code += indent + \"IF \";\n first = false;\n }\n else {\n code += indent + \"ELSEIF \";\n }\n break;\n case \"THEN\":\n code += \".\\n\";\n break;\n case \"ELSE\":\n code += indent + \"ELSE.\\n\";\n addElse = false;\n break;\n default:\n throw \"buildCondBody, unexpected token\";\n }\n }\n else if (c.get() instanceof Expressions.Cond) {\n code += c.concatTokens();\n }\n else if (c.get() instanceof Expressions.Let) {\n code += this.outlineLet(c, indent, highSyntax, lowFile);\n }\n else if (c.get() instanceof Expressions.Source) {\n code += indent + \" \" + uniqueName + \" = \" + c.concatTokens() + \".\\n\";\n }\n else if (c.get() instanceof Expressions.Throw) {\n code += indent + \" \" + c.concatTokens().replace(/THROW /i, \"RAISE EXCEPTION NEW \") + \".\\n\";\n }\n else {\n throw \"buildCondBody, unexpected expression, \" + c.get().constructor.name;\n }\n }\n if (addElse) {\n // COND might be called inside a loop\n code += indent + \"ELSE.\\n\";\n code += indent + ` CLEAR ${uniqueName}.\\n`;\n }\n code += indent + \"ENDIF.\\n\";\n code += indent;\n return code;\n }\n outlineConv(low, high, lowFile, highSyntax) {\n var _a;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const i of high.findAllExpressionsRecursive(Expressions.Source)) {\n if (i.getFirstToken().getStr().toUpperCase() !== \"CONV\") {\n continue;\n }\n const end = i.findDirectTokenByText(\")\");\n if (end === undefined) {\n continue;\n }\n const body = (_a = i.findDirectExpression(Expressions.ConvBody)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (body === undefined) {\n continue;\n }\n const uniqueName = this.uniqueName(i.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const type = this.findType(i, lowFile, highSyntax);\n const indent = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const abap = `DATA ${uniqueName} TYPE ${type}.\\n` +\n indent + `${uniqueName} = ${body}.\\n` +\n indent;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), abap);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, i.getFirstToken().getStart(), end.getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, i.getFirstToken(), \"Downport CONV\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n // \"CAST\" to \"?=\"\n outlineCast(low, high, lowFile, highSyntax) {\n var _a;\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const i of high.findAllExpressionsRecursive(Expressions.Cast)) {\n const uniqueName = this.uniqueName(i.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const type = this.findType(i, lowFile, highSyntax, true);\n const body = (_a = i.findDirectExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n const abap = `DATA ${uniqueName} TYPE ${type}.\\n` +\n \" \".repeat(high.getFirstToken().getStart().getCol() - 1) +\n `${uniqueName} ?= ${body}.\\n` +\n \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), abap);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, i.getFirstToken().getStart(), i.getLastToken().getEnd(), uniqueName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, i.getFirstToken(), \"Downport CAST\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n uniqueName(position, filename, highSyntax) {\n const spag = highSyntax.spaghetti.lookupPosition(position, filename);\n if (spag === undefined) {\n const name = \"temprr\" + this.counter;\n this.counter++;\n return name;\n }\n let postfix = \"\";\n if (spag.getIdentifier().stype === _scope_type_1.ScopeType.ClassDefinition) {\n // try making sure this name is not used in subclasses\n const hash = crypto.createHash(\"sha1\").update(spag.getIdentifier().sname).digest(\"hex\");\n postfix = \"_\" + hash.substring(0, 10);\n }\n while (true) {\n const name = \"temp\" + this.counter + postfix;\n const exists = this.existsRecursive(spag, name);\n this.counter++;\n if (exists === false) {\n return name;\n }\n }\n }\n // todo, optimize, the findVariable() and findType() does a lot of redundant checks\n existsRecursive(spag, name) {\n const existsDirect = spag.findVariable(name) || spag.findType(name);\n if (existsDirect) {\n return true;\n }\n for (const child of spag.getChildren()) {\n if (child.findVariable(name) || child.findType(name) || this.existsRecursive(child, name)) {\n return true;\n }\n }\n return false;\n }\n replaceXsdBool(node, lowFile, highSyntax) {\n const spag = highSyntax.spaghetti.lookupPosition(node.getFirstToken().getStart(), lowFile.getFilename());\n for (const r of (spag === null || spag === void 0 ? void 0 : spag.getData().references) || []) {\n if (r.referenceType === _reference_1.ReferenceType.BuiltinMethodReference\n && r.position.getName().toUpperCase() === \"XSDBOOL\") {\n const token = r.position.getToken();\n let source = undefined;\n for (const s of node.findAllExpressionsRecursive(Expressions.Source)) {\n if (s.getFirstToken().getStart().equals(token.getStart())) {\n source = s;\n break;\n }\n }\n const children = source === null || source === void 0 ? void 0 : source.getChildren();\n if (source === undefined || (children === null || children === void 0 ? void 0 : children.length) !== 4) {\n continue;\n }\n // make sure to convert to the correct type, RTTI might be used on the result of XSDBOOL\n const code = \"CONV xsdboolean( boolc( \" + children[2].concatTokens() + \" ) )\";\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, source.getFirstToken().getStart(), source.getLastToken().getEnd(), code);\n return issue_1.Issue.atToken(lowFile, token, \"Use BOOLC\", this.getMetadata().key, this.conf.severity, fix);\n }\n }\n return undefined;\n }\n findMethodCallExpression(node, token) {\n var _a;\n for (const m of node.findAllExpressions(Expressions.MethodCall)) {\n if ((_a = m.findDirectExpression(Expressions.MethodName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStart().equals(token.getStart())) {\n return m;\n }\n }\n return undefined;\n }\n replaceMethodConditional(low, high, lowFile, highSyntax) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n for (const c of high.findAllExpressionsRecursive(Expressions.Compare)) {\n const chain = c.findDirectExpression(Expressions.MethodCallChain);\n if (chain === undefined) {\n continue;\n }\n const concat = chain.concatTokens().toUpperCase();\n if (concat.startsWith(\"LINE_EXISTS( \") || concat.startsWith(\"LINE_INDEX( \")) {\n // these are handled separately\n continue;\n }\n let predicate = false;\n const spag = highSyntax.spaghetti.lookupPosition(high.getFirstToken().getStart(), lowFile.getFilename());\n for (const r of (spag === null || spag === void 0 ? void 0 : spag.getData().references) || []) {\n if (r.referenceType === _reference_1.ReferenceType.BuiltinMethodReference &&\n new _builtin_1.BuiltIn().isPredicate(chain.getFirstToken().getStr().toUpperCase())) {\n predicate = true;\n break;\n }\n }\n const end = chain.getLastToken().getEnd();\n let fix = edit_helper_1.EditHelper.insertAt(lowFile, end, \" IS NOT INITIAL\");\n if (predicate === true) {\n fix = edit_helper_1.EditHelper.insertAt(lowFile, end, \" ) = abap_true\");\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, chain.getFirstToken().getStart(), \"boolc( \");\n fix = edit_helper_1.EditHelper.merge(fix, fix1);\n }\n return issue_1.Issue.atToken(lowFile, chain.getFirstToken(), \"Downport method conditional\", this.getMetadata().key, this.conf.severity, fix);\n }\n return undefined;\n }\n getReference(node, lowFile, _highSyntax) {\n var _a, _b, _c;\n if (!(node.get() instanceof Statements.GetReference)) {\n return undefined;\n }\n const inline = (_a = node.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.InlineData);\n if (inline === undefined) {\n return undefined;\n }\n const targetName = (_b = inline.findDirectExpression(Expressions.TargetField)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n const sourceName = (_c = node.findDirectExpression(Expressions.Source)) === null || _c === void 0 ? void 0 : _c.concatTokens();\n if (targetName === undefined || sourceName === undefined) {\n return undefined;\n }\n const code = `DATA ${targetName} LIKE REF TO ${sourceName}.\\n`;\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, node.getFirstToken().getStart(), code);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, inline.getFirstToken().getStart(), inline.getLastToken().getEnd(), targetName);\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, inline.getFirstToken(), \"Downport, outline DATA ref\", this.getMetadata().key, this.conf.severity, fix);\n }\n replaceContains(node, lowFile, highSyntax) {\n const spag = highSyntax.spaghetti.lookupPosition(node.getFirstToken().getStart(), lowFile.getFilename());\n // only downport if its an single method call condition\n let found = false;\n for (const c of node.findAllExpressionsRecursive(Expressions.Compare)) {\n found = c.findDirectExpression(Expressions.MethodCallChain) !== undefined;\n if (found === true) {\n break;\n }\n }\n if (found === false) {\n return undefined;\n }\n for (const r of (spag === null || spag === void 0 ? void 0 : spag.getData().references) || []) {\n if (r.referenceType !== _reference_1.ReferenceType.BuiltinMethodReference) {\n continue;\n }\n const func = r.position.getName().toUpperCase();\n if (func === \"CONTAINS\") {\n const token = r.position.getToken();\n const expression = this.findMethodCallExpression(node, token);\n if (expression === undefined) {\n continue;\n }\n const sList = expression.findAllExpressions(Expressions.Source).map(e => e.concatTokens());\n if (sList.length !== 2) {\n continue;\n }\n const code = sList[0] + \" CS \" + sList[1];\n const start = expression.getFirstToken().getStart();\n const end = expression.getLastToken().getEnd();\n const fix = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, code);\n return issue_1.Issue.atToken(lowFile, token, \"Downport contains()\", this.getMetadata().key, this.conf.severity, fix);\n }\n }\n return undefined;\n }\n replaceLineFunctions(node, lowFile, highSyntax, highFile) {\n var _a, _b;\n const spag = highSyntax.spaghetti.lookupPosition(node.getFirstToken().getStart(), lowFile.getFilename());\n for (const r of (spag === null || spag === void 0 ? void 0 : spag.getData().references) || []) {\n if (r.referenceType !== _reference_1.ReferenceType.BuiltinMethodReference) {\n continue;\n }\n const func = r.position.getName().toUpperCase();\n if (func === \"LINE_EXISTS\" || func === \"LINE_INDEX\") {\n const token = r.position.getToken();\n const expression = this.findMethodCallExpression(node, token);\n if (expression === undefined) {\n continue;\n }\n let condition = \"\";\n for (const c of ((_a = expression === null || expression === void 0 ? void 0 : expression.findFirstExpression(Expressions.TableExpression)) === null || _a === void 0 ? void 0 : _a.getChildren()) || []) {\n if (c.getFirstToken().getStr() === \"[\" || c.getFirstToken().getStr() === \"]\") {\n continue;\n }\n else if (c.get() instanceof Expressions.ComponentChainSimple && condition === \"\") {\n condition = \"WITH KEY \";\n }\n else if (c.get() instanceof Expressions.Source && condition === \"\") {\n condition = \"INDEX \";\n }\n condition += c.concatTokens() + \" \";\n }\n const tableName = (_b = expression.findFirstExpression(Expressions.Source)) === null || _b === void 0 ? void 0 : _b.concatTokens().split(\"[\")[0];\n const uniqueName = this.uniqueName(node.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const indentation = \" \".repeat(node.getFirstToken().getStart().getCol() - 1);\n const sy = func === \"LINE_EXISTS\" ? \"sy-subrc\" : \"sy-tabix\";\n const code = `DATA ${uniqueName} LIKE sy-subrc.\\n` +\n indentation + `READ TABLE ${tableName} ${condition}TRANSPORTING NO FIELDS.\\n` +\n indentation + uniqueName + ` = ${sy}.\\n` +\n indentation;\n let insertAt = node.getFirstToken().getStart();\n if (node.get() instanceof statements_1.ElseIf) {\n // assumption: no side effects in IF conditions\n insertAt = this.findStartOfIf(node, highFile);\n if (insertAt === undefined) {\n continue;\n }\n }\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, insertAt, code);\n const start = expression.getFirstToken().getStart();\n const end = expression.getLastToken().getEnd();\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, start, end, uniqueName + (func === \"LINE_EXISTS\" ? \" = 0\" : \"\"));\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n return issue_1.Issue.atToken(lowFile, token, \"Replace line function\", this.getMetadata().key, this.conf.severity, fix);\n }\n }\n return undefined;\n }\n findStartOfIf(node, highFile) {\n const structure = highFile.getStructure();\n for (const c of (structure === null || structure === void 0 ? void 0 : structure.findAllStructuresRecursive(Structures.If)) || []) {\n for (const ei of c.findDirectStructures(Structures.ElseIf)) {\n if (ei.getFirstStatement() === node) {\n return c.getFirstToken().getStart();\n }\n }\n }\n return undefined;\n }\n newToCreateObject(low, high, lowFile, highSyntax) {\n if (!(low.get() instanceof _statement_1.Unknown)) {\n return undefined;\n }\n const source = high.findDirectExpression(Expressions.Source);\n let fix = undefined;\n if (high.get() instanceof Statements.Move\n && source\n && source.getFirstToken().getStr().toUpperCase() === \"NEW\") {\n const target = high.findDirectExpression(Expressions.Target);\n const found = source === null || source === void 0 ? void 0 : source.findFirstExpression(Expressions.NewObject);\n // must be at top level of the source for quickfix to work(todo: handle more scenarios)\n if (target\n && found\n && source.concatTokens() === found.concatTokens()\n && target.findDirectExpression(Expressions.InlineData) === undefined) {\n const abap = this.newParameters(found, target.concatTokens(), highSyntax, lowFile);\n if (abap !== undefined) {\n fix = edit_helper_1.EditHelper.replaceRange(lowFile, high.getFirstToken().getStart(), high.getLastToken().getEnd(), abap);\n }\n }\n }\n if (fix === undefined && high.findAllExpressions(Expressions.NewObject)) {\n const found = high.findFirstExpression(Expressions.NewObject);\n if (found === undefined) {\n return undefined;\n }\n const name = this.uniqueName(found.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);\n const abap = this.newParameters(found, name, highSyntax, lowFile);\n if (abap === undefined) {\n return undefined;\n }\n const type = this.findType(found, lowFile, highSyntax);\n const indentation = \" \".repeat(high.getFirstToken().getStart().getCol() - 1);\n const data = `DATA ${name} TYPE REF TO ${type}.\\n` +\n indentation + abap + \"\\n\" +\n indentation;\n if (found.getFirstToken().getStart().equals(high.getFirstToken().getStart())\n && found.getLastToken().getEnd().equals(high.getLastToken().getStart())) {\n // full statement = standalone NEW expression\n fix = edit_helper_1.EditHelper.replaceRange(lowFile, high.getFirstToken().getStart(), high.getLastToken().getEnd(), abap);\n }\n else {\n const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, high.getFirstToken().getStart(), data);\n const fix2 = edit_helper_1.EditHelper.replaceRange(lowFile, found.getFirstToken().getStart(), found.getLastToken().getEnd(), name);\n fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n }\n }\n if (fix) {\n return issue_1.Issue.atToken(lowFile, high.getFirstToken(), \"Use CREATE OBJECT instead of NEW\", this.getMetadata().key, this.conf.severity, fix);\n }\n else {\n return undefined;\n }\n }\n newParameters(found, name, highSyntax, lowFile) {\n var _a, _b, _c;\n const typeToken = (_a = found.findDirectExpression(Expressions.TypeNameOrInfer)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n let extra = (typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr()) === \"#\" ? \"\" : \" TYPE \" + (typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStr());\n const parameters = found.findFirstExpression(Expressions.ParameterListS);\n if (parameters) {\n extra = parameters ? extra + \" EXPORTING \" + parameters.concatTokens() : extra;\n }\n else if (typeToken) {\n const source = (_b = found.findDirectExpression(Expressions.Source)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (source) {\n // find the default parameter name for the constructor\n const spag = highSyntax.spaghetti.lookupPosition(typeToken === null || typeToken === void 0 ? void 0 : typeToken.getStart(), lowFile.getFilename());\n let cdef = undefined;\n for (const r of (spag === null || spag === void 0 ? void 0 : spag.getData().references) || []) {\n if ((r.referenceType === _reference_1.ReferenceType.InferredType\n || r.referenceType === _reference_1.ReferenceType.ObjectOrientedReference)\n && r.resolved && r.position.getStart().equals(typeToken.getStart())) {\n cdef = r.resolved;\n }\n }\n if (cdef && cdef.getMethodDefinitions === undefined) {\n return undefined; // something wrong\n }\n const importing = (_c = cdef === null || cdef === void 0 ? void 0 : cdef.getMethodDefinitions().getByName(\"CONSTRUCTOR\")) === null || _c === void 0 ? void 0 : _c.getParameters().getDefaultImporting();\n if (importing) {\n extra += \" EXPORTING \" + importing + \" = \" + source;\n }\n else if (spag === undefined) {\n extra += \" SpagUndefined\";\n }\n else if (cdef === undefined) {\n extra += \" ClassDefinitionNotFound\";\n }\n else {\n extra += \" SomeError\";\n }\n }\n }\n const abap = `CREATE OBJECT ${name}${extra}.`;\n return abap;\n }\n}\nexports.Downport = Downport;\n//# sourceMappingURL=downport.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/downport.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/easy_to_find_messages.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/easy_to_find_messages.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EasyToFindMessages = exports.EasyToFindMessagesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass EasyToFindMessagesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.EasyToFindMessagesConf = EasyToFindMessagesConf;\nclass EasyToFindMessages {\n constructor() {\n this.conf = new EasyToFindMessagesConf();\n }\n getMetadata() {\n return {\n key: \"easy_to_find_messages\",\n title: \"Easy to find messages\",\n shortDescription: `Make messages easy to find`,\n extendedInformation: `All messages must be statically referenced exactly once\r\n\r\nOnly MESSAGE and RAISE statments are counted as static references\r\n\r\nAlso see rule \"message_exists\"\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#make-messages-easy-to-find`,\n tags: [_irule_1.RuleTag.Styleguide],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.msagReferences = reg.getMSAGReferences();\n // the SyntaxLogic builds the references\n for (const obj of reg.getObjects()) {\n if (obj instanceof _abap_object_1.ABAPObject) {\n new syntax_1.SyntaxLogic(reg, obj).run();\n }\n }\n return this;\n }\n run(object) {\n const issues = [];\n if (object.getType() === \"MSAG\") {\n const msag = object;\n for (const message of msag.getMessages()) {\n const where = this.msagReferences.listByMessage(msag.getName().toUpperCase(), message.getNumber());\n if (where.length === 0) {\n const text = `Message ${message.getNumber()} not statically referenced`;\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(object.getFiles()[0], position, text, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n else if (where.length >= 2) {\n const text = `Message ${message.getNumber()} referenced more than once`;\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(object.getFiles()[0], position, text, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n return issues;\n }\n}\nexports.EasyToFindMessages = EasyToFindMessages;\n//# sourceMappingURL=easy_to_find_messages.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/easy_to_find_messages.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/empty_line_in_statement.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/empty_line_in_statement.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EmptyLineinStatement = exports.EmptyLineinStatementConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass EmptyLineinStatementConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Allow changed empty lines in chanined statements */\n this.allowChained = false;\n }\n}\nexports.EmptyLineinStatementConf = EmptyLineinStatementConf;\nclass EmptyLineinStatement extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new EmptyLineinStatementConf();\n }\n getMetadata() {\n return {\n key: \"empty_line_in_statement\",\n title: \"Find empty lines in statements\",\n shortDescription: `Checks that statements do not contain empty lines.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-obsess-with-separating-blank-lines\r\n\r\nhttps://docs.abapopenchecks.org/checks/41/`,\n tags: [_irule_1.RuleTag.Quickfix, _irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],\n badExample: `WRITE\\n\\nhello.`,\n goodExample: `WRITE hello.`,\n };\n }\n getMessage() {\n return \"Remove empty line in statement\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n for (const s of file.getStatements()) {\n if (s.get() instanceof _statement_1.Unknown\n || s.get() instanceof _statement_1.NativeSQL) {\n return []; // skip the file if there are parser errors or native/sqlscript\n }\n }\n let prevLine = undefined;\n for (const t of file.getTokens()) {\n if (prevLine === undefined && t instanceof tokens_1.Comment) {\n continue;\n }\n else if (prevLine === undefined) {\n prevLine = t.getRow();\n }\n if (prevLine && t.getRow() - prevLine >= 2) {\n const fix = edit_helper_1.EditHelper.deleteRange(file, new position_1.Position(prevLine + 1, 1), t.getStart());\n const issue = issue_1.Issue.atToken(file, t, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n if (t instanceof tokens_1.Punctuation && t.getStr() === \".\") {\n prevLine = undefined;\n }\n else if (this.conf.allowChained === true && t instanceof tokens_1.Punctuation && t.getStr() === \",\") {\n prevLine = undefined;\n }\n else {\n prevLine = t.getRow();\n }\n }\n return issues;\n }\n}\nexports.EmptyLineinStatement = EmptyLineinStatement;\n//# sourceMappingURL=empty_line_in_statement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/empty_line_in_statement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/empty_statement.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/empty_statement.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EmptyStatement = exports.EmptyStatementConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass EmptyStatementConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.EmptyStatementConf = EmptyStatementConf;\nclass EmptyStatement extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new EmptyStatementConf();\n }\n getMetadata() {\n return {\n key: \"empty_statement\",\n title: \"Remove empty statement\",\n shortDescription: `Checks for empty statements (an empty statement is a single dot)`,\n tags: [_irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const statements = file.getStatements();\n let previousEnd = new position_1.Position(1, 1);\n for (const sta of statements) {\n if (sta.get() instanceof _statement_1.Empty) {\n const token = sta.getFirstToken();\n const fix = edit_helper_1.EditHelper.deleteRange(file, previousEnd, token.getEnd());\n const issue = issue_1.Issue.atStatement(file, sta, \"Remove empty statement\", this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n previousEnd = sta.getLastToken().getEnd();\n }\n return issues;\n }\n}\nexports.EmptyStatement = EmptyStatement;\n//# sourceMappingURL=empty_statement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/empty_statement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/empty_structure.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/empty_structure.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EmptyStructure = exports.EmptyStructureConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass EmptyStructureConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Checks for empty LOOP blocks */\n this.loop = true;\n /** Checks for empty IF blocks */\n this.if = true;\n /** Checks for empty WHILE blocks */\n this.while = true;\n /** Checks for empty CASE blocks */\n this.case = true;\n /** Checks for empty SELECT blockss */\n this.select = true;\n /** Checks for empty DO blocks */\n this.do = true;\n /** Checks for empty AT blocks */\n this.at = true;\n /** Checks for empty TRY blocks */\n this.try = true;\n /** Checks for empty WHEN blocks */\n this.when = true;\n // todo, other category containing ELSE\n }\n}\nexports.EmptyStructureConf = EmptyStructureConf;\nclass EmptyStructure extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new EmptyStructureConf();\n }\n getMetadata() {\n return {\n key: \"empty_structure\",\n title: \"Find empty blocks\",\n shortDescription: `Checks that the code does not contain empty blocks.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#no-empty-if-branches`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(name) {\n return \"Empty block, add code: \" + name;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n const candidates = [];\n if (this.getConfig().loop === true) {\n candidates.push(...stru.findAllStructuresRecursive(Structures.Loop));\n }\n if (this.getConfig().while === true) {\n candidates.push(...stru.findAllStructuresRecursive(Structures.While));\n }\n if (this.getConfig().case === true) {\n candidates.push(...stru.findAllStructuresRecursive(Structures.Case));\n }\n if (this.getConfig().select === true) {\n candidates.push(...stru.findAllStructuresRecursive(Structures.Select));\n }\n if (this.getConfig().do === true) {\n candidates.push(...stru.findAllStructuresRecursive(Structures.Do));\n }\n if (this.getConfig().at === true) {\n candidates.push(...stru.findAllStructuresRecursive(Structures.At));\n candidates.push(...stru.findAllStructuresRecursive(Structures.AtFirst));\n candidates.push(...stru.findAllStructuresRecursive(Structures.AtLast));\n }\n for (const l of candidates) {\n if (l.getChildren().length === 2) {\n const token = l.getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, this.getDescription(l.get().constructor.name), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.getConfig().try === true) {\n const tries = stru.findAllStructuresRecursive(Structures.Try);\n for (const t of tries) {\n const normal = t.findDirectStructure(Structures.Body);\n if (normal === undefined) {\n const token = t.getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, this.getDescription(t.get().constructor.name), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n if (this.getConfig().if === true) {\n const tries = stru.findAllStructuresRecursive(Structures.If)\n .concat(stru.findAllStructuresRecursive(Structures.Else))\n .concat(stru.findAllStructuresRecursive(Structures.ElseIf));\n for (const t of tries) {\n const normal = t.findDirectStructure(Structures.Body);\n if (normal === undefined) {\n const token = t.getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, this.getDescription(t.get().constructor.name), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n if (this.getConfig().when === true) {\n const tries = stru.findAllStructuresRecursive(Structures.When);\n for (const t of tries) {\n if (t.getChildren().length === 1) {\n const token = t.getFirstToken();\n const message = this.getDescription(t.get().constructor.name);\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n return issues;\n }\n}\nexports.EmptyStructure = EmptyStructure;\n//# sourceMappingURL=empty_structure.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/empty_structure.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/exit_or_check.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/exit_or_check.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExitOrCheck = exports.ExitOrCheckConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass ExitOrCheckConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.allowExit = false;\n this.allowCheck = false;\n }\n}\nexports.ExitOrCheckConf = ExitOrCheckConf;\nclass ExitOrCheck extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ExitOrCheckConf();\n }\n getMetadata() {\n return {\n key: \"exit_or_check\",\n title: \"Find EXIT or CHECK outside loops\",\n shortDescription: `Detects usages of EXIT or CHECK statements outside of loops.\r\nUse RETURN to leave procesing blocks instead.`,\n extendedInformation: `https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abenleave_processing_blocks.htm\r\nhttps://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapcheck_processing_blocks.htm\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#check-vs-return`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stack = [];\n for (const statement of file.getStatements()) {\n const get = statement.get();\n if (get instanceof Statements.Loop\n || get instanceof Statements.While\n || get instanceof Statements.LoopAtScreen\n || get instanceof Statements.SelectLoop\n || get instanceof Statements.Do) {\n stack.push(statement);\n }\n else if (get instanceof Statements.EndLoop\n || get instanceof Statements.EndWhile\n || get instanceof Statements.EndSelect\n || get instanceof Statements.EndDo) {\n stack.pop();\n }\n else if (this.conf.allowCheck === false && get instanceof Statements.Check && stack.length === 0) {\n const message = \"CHECK is not allowed outside of loops\";\n let tokensString = statement.concatTokens();\n tokensString = tokensString.slice(statement.getFirstToken().getEnd().getCol());\n const replacement = \"IF NOT \" + tokensString + \"\\n RETURN.\\nENDIF.\";\n const fix = edit_helper_1.EditHelper.replaceRange(file, statement.getFirstToken().getStart(), statement.getLastToken().getEnd(), replacement);\n const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n else if (this.conf.allowExit === false && get instanceof Statements.Exit && stack.length === 0) {\n const message = \"EXIT is not allowed outside of loops\";\n const fix = edit_helper_1.EditHelper.replaceToken(file, statement.getFirstToken(), \"RETURN\");\n const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.ExitOrCheck = ExitOrCheck;\n//# sourceMappingURL=exit_or_check.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/exit_or_check.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/expand_macros.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/expand_macros.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExpandMacros = exports.ExpandMacrosConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass ExpandMacrosConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ExpandMacrosConf = ExpandMacrosConf;\nclass ExpandMacros extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ExpandMacrosConf();\n }\n getMetadata() {\n return {\n key: \"expand_macros\",\n title: \"Expand Macros\",\n shortDescription: `Allows expanding macro calls with quick fixes`,\n extendedInformation: `Macros: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abenmacros_guidl.htm\r\n\r\nNote that macros/DEFINE cannot be used in the ABAP Cloud programming model`,\n badExample: `DEFINE _hello.\r\n WRITE 'hello'.\r\nEND-OF-DEFINITION.\r\n_hello.`,\n goodExample: `WRITE 'hello'.`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.Upport],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const message = \"Expand macro call\";\n const statements = file.getStatements();\n for (let i = 0; i < statements.length; i++) {\n const statementNode = statements[i];\n const statement = statementNode.get();\n if (!(statement instanceof _statement_1.MacroCall)) {\n continue;\n }\n let replace = \"\";\n for (let j = i + 1; j < statements.length; j++) {\n const sub = statements[j];\n if (sub.getFirstToken().getStart() instanceof position_1.VirtualPosition) {\n if (sub.get() instanceof _statement_1.MacroCall) {\n continue;\n }\n if (replace !== \"\") {\n replace += \"\\n\";\n }\n replace += sub.concatTokensVirtual();\n }\n else {\n break;\n }\n }\n if (statementNode.getColon()) {\n replace += \"\\n\";\n }\n const fix1 = edit_helper_1.EditHelper.deleteStatement(file, statementNode);\n const fix2 = edit_helper_1.EditHelper.insertAt(file, statementNode.getStart(), replace);\n const fix = edit_helper_1.EditHelper.merge(fix1, fix2);\n issues.push(issue_1.Issue.atStatement(file, statementNode, message, this.getMetadata().key, this.conf.severity, fix));\n // only one fix at a time per file\n break;\n }\n return issues;\n }\n}\nexports.ExpandMacros = ExpandMacros;\n//# sourceMappingURL=expand_macros.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/expand_macros.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/exporting.js": +/*!******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/exporting.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Exporting = exports.ExportingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass ExportingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ExportingConf = ExportingConf;\nclass Exporting extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ExportingConf();\n }\n getMetadata() {\n return {\n key: \"exporting\",\n title: \"EXPORTING can be omitted\",\n shortDescription: `Detects EXPORTING statements which can be omitted.`,\n badExample: `call_method( EXPORTING foo = bar ).`,\n goodExample: `call_method( foo = bar ).`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#omit-the-optional-keyword-exporting\r\nhttps://docs.abapopenchecks.org/checks/30/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"The EXPORTING keyword can be omitted\";\n }\n runParsed(file, obj) {\n let issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n for (const statement of file.getStatements()) {\n const expressions = statement.findAllExpressionsMulti([expressions_1.MethodCallBody, expressions_1.MethodCall]);\n for (const b of expressions) {\n if (b.get() instanceof expressions_1.MethodCallBody) {\n if (b.getFirstToken().getStr() !== \"(\") {\n continue;\n }\n issues = issues.concat(this.check(b, file));\n }\n else if (b.get() instanceof expressions_1.MethodCall) {\n issues = issues.concat(this.check(b, file));\n }\n }\n }\n return issues;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n check(node, file) {\n const e = node.findFirstExpression(expressions_1.MethodParameters);\n if (e === undefined) {\n return [];\n }\n if (e.getFirstToken().getStr().toUpperCase() !== \"EXPORTING\") {\n return [];\n }\n const tokens = e.getDirectTokens();\n const strings = tokens.map(t => t.getStr().toUpperCase());\n if (strings[0] === \"EXPORTING\"\n && strings.includes(\"IMPORTING\") === false\n && strings.includes(\"RECEIVING\") === false\n && strings.includes(\"EXCEPTIONS\") === false\n && strings.includes(\"CHANGING\") === false) {\n const next = e.getAllTokens()[1];\n const fix = edit_helper_1.EditHelper.deleteRange(file, tokens[0].getStart(), next.getStart());\n const issue = issue_1.Issue.atToken(file, tokens[0], this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n return [issue];\n }\n return [];\n }\n}\nexports.Exporting = Exporting;\n//# sourceMappingURL=exporting.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/exporting.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ForbiddenIdentifier = exports.ForbiddenIdentifierConf = void 0;\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass ForbiddenIdentifierConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** List of forbideen identifiers, array of string regex\n * @uniqueItems true\n */\n this.check = [];\n }\n}\nexports.ForbiddenIdentifierConf = ForbiddenIdentifierConf;\nclass ForbiddenIdentifier extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ForbiddenIdentifierConf();\n }\n getMetadata() {\n return {\n key: \"forbidden_identifier\",\n title: \"Forbidden Identifier\",\n shortDescription: `Forbid use of specified identifiers, list of regex.`,\n extendedInformation: `Used in the transpiler to find javascript keywords in ABAP identifiers,\r\nhttps://github.com/abaplint/transpiler/blob/bda94b8b56e2b7f2f87be2168f12361aa530220e/packages/transpiler/src/validation.ts#L44`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.check === undefined) {\n this.conf.check = [];\n }\n }\n runParsed(file) {\n if (this.conf.check.length === 0) {\n return [];\n }\n let ret = [];\n for (const s of file.getStatements()) {\n ret = ret.concat(this.traverse(s, file));\n }\n return ret;\n }\n traverse(node, file) {\n let ret = [];\n for (const c of node.getChildren()) {\n if (c instanceof nodes_1.TokenNodeRegex) {\n ret = ret.concat(this.check(c.get(), file));\n }\n else if (c instanceof nodes_1.TokenNode) {\n continue;\n }\n else {\n ret = ret.concat(this.traverse(c, file));\n }\n }\n return ret;\n }\n check(token, file) {\n const str = token.getStr();\n const ret = [];\n for (const c of this.conf.check) {\n const reg = new RegExp(c, \"i\");\n if (reg.exec(str)) {\n const message = \"Identifer \\\"\" + str + \"\\\" not allowed\";\n ret.push(issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity));\n }\n }\n return ret;\n }\n}\nexports.ForbiddenIdentifier = ForbiddenIdentifier;\n//# sourceMappingURL=forbidden_identifier.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/forbidden_pseudo_and_pragma.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/forbidden_pseudo_and_pragma.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ForbiddenPseudoAndPragma = exports.ForbiddenPseudoAndPragmaConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass ForbiddenPseudoAndPragmaConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** @uniqueItems true */\n this.pseudo = [`\"#EC *`];\n /** @uniqueItems true */\n this.pragmas = [];\n this.ignoreGlobalClassDefinition = false;\n this.ignoreGlobalInterface = false;\n }\n}\nexports.ForbiddenPseudoAndPragmaConf = ForbiddenPseudoAndPragmaConf;\nclass ForbiddenPseudoAndPragma extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ForbiddenPseudoAndPragmaConf();\n }\n getMetadata() {\n return {\n key: \"forbidden_pseudo_and_pragma\",\n title: \"Forbidden pseudo comments and pragma\",\n shortDescription: `Checks for unwanted pseudo comments and pragma`,\n tags: [_irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `DATA i TYPE i. \"#EC *`,\n goodExample: `DATA i TYPE i.`,\n };\n }\n getConfig() {\n // @ts-ignore\n if (this.conf === true) {\n this.conf = new ForbiddenPseudoAndPragmaConf();\n }\n if (this.conf.pseudo === undefined) {\n this.conf.pseudo = [];\n }\n if (this.conf.pragmas === undefined) {\n this.conf.pragmas = [];\n }\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n // todo, this method could use some refactoring\n // note that the top loop is on the configuration, which makes the default config run fast\n runParsed(file) {\n let skip = false;\n const issues = [];\n for (const p of this.conf.pragmas) {\n for (const s of file.getStatements()) {\n if (this.conf.ignoreGlobalClassDefinition === true) {\n if (s.get() instanceof Statements.ClassDefinition\n && s.findFirstExpression(Expressions.ClassGlobal)) {\n skip = true;\n continue;\n }\n else if (skip === true && s.get() instanceof Statements.EndClass) {\n skip = false;\n continue;\n }\n }\n if (this.conf.ignoreGlobalInterface === true) {\n if (s.get() instanceof Statements.Interface\n && s.findFirstExpression(Expressions.ClassGlobal)) {\n skip = true;\n continue;\n }\n else if (skip === true && s.get() instanceof Statements.EndInterface) {\n skip = false;\n continue;\n }\n }\n if (skip === true) {\n continue;\n }\n const list = s.getPragmas();\n const found = list.find((a) => a.getStr().toUpperCase() === p.toUpperCase());\n if (found) {\n const fix = edit_helper_1.EditHelper.deleteToken(file, found);\n const message = \"Forbidden pragma\";\n issues.push(issue_1.Issue.atToken(file, found, message, this.getMetadata().key, this.conf.severity, fix));\n }\n }\n }\n skip = false;\n for (const p of this.conf.pseudo) {\n for (const s of file.getStatements()) {\n if (this.conf.ignoreGlobalClassDefinition === true) {\n if (s.get() instanceof Statements.ClassDefinition\n && s.findFirstExpression(Expressions.ClassGlobal)) {\n skip = true;\n continue;\n }\n else if (skip === true && s.get() instanceof Statements.EndClass) {\n skip = false;\n continue;\n }\n }\n if (this.conf.ignoreGlobalInterface === true) {\n if (s.get() instanceof Statements.Interface\n && s.findFirstExpression(Expressions.ClassGlobal)) {\n skip = true;\n continue;\n }\n else if (skip === true && s.get() instanceof Statements.EndInterface) {\n skip = false;\n continue;\n }\n }\n if (skip === true) {\n continue;\n }\n if (!(s.get() instanceof _statement_1.Comment)) {\n continue;\n }\n if (s.concatTokens().toUpperCase().includes(p.toUpperCase())) {\n const fix = edit_helper_1.EditHelper.deleteStatement(file, s);\n const message = \"Forbidden pseudo comment\";\n issues.push(issue_1.Issue.atStatement(file, s, message, this.getMetadata().key, this.conf.severity, fix));\n }\n }\n }\n return issues;\n }\n}\nexports.ForbiddenPseudoAndPragma = ForbiddenPseudoAndPragma;\n//# sourceMappingURL=forbidden_pseudo_and_pragma.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/forbidden_pseudo_and_pragma.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/forbidden_void_type.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/forbidden_void_type.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ForbiddenVoidType = exports.ForbiddenVoidTypeConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst void_type_1 = __webpack_require__(/*! ../abap/types/basic/void_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/void_type.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass ForbiddenVoidTypeConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** List of forbidden void types, array of string regex, case in-sensitive\n * @uniqueItems true\n */\n this.check = [];\n }\n}\nexports.ForbiddenVoidTypeConf = ForbiddenVoidTypeConf;\nclass ForbiddenVoidType {\n constructor() {\n this.conf = new ForbiddenVoidTypeConf();\n }\n getMetadata() {\n return {\n key: \"forbidden_void_type\",\n title: \"Forbidden Void Types\",\n shortDescription: `Avoid usage of specified void types.`,\n extendedInformation: `Inspiration:\r\nBOOLEAN, BOOLE_D, CHAR01, CHAR1, CHAR10, CHAR12, CHAR128, CHAR2, CHAR20, CHAR4, CHAR70,\r\nDATS, TIMS, DATUM, FLAG, INT4, NUMC3, NUMC4, SAP_BOOL, TEXT25, TEXT80, X255, XFELD`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.check === undefined) {\n this.conf.check = [];\n }\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject) || this.conf.check.length === 0) {\n return [];\n }\n return this.traverse(new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop());\n }\n ///////////////\n traverse(node) {\n var _a, _b, _c;\n let ret = [];\n const message = \"Forbidden void type: \";\n if (node.getIdentifier().stype !== _scope_type_1.ScopeType.BuiltIn) {\n for (const r of node.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.ObjectOrientedVoidReference\n && ((_a = r.extra) === null || _a === void 0 ? void 0 : _a.ooName) !== undefined\n && this.isForbiddenName((_b = r.extra) === null || _b === void 0 ? void 0 : _b.ooName)) {\n ret.push(issue_1.Issue.atIdentifier(r.position, message + ((_c = r.extra) === null || _c === void 0 ? void 0 : _c.ooName), this.getMetadata().key, this.conf.severity));\n }\n if ((r.referenceType === _reference_1.ReferenceType.VoidType\n || r.referenceType === _reference_1.ReferenceType.TableVoidReference)\n && this.isForbiddenName(r.position.getName())) {\n ret.push(issue_1.Issue.atIdentifier(r.position, message + r.position.getName(), this.getMetadata().key, this.conf.severity));\n }\n }\n }\n for (const c of node.getChildren()) {\n ret = ret.concat(this.traverse(c));\n }\n return ret;\n }\n isForbiddenType(type) {\n if (type instanceof basic_1.StructureType) {\n return type.getComponents().some(c => this.isForbiddenType(c.type));\n }\n else if (!(type instanceof void_type_1.VoidType)) {\n return false;\n }\n const name = type.getVoided();\n return this.isForbiddenName(name);\n }\n isForbiddenName(name) {\n if (name === undefined) {\n return false;\n }\n for (const c of this.conf.check) {\n const reg = new RegExp(c, \"i\");\n const match = reg.test(name);\n if (match === true) {\n return true;\n }\n }\n return false;\n }\n}\nexports.ForbiddenVoidType = ForbiddenVoidType;\n//# sourceMappingURL=forbidden_void_type.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/forbidden_void_type.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/form_tables_obsolete.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/form_tables_obsolete.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormTablesObsolete = exports.FormTablesObsoleteConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass FormTablesObsoleteConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.FormTablesObsoleteConf = FormTablesObsoleteConf;\nclass FormTablesObsolete extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new FormTablesObsoleteConf();\n }\n getMetadata() {\n return {\n key: \"form_tables_obsolete\",\n title: \"TABLES parameters are obsolete\",\n shortDescription: `Checks for TABLES parameters in forms.`,\n extendedInformation: `https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapform_tables.htm`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"FORM TABLES parameters are obsolete\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const ret = [];\n const stru = file.getStructure();\n if (obj instanceof objects_1.Class || stru === undefined) {\n return ret;\n }\n for (const form of stru.findAllExpressions(Expressions.FormTables)) {\n const token = form.getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n return ret;\n }\n}\nexports.FormTablesObsolete = FormTablesObsolete;\n//# sourceMappingURL=form_tables_obsolete.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/form_tables_obsolete.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/fully_type_constants.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/fully_type_constants.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FullyTypeConstants = exports.FullyTypeConsantsConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass FullyTypeConsantsConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Add check for implicit data definition, require full typing. */\n this.checkData = true;\n }\n}\nexports.FullyTypeConsantsConf = FullyTypeConsantsConf;\nclass FullyTypeConstants extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new FullyTypeConsantsConf();\n }\n getMetadata() {\n return {\n key: \"fully_type_constants\",\n title: \"Fully type constants\",\n shortDescription: `Checks constants for full typing - no implicit typing allowed.`,\n badExample: \"CONSTANTS foo VALUE 'a'.\",\n goodExample: \"CONSTANTS foo TYPE c LENGTH 1 VALUE 'a'.\",\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(type) {\n return `Fully type ${type}, no implicit typing`;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a, _b;\n const issues = [];\n for (const stat of file.getStatements()) {\n if ((stat.get() instanceof Statements.Constant\n || (this.conf.checkData === true && stat.get() instanceof Statements.Data))\n && (!this.isTyped(stat))) {\n const type = stat.get() instanceof Statements.Constant ? \"constant definition\" : \"data definition\";\n let token = (_a = stat.findFirstExpression(expressions_1.NamespaceSimpleName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if (token === undefined) {\n token = (_b = stat.findFirstExpression(expressions_1.DefinitionName)) === null || _b === void 0 ? void 0 : _b.getFirstToken();\n }\n if (token === undefined) {\n throw new Error(\"fully type constants, unexpected node\");\n }\n issues.push(issue_1.Issue.atToken(file, token, this.getDescription(type), this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n isTyped(stat) {\n return (stat.findFirstExpression(expressions_1.Type) || stat.findFirstExpression(expressions_1.TypeTable));\n }\n}\nexports.FullyTypeConstants = FullyTypeConstants;\n//# sourceMappingURL=fully_type_constants.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/fully_type_constants.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/fully_type_itabs.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/fully_type_itabs.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FullyTypeITabs = exports.FullyTypeITabsConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass FullyTypeITabsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.FullyTypeITabsConf = FullyTypeITabsConf;\nclass FullyTypeITabs extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new FullyTypeITabsConf();\n }\n getMetadata() {\n return {\n key: \"fully_type_itabs\",\n title: \"Fully type internal tables\",\n shortDescription: `No implict table types or table keys`,\n badExample: `DATA lt_foo TYPE TABLE OF ty.\r\nDATA lt_bar TYPE STANDARD TABLE OF ty.`,\n goodExample: `DATA lt_foo TYPE STANDARD TABLE OF ty WITH EMPTY KEY.`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n for (const statement of file.getStatements()) {\n if (!(statement.get() instanceof Statements.Data)) {\n continue;\n }\n const tt = statement.findFirstExpression(Expressions.TypeTable);\n if (tt === undefined) {\n continue;\n }\n const concat = tt.concatTokens().toUpperCase();\n if (concat.includes(\"TYPE TABLE OF\")) {\n const message = \"Specify table type\";\n issues.push(issue_1.Issue.atPosition(file, tt.getFirstToken().getStart(), message, this.getMetadata().key, this.conf.severity));\n }\n else if (concat.includes(\" WITH \") === false && concat.includes(\" RANGE OF \") === false) {\n const message = \"Specify table key\";\n issues.push(issue_1.Issue.atPosition(file, tt.getFirstToken().getStart(), message, this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.FullyTypeITabs = FullyTypeITabs;\n//# sourceMappingURL=fully_type_itabs.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/fully_type_itabs.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/function_module_recommendations.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/function_module_recommendations.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionModuleRecommendations = exports.FunctionModuleRecommendationsConf = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass FunctionModuleRecommendationsConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Tuple of Function Module Name to be replaced, the recommended alternative and\n * the version from which the recommendation is valid.\n * @uniqueItems true\n */\n this.recommendations = [\n { name: \"CALCULATE_HASH_FOR_RAW\", replace: \"use CL_ABAP_HMAC or CL_ABAP_MESSAGE_DIGEST\" },\n { name: \"CCU_TIMESTAMP_DIFFERENCE\", replace: \"use CL_ABAP_TSTMP\" },\n { name: \"ECATT_CONV_XSTRING_TO_STRING\", replace: \"use CL_BINARY_CONVERT\" },\n { name: \"F4_FILENAME\", replace: \"use CL_GUI_FRONTEND_SERVICES\" },\n { name: \"FUNCTION_EXISTS\", replace: \"surround with try-catch CX_SY_DYN_CALL_ILLEGAL_METHOD instead\" },\n { name: \"GUI_DOWNLOAD\", replace: \"use CL_GUI_FRONTEND_SERVICES\" },\n { name: \"GUI_UPLOAD\", replace: \"use CL_GUI_FRONTEND_SERVICES\" },\n { name: \"GUID_CREATE\", replace: \"use CL_SYSTEM_UUID\" },\n { name: \"IGN_TIMESTAMP_DIFFERENCE\", replace: \"use CL_ABAP_TSTMP\" },\n { name: \"IGN_TIMESTAMP_PLUSMINUS\", replace: \"use CL_ABAP_TSTMP\" },\n { name: \"ISM_SD_GET_PRICING_CONDITIONS\", replace: \"use CL_PRC_RESULT_FACTORY as per note 2220005\" },\n { name: \"JOB_CREATE\", replace: \"use CL_BP_ABAP_JOB\" },\n { name: \"JOB_SUBMIT\", replace: \"use CL_BP_ABAP_JOB\" },\n { name: \"POPUP_TO_CONFIRM_STEP\", replace: \"use POPUP_TO_CONFIRM\" },\n { name: \"POPUP_TO_DECIDE\", replace: \"use POPUP_TO_CONFIRM\" },\n { name: \"POPUP_TO_GET_VALUE\", replace: \"use POPUP_GET_VALUES\" },\n { name: \"REUSE_ALV_GRID_DISPLAY\", replace: \"use CL_SALV_TABLE=>FACTORY or CL_GUI_ALV_GRID\" },\n { name: \"ROUND\", replace: \"use built in function: round()\" },\n { name: \"SAPGUI_PROGRESS_INDICATOR\", replace: \"use CL_PROGRESS_INDICATOR\" },\n { name: \"SCMS_BASE64_DECODE_STR\", replace: \"use class CL_HTTP_UTILITY methods\" },\n { name: \"SCMS_STRING_TO_XSTRING\", replace: \"use CL_BINARY_CONVERT\" },\n { name: \"SO_NEW_DOCUMENT_ATT_SEND_API1\", replace: \"use CL_BCS\" },\n { name: \"SSFC_BASE64_DECODE\", replace: \"use class CL_HTTP_UTILITY methods\" },\n { name: \"SSFC_BASE64_ENCODE\", replace: \"use class CL_HTTP_UTILITY methods\" },\n { name: \"SUBST_GET_FILE_LIST\", replace: \"see note 1686357\" },\n { name: \"WS_FILENAME_GET\", replace: \"use CL_GUI_FRONTEND_SERVICES\" },\n ];\n }\n}\nexports.FunctionModuleRecommendationsConf = FunctionModuleRecommendationsConf;\nclass FunctionModuleRecommendations extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new FunctionModuleRecommendationsConf();\n }\n getMetadata() {\n return {\n key: \"function_module_recommendations\",\n title: \"Function Module Recommendations\",\n shortDescription: `Suggests replacements for various function modules`,\n extendedInformation: `https://docs.abapopenchecks.org/checks/53/`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n if (!this.conf.recommendations) {\n return issues;\n }\n const configVersion = this.reg.getConfig().getVersion();\n for (const exNode of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(expressions_1.FunctionName)) || []) {\n const token = exNode.getFirstToken();\n let funcName = token.getStr().toUpperCase();\n // only check constant FM names\n if (!funcName.startsWith(\"'\")) {\n continue;\n }\n // remove leading and trailing single quote\n funcName = funcName.slice(1, funcName.length - 1);\n const index = this.conf.recommendations.findIndex(i => i.name.toUpperCase() === funcName && (i.from === undefined || configVersion >= i.from));\n if (index >= 0) {\n issues.push(__1.Issue.atToken(file, token, this.getMessage(index), this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n getMessage(index) {\n return `Recommendation: Replace Function ${this.conf.recommendations[index].name} with: ${this.conf.recommendations[index].replace}`;\n }\n}\nexports.FunctionModuleRecommendations = FunctionModuleRecommendations;\n//# sourceMappingURL=function_module_recommendations.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/function_module_recommendations.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/functional_writing.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/functional_writing.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FunctionalWriting = exports.FunctionalWritingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass FunctionalWritingConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Ignore functional writing in exception classes, local + global */\n this.ignoreExceptions = true;\n }\n}\nexports.FunctionalWritingConf = FunctionalWritingConf;\nclass FunctionalWriting extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new FunctionalWritingConf();\n }\n getMetadata() {\n return {\n key: \"functional_writing\",\n title: \"Use functional writing\",\n shortDescription: `Detects usage of call method when functional style calls can be used.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-functional-to-procedural-calls\r\nhttps://docs.abapopenchecks.org/checks/07/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `CALL METHOD zcl_class=>method( ).\r\nCALL METHOD cl_abap_typedescr=>describe_by_name\r\n EXPORTING\r\n p_name = 'NAME'\r\n RECEIVING\r\n p_descr_ref = lr_typedescr\r\n EXCEPTIONS\r\n type_not_found = 1\r\n OTHERS = 2.`,\n goodExample: `zcl_class=>method( ).\r\ncl_abap_typedescr=>describe_by_name(\r\n EXPORTING\r\n p_name = 'NAME'\r\n RECEIVING\r\n p_descr_ref = lr_typedescr\r\n EXCEPTIONS\r\n type_not_found = 1\r\n OTHERS = 2 ).`,\n };\n }\n getMessage() {\n return \"Use functional writing style for method calls\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n var _a, _b;\n const issues = [];\n let exception = false;\n if (obj.getType() === \"INTF\") {\n return [];\n }\n let definition = undefined;\n if (obj instanceof objects_1.Class) {\n definition = obj.getClassDefinition();\n }\n const ddic = new ddic_1.DDIC(this.reg);\n for (const statNode of file.getStatements()) {\n if (statNode.get() instanceof Statements.ClassImplementation\n && definition\n && ddic.isException(definition, obj)\n && this.conf.ignoreExceptions) {\n exception = true;\n }\n else if (statNode.get() instanceof Statements.EndClass) {\n exception = false;\n }\n else if (exception === false && statNode.get() instanceof Statements.Call) {\n if (((_a = statNode.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.MethodCallChain) {\n continue;\n }\n const dynamic = (_b = statNode.findDirectExpression(Expressions.MethodSource)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.Dynamic);\n if (dynamic !== undefined) {\n continue;\n }\n issues.push(this.createIssueForStatementNode(file, statNode));\n }\n }\n return issues;\n }\n createIssueForStatementNode(file, statNode) {\n const fixString = this.buildFixString(statNode);\n const fix = edit_helper_1.EditHelper.replaceRange(file, statNode.getStart(), statNode.getEnd(), fixString);\n return issue_1.Issue.atStatement(file, statNode, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n }\n buildFixString(statNode) {\n // Note: line breaks from source are lost\n const methodSource = statNode.findDirectExpression(Expressions.MethodSource);\n let methodSourceStr = methodSource === null || methodSource === void 0 ? void 0 : methodSource.concatTokens();\n const methodBody = statNode.findDirectExpression(Expressions.MethodCallBody);\n let methodBodyStr = \"\";\n if (methodBody) {\n const methodCallParam = methodBody.findDirectExpression(Expressions.MethodCallParam);\n if (methodCallParam && methodCallParam.getFirstToken().getStr() === \"(\") {\n // has parameters and parantheses\n methodBodyStr = `${methodBody.concatTokens()}.`;\n }\n else {\n // has parameters, but parentheses are missing\n methodSourceStr = `${methodSourceStr}( `;\n methodBodyStr = `${methodBody.concatTokens()} ).`;\n }\n }\n else {\n // no body means no parentheses and no parameters\n methodBodyStr = \"( ).\";\n }\n return methodSourceStr + methodBodyStr;\n }\n}\nexports.FunctionalWriting = FunctionalWriting;\n//# sourceMappingURL=functional_writing.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/functional_writing.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/global_class.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/global_class.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.GlobalClass = exports.GlobalClassConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass GlobalClassConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.GlobalClassConf = GlobalClassConf;\nclass GlobalClass extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new GlobalClassConf();\n }\n getMetadata() {\n return {\n key: \"global_class\",\n title: \"Global class checks\",\n shortDescription: `Checks related to global classes`,\n extendedInformation: `* global classes must be in own files\r\n\r\n* file names must match class name\r\n\r\n* file names must match interface name\r\n\r\n* global classes must be global definitions\r\n\r\n* global interfaces must be global definitions`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const output = [];\n for (const definition of file.getInfo().listClassDefinitions()) {\n if (definition.isLocal && obj instanceof Objects.Class && file.getFilename().match(/\\.clas\\.abap$/)) {\n const issue = issue_1.Issue.atIdentifier(definition.identifier, \"Global classes must be global\", this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n if (definition.isGlobal && obj instanceof Objects.Class && definition.name.toUpperCase() !== obj.getName().toUpperCase()) {\n const issue = issue_1.Issue.atIdentifier(definition.identifier, \"Class definition name must match filename\", this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n if (definition.isGlobal && !(obj instanceof Objects.Class)) {\n const issue = issue_1.Issue.atIdentifier(definition.identifier, \"Class must be local\", this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n for (const impl of file.getInfo().listClassImplementations()) {\n if (file.getFilename().match(/\\.clas\\.abap$/)\n && obj instanceof Objects.Class\n && impl.identifier.getName().toUpperCase() !== obj.getName().toUpperCase()) {\n const issue = issue_1.Issue.atIdentifier(impl.identifier, \"Class implementation name must match filename\", this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n for (const impl of file.getInfo().listInterfaceDefinitions()) {\n if (file.getFilename().match(/\\.intf\\.abap$/)\n && obj instanceof Objects.Interface\n && impl.identifier.getName().toUpperCase() !== obj.getName().toUpperCase()) {\n const issue = issue_1.Issue.atIdentifier(impl.identifier, \"Interface implementation name must match filename\", this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n for (const intf of file.getInfo().listInterfaceDefinitions()) {\n if (intf.isLocal && obj instanceof Objects.Interface && file.getFilename().match(/\\.intf\\.abap$/)) {\n const issue = issue_1.Issue.atIdentifier(intf.identifier, \"Global interface must be global\", this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n return output;\n }\n}\nexports.GlobalClass = GlobalClass;\n//# sourceMappingURL=global_class.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/global_class.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/identical_conditions.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/identical_conditions.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IdenticalConditions = exports.IdenticalConditionsConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nclass Conditions {\n constructor() {\n this.arr = [];\n this.arr = [];\n }\n push(e) {\n this.arr.push(e.concatTokens());\n }\n hasDuplicates() {\n return this.arr.some(x => this.arr.indexOf(x) !== this.arr.lastIndexOf(x));\n }\n}\nclass IdenticalConditionsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.IdenticalConditionsConf = IdenticalConditionsConf;\nclass IdenticalConditions extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new IdenticalConditionsConf();\n }\n getMetadata() {\n return {\n key: \"identical_conditions\",\n title: \"Identical conditions\",\n shortDescription: `Find identical conditions in IF + CASE + WHILE etc\r\n\r\nPrerequsites: code is pretty printed with identical cAsE`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n let issues = [];\n const structure = file.getStructure();\n if (structure === undefined) {\n return [];\n }\n for (const i of structure.findAllStructures(Structures.If)) {\n issues = issues.concat(this.analyzeIf(file, i));\n }\n for (const i of structure.findAllStructures(Structures.Case)) {\n issues = issues.concat(this.analyzeWhen(file, i));\n }\n for (const i of structure.findAllExpressions(Expressions.Cond)) {\n issues = issues.concat(this.analyzeCond(file, i));\n }\n return issues;\n }\n ////////////////\n analyzeCond(file, node) {\n const conditions = new Conditions();\n let operator = \"\";\n for (const c of node.getChildren()) {\n if (c instanceof nodes_1.ExpressionNode) {\n conditions.push(c);\n }\n else if (operator === \"\") {\n operator = c.get().getStr().toUpperCase();\n }\n else if (operator !== c.get().getStr().toUpperCase()) {\n return [];\n }\n }\n if (conditions.hasDuplicates()) {\n const message = \"Identical conditions\";\n const issue = issue_1.Issue.atToken(file, node.getFirstToken(), message, this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n return [];\n }\n analyzeIf(file, node) {\n var _a;\n const conditions = new Conditions();\n const i = node.findDirectStatement(Statements.If);\n if (i === undefined) {\n throw new Error(\"identical_conditions, no IF found\");\n }\n const c = i === null || i === void 0 ? void 0 : i.findDirectExpression(Expressions.Cond);\n if (c) {\n conditions.push(c);\n }\n for (const e of node.findDirectStructures(Structures.ElseIf)) {\n const c = (_a = e.findDirectStatement(Statements.ElseIf)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Cond);\n if (c) {\n conditions.push(c);\n }\n }\n if (conditions.hasDuplicates()) {\n const message = \"Identical conditions\";\n const issue = issue_1.Issue.atStatement(file, i, message, this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n return [];\n }\n analyzeWhen(file, node) {\n const conditions = new Conditions();\n const i = node.findDirectStatement(Statements.Case);\n if (i === undefined) {\n throw new Error(\"identical_conditions, no CASE found\");\n }\n for (const e of node.findDirectStructures(Structures.When)) {\n const w = e.findDirectStatement(Statements.When);\n if (w === undefined) {\n continue;\n }\n for (const s of w.findAllExpressions(Expressions.Source)) {\n conditions.push(s);\n }\n }\n if (conditions.hasDuplicates()) {\n const message = \"Identical conditions\";\n const issue = issue_1.Issue.atStatement(file, i, message, this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n return [];\n }\n}\nexports.IdenticalConditions = IdenticalConditions;\n//# sourceMappingURL=identical_conditions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/identical_conditions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/identical_contents.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/identical_contents.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IdenticalContents = exports.IdenticalContentsConf = void 0;\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nclass IdenticalContentsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.IdenticalContentsConf = IdenticalContentsConf;\nclass IdenticalContents extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new IdenticalContentsConf();\n }\n getMetadata() {\n return {\n key: \"identical_contents\",\n title: \"Identical contents\",\n shortDescription: `Find identical contents in blocks inside IFs, both in the beginning and in the end.`,\n extendedInformation: `\r\nPrerequsites: code is pretty printed with identical cAsE\r\n\r\nChained statments are ignored`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `IF foo = bar.\r\n WRITE 'bar'.\r\n WRITE 'world'.\r\nELSE.\r\n WRITE 'foo'.\r\n WRITE 'world'.\r\nENDIF.`,\n goodExample: `IF foo = bar.\r\n WRITE 'bar'.\r\nELSE.\r\n WRITE 'foo'.\r\nENDIF.\r\nWRITE 'world'.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n let issues = [];\n const structure = file.getStructure();\n if (structure === undefined) {\n return [];\n }\n for (const i of structure.findAllStructuresRecursive(Structures.If)) {\n issues = issues.concat(this.analyzeIf(file, i));\n }\n return issues;\n }\n ////////////////\n analyzeIf(file, node) {\n var _a;\n if (node.getChildren().length !== 4) {\n return [];\n }\n const ifBody = node.findDirectStructure(Structures.Body);\n if (node.findDirectStructure(Structures.ElseIf)) {\n return [];\n }\n const elseBody = (_a = node.findDirectStructure(Structures.Else)) === null || _a === void 0 ? void 0 : _a.findDirectStructure(Structures.Body);\n if (elseBody === undefined || ifBody === undefined) {\n return [];\n }\n {\n const ifFirst = ifBody.getFirstChild();\n const elseFirst = elseBody.getFirstChild();\n if (ifFirst === undefined || elseFirst === undefined || this.isChained(ifFirst)) {\n return [];\n }\n else if (ifFirst.concatTokens() === elseFirst.concatTokens()) {\n const message = \"Identical contents\";\n const issue = issue_1.Issue.atToken(file, node.getFirstToken(), message, this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n }\n {\n const ifLast = ifBody.getLastChild();\n const elseLast = elseBody.getLastChild();\n if (ifLast === undefined || elseLast === undefined || this.isChained(ifLast)) {\n return [];\n }\n else if (ifLast.concatTokens() === elseLast.concatTokens()) {\n const message = \"Identical contents\";\n const issue = issue_1.Issue.atToken(file, node.getFirstToken(), message, this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n }\n return [];\n }\n isChained(node) {\n if (node === undefined) {\n return false;\n }\n else if (node instanceof nodes_1.StatementNode) {\n return node.getColon() !== undefined;\n }\n else {\n return this.isChained(node.getFirstStatement());\n }\n }\n}\nexports.IdenticalContents = IdenticalContents;\n//# sourceMappingURL=identical_contents.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/identical_contents.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/identical_descriptions.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/identical_descriptions.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IdenticalDescriptions = exports.IdenticalDescriptionsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nclass IdenticalDescriptionsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.IdenticalDescriptionsConf = IdenticalDescriptionsConf;\nclass IdenticalDescriptions {\n constructor() {\n this.conf = new IdenticalDescriptionsConf();\n }\n getMetadata() {\n return {\n key: \"identical_descriptions\",\n title: \"Identical descriptions\",\n shortDescription: `Searches for objects with the same type and same description`,\n extendedInformation: `Case insensitive\r\n\r\nOnly checks the master language descriptions\r\n\r\nDependencies are skipped\r\n\r\nWorks for: INTF, CLAS, DOMA, DTEL, FUNC in same FUGR`,\n tags: [],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n var _a;\n this.descriptions = {};\n this.types = [\"INTF\", \"CLAS\", \"DOMA\", \"DTEL\"];\n for (const o of reg.getObjects()) {\n if (reg.isDependency(o)) {\n continue;\n }\n const type = o.getType();\n if (this.types.includes(type)) {\n const description = (_a = o.getDescription()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (description === undefined || description === \"\") {\n continue;\n }\n if (this.descriptions[type] === undefined) {\n this.descriptions[type] = {};\n }\n if (this.descriptions[type][description] === undefined) {\n this.descriptions[type][description] = [];\n }\n this.descriptions[type][description].push(o.getName());\n }\n }\n return this;\n }\n run(o) {\n var _a;\n const issues = [];\n const type = o.getType();\n if (this.types.includes(type)) {\n const description = (_a = o.getDescription()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (description === undefined || description === \"\") {\n return issues;\n }\n const found = this.descriptions[type][description].filter(a => a !== o.getName());\n if (found.length > 0) {\n const message = \"Identical description: \" + found[0];\n issues.push(issue_1.Issue.atRow(o.getXMLFile(), 1, message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n if (o instanceof objects_1.FunctionGroup) {\n issues.push(...this.checkFunctionModules(o));\n }\n return issues;\n }\n checkFunctionModules(fugr) {\n var _a;\n const descriptions = {};\n for (const fm of fugr.getModules()) {\n const d = (_a = fm.getDescription()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (d === undefined || d === \"\") {\n continue;\n }\n if (descriptions[d] !== undefined) {\n const message = \"FUGR \" + fugr.getName() + \" contains function modules with identical descriptions\";\n return [issue_1.Issue.atRow(fugr.getXMLFile(), 1, message, this.getMetadata().key, this.getConfig().severity)];\n }\n descriptions[d] = true;\n }\n return [];\n }\n}\nexports.IdenticalDescriptions = IdenticalDescriptions;\n//# sourceMappingURL=identical_descriptions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/identical_descriptions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/identical_form_names.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/identical_form_names.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IdenticalFormNames = exports.IdenticalFormNamesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass IdenticalFormNamesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.IdenticalFormNamesConf = IdenticalFormNamesConf;\n// todo: deprecation candidate? this is/should be handled by the syntax check?\nclass IdenticalFormNames {\n constructor() {\n this.conf = new IdenticalFormNamesConf();\n }\n getMetadata() {\n return {\n key: \"identical_form_names\",\n title: \"Identical FORM names\",\n shortDescription: `Detects identically named FORMs`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const ret = [];\n const found = [];\n for (const file of obj.getABAPFiles()) {\n for (const form of file.getInfo().listFormDefinitions()) {\n const name = form.name.toUpperCase();\n if (found.indexOf(name) >= 0) {\n const message = \"Identical FORM Names: \\\"\" + name + \"\\\"\";\n const issue = issue_1.Issue.atIdentifier(form.identifier, message, this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n else {\n found.push(name);\n }\n }\n }\n return ret;\n }\n}\nexports.IdenticalFormNames = IdenticalFormNames;\n//# sourceMappingURL=identical_form_names.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/identical_form_names.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/if_in_if.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/if_in_if.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IfInIf = exports.IfInIfConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass IfInIfConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.IfInIfConf = IfInIfConf;\nclass IfInIf extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new IfInIfConf();\n }\n getMetadata() {\n return {\n key: \"if_in_if\",\n title: \"IF in IF\",\n shortDescription: `Detects nested ifs which can be refactored.`,\n extendedInformation: `\r\nDirectly nested IFs without ELSE can be refactored to a single condition using AND.\r\n\r\nELSE condtions with directly nested IF refactored to ELSEIF, quickfixes are suggested for this case.\r\n\r\nhttps://docs.abapopenchecks.org/checks/01/\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-the-nesting-depth-low`,\n badExample: `IF condition1.\r\n IF condition2.\r\n ...\r\n ENDIF.\r\nENDIF.\r\n\r\nIF condition1.\r\n ...\r\nELSE.\r\n IF condition2.\r\n ...\r\n ENDIF.\r\nENDIF.`,\n goodExample: `IF ( condition1 ) AND ( condition2 ).\r\n ...\r\nENDIF.\r\n\r\nIF condition1.\r\n ...\r\nELSEIF condition2.\r\n ...\r\nENDIF.\r\n\r\nCASE variable.\r\n WHEN value1.\r\n ...\r\n WHEN value2.\r\n IF condition2.\r\n ...\r\n ENDIF.\r\nENDCASE.`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n var _a, _b;\n const issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n let fixed = false;\n let possible = stru.findAllStructures(Structures.If);\n possible = possible.concat(stru.findAllStructures(Structures.Else));\n for (const i of possible) {\n if (i.findDirectStructures(Structures.ElseIf).length > 0\n || i.findDirectStructures(Structures.Else).length > 0) {\n continue;\n }\n const blist = i.findDirectStructures(Structures.Body);\n if (blist.length === 0) {\n continue;\n }\n const nlist = blist[0].findDirectStructures(Structures.Normal);\n if (nlist.length !== 1) {\n continue;\n }\n const niflist = nlist[0].findDirectStructures(Structures.If);\n if (niflist.length !== 1) {\n continue;\n }\n const nestedIf = niflist[0];\n if (i.get() instanceof Structures.If\n && (nestedIf.findDirectStructures(Structures.ElseIf).length > 0\n || nestedIf.findDirectStructures(Structures.Else).length > 0)) {\n continue;\n }\n let message = \"IF in IF. Use IF cond1 AND cond2 instead\";\n let fix = undefined;\n if (i.get() instanceof Structures.Else) {\n message = \"Change ELSE part to ELSEIF\";\n const els = i.findFirstStatement(Statements.Else);\n const iff = (_a = i.findFirstStructure(Structures.If)) === null || _a === void 0 ? void 0 : _a.findDirectStatement(Statements.If);\n const endif = (_b = i.findFirstStructure(Structures.If)) === null || _b === void 0 ? void 0 : _b.findDirectStatement(Statements.EndIf);\n if (fixed === false && iff && els && endif) {\n const fix1 = edit_helper_1.EditHelper.deleteRange(file, els.getLastToken().getStart(), iff === null || iff === void 0 ? void 0 : iff.getFirstToken().getStart());\n const fix2 = edit_helper_1.EditHelper.deleteStatement(file, endif);\n fix = edit_helper_1.EditHelper.merge(fix1, fix2);\n // max one fix per file at a time\n fixed = true;\n }\n }\n const token = i.getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n return issues;\n }\n}\nexports.IfInIf = IfInIf;\n//# sourceMappingURL=if_in_if.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/if_in_if.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/implement_methods.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/implement_methods.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImplementMethods = exports.ImplementMethodsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\n// todo: abstract methods from superclass parents(might be multiple), if class is not abstract\nclass ImplementMethodsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ImplementMethodsConf = ImplementMethodsConf;\nclass ImplementMethods extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ImplementMethodsConf();\n }\n getMetadata() {\n return {\n key: \"implement_methods\",\n title: \"Implement methods\",\n shortDescription: `Checks for abstract methods and methods from interfaces which need implementing.`,\n extendedInformation: `INCLUDE programs are only checked in connection with their main programs.`,\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.Quickfix],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n let ret = [];\n if (file.getStructure() === undefined) {\n return [];\n }\n else if (obj instanceof objects_1.Program && obj.isInclude() === true) {\n return [];\n }\n this.obj = obj;\n for (const classDefinition of file.getInfo().listClassDefinitions()) {\n const classImplementation = this.lookupImplementationInObject(classDefinition.name, obj);\n ret = ret.concat(this.checkClass(classDefinition, classImplementation));\n ret = ret.concat(this.checkInterfaces(classDefinition, classImplementation));\n }\n return ret;\n }\n /////////////////////////////////\n lookupImplementationInObject(name, obj) {\n for (const sub of obj.getABAPFiles()) {\n const impl = sub.getInfo().getClassImplementationByName(name);\n if (impl !== undefined) {\n return impl;\n }\n }\n return undefined;\n }\n lookupDefinitionInObject(name) {\n for (const sub of this.obj.getABAPFiles()) {\n const def = sub.getInfo().getClassDefinitionByName(name);\n if (def !== undefined) {\n return def;\n }\n }\n return undefined;\n }\n checkClass(def, impl) {\n const ret = [];\n for (const md of def.methods) {\n const found = impl === null || impl === void 0 ? void 0 : impl.methods.find(m => m.getName().toUpperCase() === md.name.toUpperCase());\n if (md.isAbstract === true) {\n if (found !== undefined) {\n const issue = issue_1.Issue.atIdentifier(found, \"Do not implement abstract method \\\"\" + md.name + \"\\\"\", this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n continue;\n }\n if (impl === undefined) {\n const message = \"Class implementation for \\\"\" + def.name + \"\\\" not found\";\n const issue = issue_1.Issue.atIdentifier(def.identifier, message, this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n else if (found === undefined) {\n const message = \"Implement method \\\"\" + md.name + \"\\\"\";\n const fix = this.buildFix(impl, md.name);\n const issue = issue_1.Issue.atIdentifier(impl.identifier, message, this.getMetadata().key, this.conf.severity, fix);\n ret.push(issue);\n }\n }\n return ret;\n }\n buildFix(impl, methodName) {\n var _a, _b;\n const file = this.obj.getABAPFileByName(impl.identifier.getFilename());\n if (file === undefined) {\n return undefined;\n }\n for (const i of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllStatements(Statements.ClassImplementation)) || []) {\n const name = (_b = i.findFirstExpression(Expressions.ClassName)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr().toUpperCase();\n if (name === impl.identifier.getName().toUpperCase()) {\n return edit_helper_1.EditHelper.insertAt(file, i.getLastToken().getEnd(), `\r\n METHOD ${methodName.toLowerCase()}.\r\n RETURN. \" todo, implement method\r\n ENDMETHOD.`);\n }\n }\n return undefined;\n }\n findInterface(identifier, name) {\n const idef = this.findInterfaceByName(name);\n if (idef === undefined) {\n const message = \"Implemented interface \\\"\" + name + \"\\\" not found\";\n const issue = issue_1.Issue.atIdentifier(identifier, message, this.getMetadata().key, this.conf.severity);\n return issue;\n }\n return idef;\n }\n findInterfaceByName(name) {\n var _a;\n let idef = undefined;\n const intf = this.reg.getObject(\"INTF\", name);\n if (intf === undefined) {\n // lookup in localfiles\n for (const file of this.obj.getABAPFiles()) {\n const found = file.getInfo().getInterfaceDefinitionByName(name);\n if (found) {\n idef = found;\n break;\n }\n }\n }\n else {\n idef = (_a = intf.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getInfo().listInterfaceDefinitions()[0];\n }\n return idef;\n }\n /** including implemented super interfaces */\n findInterfaceMethods(idef) {\n const methods = idef.methods.map((m) => {\n return { objectName: idef.name, method: m };\n });\n for (const i of idef.interfaces) {\n const sup = this.findInterface(idef.identifier, i.name);\n if (sup !== undefined && !(sup instanceof issue_1.Issue)) {\n sup.methods.forEach(m => {\n methods.push({ objectName: sup.name, method: m });\n });\n }\n }\n return methods;\n }\n findClass(name) {\n let def = this.lookupDefinitionInObject(name);\n let impl = this.lookupImplementationInObject(name, this.obj);\n if (def && impl) {\n return { def, impl };\n }\n const global = this.reg.getObject(\"CLAS\", name);\n if (global) {\n def = global.getClassDefinition();\n impl = this.lookupImplementationInObject(name, global);\n if (def && impl) {\n return { def, impl };\n }\n }\n return undefined;\n }\n checkInterfaces(def, impl) {\n const ret = [];\n for (const interfaceInfo of def.interfaces) {\n const idef = this.findInterface(def.identifier, interfaceInfo.name);\n if (idef === undefined || interfaceInfo.partial === true || interfaceInfo.allAbstract === true) {\n continue; // ignore parser errors in interface\n }\n else if (idef instanceof issue_1.Issue) {\n return [idef];\n }\n for (const m of this.findInterfaceMethods(idef)) {\n if (interfaceInfo.abstractMethods.includes(m.method.name.toUpperCase())) {\n continue;\n }\n if (this.isImplemented(m, def, impl) === false) {\n const message = \"Implement method \\\"\" + m.method.name + \"\\\" from interface \\\"\" + m.objectName + \"\\\"\";\n if (impl) {\n const fix = this.buildFix(impl, m.objectName + \"~\" + m.method.name);\n const issue = issue_1.Issue.atIdentifier(impl.identifier, message, this.getMetadata().key, this.conf.severity, fix);\n ret.push(issue);\n }\n else {\n const issue = issue_1.Issue.atIdentifier(def.identifier, message, this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n }\n }\n }\n return ret;\n }\n isImplemented(m, def, impl) {\n if (impl === undefined) {\n return false;\n }\n const name = m.objectName + \"~\" + m.method.name;\n let found = impl.methods.find(m => m.getName().toUpperCase() === name.toUpperCase());\n if (found === undefined) {\n // try looking for ALIASes\n for (const alias of def.aliases) {\n if (alias.component.toUpperCase() === name.toUpperCase()) {\n found = impl.methods.find(m => m.getName().toUpperCase() === alias.name.toUpperCase());\n break;\n }\n }\n }\n if (found === undefined && def.superClassName !== undefined) {\n const clas = this.findClass(def.superClassName);\n if (clas) {\n return this.isImplemented(m, clas === null || clas === void 0 ? void 0 : clas.def, clas === null || clas === void 0 ? void 0 : clas.impl);\n }\n }\n if (found === undefined) {\n for (const i of def.interfaces) {\n const idef = this.findInterfaceByName(i.name);\n if (idef === undefined) {\n continue;\n }\n const ali = this.viaAliasInInterface(m, idef, impl);\n if (ali) {\n return ali;\n }\n }\n }\n return found !== undefined;\n }\n viaAliasInInterface(m, intf, impl) {\n for (const a of intf.aliases) {\n if (a.component.toUpperCase() === m.objectName.toUpperCase() + \"~\" + m.method.name.toUpperCase()) {\n const name = intf.name + \"~\" + a.name;\n const found = impl.methods.find(m => m.getName().toUpperCase() === name.toUpperCase());\n if (found) {\n return true;\n }\n }\n }\n return false;\n }\n}\nexports.ImplementMethods = ImplementMethods;\n//# sourceMappingURL=implement_methods.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/implement_methods.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/in_statement_indentation.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/in_statement_indentation.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InStatementIndentation = exports.InStatementIndentationConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass InStatementIndentationConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Additional indent for first statement of blocks */\n this.blockStatements = 2;\n /** Ignore global exception classes */\n this.ignoreExceptions = true;\n }\n}\nexports.InStatementIndentationConf = InStatementIndentationConf;\nclass InStatementIndentation extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new InStatementIndentationConf();\n }\n getMetadata() {\n return {\n key: \"in_statement_indentation\",\n title: \"In-statement indentation\",\n shortDescription: \"Checks alignment within statements which span multiple lines.\",\n extendedInformation: `Lines following the first line should be indented once (2 spaces).\r\n \r\nFor block declaration statements, lines after the first should be indented an additional time (default: +2 spaces)\r\nto distinguish them better from code within the block.`,\n badExample: `IF 1 = 1\r\n AND 2 = 2.\r\n WRITE 'hello' &&\r\n 'world'.\r\nENDIF.`,\n goodExample: `IF 1 = 1\r\n AND 2 = 2.\r\n WRITE 'hello' &&\r\n 'world'.\r\nENDIF.`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Fix in-statement indentation\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const ret = [];\n const ddic = new ddic_1.DDIC(this.reg);\n if (obj instanceof objects_1.Class) {\n const definition = obj.getClassDefinition();\n if (definition === undefined) {\n return [];\n }\n else if (this.conf.ignoreExceptions && ddic.isException(definition, obj)) {\n return [];\n }\n }\n for (const s of file.getStatements()) {\n if (s.get() instanceof _statement_1.Comment || s.get() instanceof _statement_1.Unknown) {\n continue;\n }\n const tokens = s.getTokens();\n if (tokens.length === 0) {\n continue;\n }\n const beginLine = tokens[0].getRow();\n let expected = tokens[0].getCol() + 2;\n const type = s.get();\n if (type instanceof Statements.If\n || type instanceof Statements.While\n || type instanceof Statements.Module\n || type instanceof Statements.SelectLoop\n || type instanceof Statements.FunctionModule\n || type instanceof Statements.Do\n || type instanceof Statements.At\n || type instanceof Statements.Catch\n || type instanceof Statements.Case\n || type instanceof Statements.When\n || type instanceof Statements.Cleanup\n || type instanceof Statements.Loop\n || type instanceof Statements.Form\n || type instanceof Statements.Else\n || type instanceof Statements.ElseIf\n || type instanceof Statements.MethodImplementation) {\n expected = expected + this.conf.blockStatements;\n }\n for (const t of tokens) {\n if (t.getRow() === beginLine) {\n continue;\n }\n if (t.getCol() < expected) {\n const fix = edit_helper_1.EditHelper.replaceRange(file, new position_1.Position(t.getRow(), 1), t.getStart(), \" \".repeat(expected - 1));\n const issue = issue_1.Issue.atToken(file, t, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n ret.push(issue);\n break;\n }\n }\n }\n return ret;\n }\n}\nexports.InStatementIndentation = InStatementIndentation;\n//# sourceMappingURL=in_statement_indentation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/in_statement_indentation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/indentation.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/indentation.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Indentation = exports.IndentationConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst indent_1 = __webpack_require__(/*! ../pretty_printer/indent */ \"./node_modules/@abaplint/core/build/src/pretty_printer/indent.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass IndentationConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Ignore global exception classes */\n this.ignoreExceptions = true;\n /** Align TRY CATCH, TRY and CATCH should have the same indentation */\n this.alignTryCatch = false;\n /** Add indentation for SELECTION SCREEN BLOCK, standard pretty printer indents this from 754 */\n this.selectionScreenBlockIndentation = false;\n this.globalClassSkipFirst = false;\n this.ignoreGlobalClassDefinition = false;\n this.ignoreGlobalInterface = false;\n }\n}\nexports.IndentationConf = IndentationConf;\nclass Indentation extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new IndentationConf();\n }\n getMetadata() {\n return {\n key: \"indentation\",\n title: \"Indentation\",\n shortDescription: `Checks indentation`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n var _a, _b;\n const MAX_ISSUES = 100;\n let skip = false;\n if (file.getStructure() === undefined) {\n return []; // syntax error in file\n }\n if (obj instanceof objects_1.Class) {\n const definition = obj.getClassDefinition();\n const ddic = new ddic_1.DDIC(this.reg);\n if (definition === undefined) {\n return [];\n }\n else if (this.conf.ignoreExceptions && ddic.isException(definition, obj)) {\n return [];\n }\n }\n const indentOpts = {\n selectionScreenBlockIndentation: (_a = this.conf) === null || _a === void 0 ? void 0 : _a.selectionScreenBlockIndentation,\n alignTryCatch: (_b = this.conf) === null || _b === void 0 ? void 0 : _b.alignTryCatch,\n globalClassSkipFirst: this.conf.globalClassSkipFirst,\n };\n const expected = new indent_1.Indent(indentOpts).getExpectedIndents(file);\n const ret = [];\n for (const statement of file.getStatements()) {\n const position = statement.getFirstToken().getStart();\n if (position instanceof position_1.VirtualPosition) {\n continue;\n }\n const indent = expected.shift();\n if (this.conf.ignoreGlobalClassDefinition) {\n if (statement.get() instanceof Statements.ClassDefinition\n && statement.findFirstExpression(Expressions.ClassGlobal)) {\n skip = true;\n continue;\n }\n else if (skip === true && statement.get() instanceof Statements.EndClass) {\n skip = false;\n continue;\n }\n else if (skip === true) {\n continue;\n }\n }\n if (this.conf.ignoreGlobalInterface) {\n if (statement.get() instanceof Statements.Interface\n && statement.findFirstExpression(Expressions.ClassGlobal)) {\n skip = true;\n continue;\n }\n else if (skip === true && statement.get() instanceof Statements.EndInterface) {\n skip = false;\n continue;\n }\n else if (skip === true) {\n continue;\n }\n }\n if (indent && indent > 0 && indent !== position.getCol()) {\n const expected = indent - 1;\n const fix = edit_helper_1.EditHelper.replaceRange(file, new position_1.Position(position.getRow(), 1), position, \" \".repeat(expected));\n const message = \"Indentation problem, expected \" + expected + \" spaces\";\n const issue = issue_1.Issue.atPosition(file, position, message, this.getMetadata().key, this.conf.severity, fix);\n ret.push(issue);\n if (ret.length >= MAX_ISSUES) {\n break;\n }\n }\n }\n return ret;\n }\n}\nexports.Indentation = Indentation;\n//# sourceMappingURL=indentation.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/indentation.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/index.js": +/*!**************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/index.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n__exportStar(__webpack_require__(/*! ./7bit_ascii */ \"./node_modules/@abaplint/core/build/src/rules/7bit_ascii.js\"), exports);\n__exportStar(__webpack_require__(/*! ./abapdoc */ \"./node_modules/@abaplint/core/build/src/rules/abapdoc.js\"), exports);\n__exportStar(__webpack_require__(/*! ./align_parameters */ \"./node_modules/@abaplint/core/build/src/rules/align_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./allowed_object_naming */ \"./node_modules/@abaplint/core/build/src/rules/allowed_object_naming.js\"), exports);\n__exportStar(__webpack_require__(/*! ./allowed_object_types */ \"./node_modules/@abaplint/core/build/src/rules/allowed_object_types.js\"), exports);\n__exportStar(__webpack_require__(/*! ./ambiguous_statement */ \"./node_modules/@abaplint/core/build/src/rules/ambiguous_statement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./avoid_use */ \"./node_modules/@abaplint/core/build/src/rules/avoid_use.js\"), exports);\n__exportStar(__webpack_require__(/*! ./begin_end_names */ \"./node_modules/@abaplint/core/build/src/rules/begin_end_names.js\"), exports);\n__exportStar(__webpack_require__(/*! ./begin_single_include */ \"./node_modules/@abaplint/core/build/src/rules/begin_single_include.js\"), exports);\n__exportStar(__webpack_require__(/*! ./call_transaction_authority_check */ \"./node_modules/@abaplint/core/build/src/rules/call_transaction_authority_check.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_comment_style */ \"./node_modules/@abaplint/core/build/src/rules/cds_comment_style.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_legacy_view */ \"./node_modules/@abaplint/core/build/src/rules/cds_legacy_view.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cds_parser_error */ \"./node_modules/@abaplint/core/build/src/rules/cds_parser_error.js\"), exports);\n__exportStar(__webpack_require__(/*! ./chain_mainly_declarations */ \"./node_modules/@abaplint/core/build/src/rules/chain_mainly_declarations.js\"), exports);\n__exportStar(__webpack_require__(/*! ./change_if_to_case */ \"./node_modules/@abaplint/core/build/src/rules/change_if_to_case.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_abstract */ \"./node_modules/@abaplint/core/build/src/rules/check_abstract.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_comments */ \"./node_modules/@abaplint/core/build/src/rules/check_comments.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_ddic */ \"./node_modules/@abaplint/core/build/src/rules/check_ddic.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_include */ \"./node_modules/@abaplint/core/build/src/rules/check_include.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_subrc */ \"./node_modules/@abaplint/core/build/src/rules/check_subrc.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_syntax */ \"./node_modules/@abaplint/core/build/src/rules/check_syntax.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_text_elements */ \"./node_modules/@abaplint/core/build/src/rules/check_text_elements.js\"), exports);\n__exportStar(__webpack_require__(/*! ./check_transformation_exists */ \"./node_modules/@abaplint/core/build/src/rules/check_transformation_exists.js\"), exports);\n__exportStar(__webpack_require__(/*! ./class_attribute_names */ \"./node_modules/@abaplint/core/build/src/rules/class_attribute_names.js\"), exports);\n__exportStar(__webpack_require__(/*! ./classic_exceptions_overlap */ \"./node_modules/@abaplint/core/build/src/rules/classic_exceptions_overlap.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cloud_types */ \"./node_modules/@abaplint/core/build/src/rules/cloud_types.js\"), exports);\n__exportStar(__webpack_require__(/*! ./colon_missing_space */ \"./node_modules/@abaplint/core/build/src/rules/colon_missing_space.js\"), exports);\n__exportStar(__webpack_require__(/*! ./commented_code */ \"./node_modules/@abaplint/core/build/src/rules/commented_code.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constant_classes */ \"./node_modules/@abaplint/core/build/src/rules/constant_classes.js\"), exports);\n__exportStar(__webpack_require__(/*! ./constructor_visibility_public */ \"./node_modules/@abaplint/core/build/src/rules/constructor_visibility_public.js\"), exports);\n__exportStar(__webpack_require__(/*! ./contains_tab */ \"./node_modules/@abaplint/core/build/src/rules/contains_tab.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cyclic_oo */ \"./node_modules/@abaplint/core/build/src/rules/cyclic_oo.js\"), exports);\n__exportStar(__webpack_require__(/*! ./cyclomatic_complexity */ \"./node_modules/@abaplint/core/build/src/rules/cyclomatic_complexity.js\"), exports);\n__exportStar(__webpack_require__(/*! ./dangerous_statement */ \"./node_modules/@abaplint/core/build/src/rules/dangerous_statement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./db_operation_in_loop */ \"./node_modules/@abaplint/core/build/src/rules/db_operation_in_loop.js\"), exports);\n__exportStar(__webpack_require__(/*! ./definitions_top */ \"./node_modules/@abaplint/core/build/src/rules/definitions_top.js\"), exports);\n__exportStar(__webpack_require__(/*! ./description_empty */ \"./node_modules/@abaplint/core/build/src/rules/description_empty.js\"), exports);\n__exportStar(__webpack_require__(/*! ./double_space */ \"./node_modules/@abaplint/core/build/src/rules/double_space.js\"), exports);\n__exportStar(__webpack_require__(/*! ./downport */ \"./node_modules/@abaplint/core/build/src/rules/downport.js\"), exports);\n__exportStar(__webpack_require__(/*! ./easy_to_find_messages */ \"./node_modules/@abaplint/core/build/src/rules/easy_to_find_messages.js\"), exports);\n__exportStar(__webpack_require__(/*! ./empty_line_in_statement */ \"./node_modules/@abaplint/core/build/src/rules/empty_line_in_statement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./empty_statement */ \"./node_modules/@abaplint/core/build/src/rules/empty_statement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./empty_structure */ \"./node_modules/@abaplint/core/build/src/rules/empty_structure.js\"), exports);\n__exportStar(__webpack_require__(/*! ./exit_or_check */ \"./node_modules/@abaplint/core/build/src/rules/exit_or_check.js\"), exports);\n__exportStar(__webpack_require__(/*! ./expand_macros */ \"./node_modules/@abaplint/core/build/src/rules/expand_macros.js\"), exports);\n__exportStar(__webpack_require__(/*! ./exporting */ \"./node_modules/@abaplint/core/build/src/rules/exporting.js\"), exports);\n__exportStar(__webpack_require__(/*! ./forbidden_identifier */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js\"), exports);\n__exportStar(__webpack_require__(/*! ./forbidden_pseudo_and_pragma */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_pseudo_and_pragma.js\"), exports);\n__exportStar(__webpack_require__(/*! ./forbidden_void_type */ \"./node_modules/@abaplint/core/build/src/rules/forbidden_void_type.js\"), exports);\n__exportStar(__webpack_require__(/*! ./form_tables_obsolete */ \"./node_modules/@abaplint/core/build/src/rules/form_tables_obsolete.js\"), exports);\n__exportStar(__webpack_require__(/*! ./fully_type_constants */ \"./node_modules/@abaplint/core/build/src/rules/fully_type_constants.js\"), exports);\n__exportStar(__webpack_require__(/*! ./fully_type_itabs */ \"./node_modules/@abaplint/core/build/src/rules/fully_type_itabs.js\"), exports);\n__exportStar(__webpack_require__(/*! ./function_module_recommendations */ \"./node_modules/@abaplint/core/build/src/rules/function_module_recommendations.js\"), exports);\n__exportStar(__webpack_require__(/*! ./functional_writing */ \"./node_modules/@abaplint/core/build/src/rules/functional_writing.js\"), exports);\n__exportStar(__webpack_require__(/*! ./global_class */ \"./node_modules/@abaplint/core/build/src/rules/global_class.js\"), exports);\n__exportStar(__webpack_require__(/*! ./identical_conditions */ \"./node_modules/@abaplint/core/build/src/rules/identical_conditions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./identical_contents */ \"./node_modules/@abaplint/core/build/src/rules/identical_contents.js\"), exports);\n__exportStar(__webpack_require__(/*! ./identical_descriptions */ \"./node_modules/@abaplint/core/build/src/rules/identical_descriptions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./identical_form_names */ \"./node_modules/@abaplint/core/build/src/rules/identical_form_names.js\"), exports);\n__exportStar(__webpack_require__(/*! ./if_in_if */ \"./node_modules/@abaplint/core/build/src/rules/if_in_if.js\"), exports);\n__exportStar(__webpack_require__(/*! ./implement_methods */ \"./node_modules/@abaplint/core/build/src/rules/implement_methods.js\"), exports);\n__exportStar(__webpack_require__(/*! ./in_statement_indentation */ \"./node_modules/@abaplint/core/build/src/rules/in_statement_indentation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./indentation */ \"./node_modules/@abaplint/core/build/src/rules/indentation.js\"), exports);\n__exportStar(__webpack_require__(/*! ./inline_data_old_versions */ \"./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./intf_referencing_clas */ \"./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js\"), exports);\n__exportStar(__webpack_require__(/*! ./keep_single_parameter_on_one_line */ \"./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js\"), exports);\n__exportStar(__webpack_require__(/*! ./keyword_case */ \"./node_modules/@abaplint/core/build/src/rules/keyword_case.js\"), exports);\n__exportStar(__webpack_require__(/*! ./line_break_multiple_parameters */ \"./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./line_break_style */ \"./node_modules/@abaplint/core/build/src/rules/line_break_style.js\"), exports);\n__exportStar(__webpack_require__(/*! ./line_length */ \"./node_modules/@abaplint/core/build/src/rules/line_length.js\"), exports);\n__exportStar(__webpack_require__(/*! ./line_only_punc */ \"./node_modules/@abaplint/core/build/src/rules/line_only_punc.js\"), exports);\n__exportStar(__webpack_require__(/*! ./local_class_naming */ \"./node_modules/@abaplint/core/build/src/rules/local_class_naming.js\"), exports);\n__exportStar(__webpack_require__(/*! ./local_testclass_consistency */ \"./node_modules/@abaplint/core/build/src/rules/local_testclass_consistency.js\"), exports);\n__exportStar(__webpack_require__(/*! ./local_variable_names */ \"./node_modules/@abaplint/core/build/src/rules/local_variable_names.js\"), exports);\n__exportStar(__webpack_require__(/*! ./main_file_contents */ \"./node_modules/@abaplint/core/build/src/rules/main_file_contents.js\"), exports);\n__exportStar(__webpack_require__(/*! ./many_parentheses */ \"./node_modules/@abaplint/core/build/src/rules/many_parentheses.js\"), exports);\n__exportStar(__webpack_require__(/*! ./max_one_method_parameter_per_line */ \"./node_modules/@abaplint/core/build/src/rules/max_one_method_parameter_per_line.js\"), exports);\n__exportStar(__webpack_require__(/*! ./max_one_statement */ \"./node_modules/@abaplint/core/build/src/rules/max_one_statement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./message_exists */ \"./node_modules/@abaplint/core/build/src/rules/message_exists.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_implemented_twice */ \"./node_modules/@abaplint/core/build/src/rules/method_implemented_twice.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_length */ \"./node_modules/@abaplint/core/build/src/rules/method_length.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_overwrites_builtin */ \"./node_modules/@abaplint/core/build/src/rules/method_overwrites_builtin.js\"), exports);\n__exportStar(__webpack_require__(/*! ./method_parameter_names */ \"./node_modules/@abaplint/core/build/src/rules/method_parameter_names.js\"), exports);\n__exportStar(__webpack_require__(/*! ./mix_returning */ \"./node_modules/@abaplint/core/build/src/rules/mix_returning.js\"), exports);\n__exportStar(__webpack_require__(/*! ./modify_only_own_db_tables */ \"./node_modules/@abaplint/core/build/src/rules/modify_only_own_db_tables.js\"), exports);\n__exportStar(__webpack_require__(/*! ./msag_consistency */ \"./node_modules/@abaplint/core/build/src/rules/msag_consistency.js\"), exports);\n__exportStar(__webpack_require__(/*! ./names_no_dash */ \"./node_modules/@abaplint/core/build/src/rules/names_no_dash.js\"), exports);\n__exportStar(__webpack_require__(/*! ./nesting */ \"./node_modules/@abaplint/core/build/src/rules/nesting.js\"), exports);\n__exportStar(__webpack_require__(/*! ./newline_between_methods */ \"./node_modules/@abaplint/core/build/src/rules/newline_between_methods.js\"), exports);\n__exportStar(__webpack_require__(/*! ./no_aliases */ \"./node_modules/@abaplint/core/build/src/rules/no_aliases.js\"), exports);\n__exportStar(__webpack_require__(/*! ./no_chained_assignment */ \"./node_modules/@abaplint/core/build/src/rules/no_chained_assignment.js\"), exports);\n__exportStar(__webpack_require__(/*! ./no_external_form_calls */ \"./node_modules/@abaplint/core/build/src/rules/no_external_form_calls.js\"), exports);\n__exportStar(__webpack_require__(/*! ./no_inline_in_optional_branches */ \"./node_modules/@abaplint/core/build/src/rules/no_inline_in_optional_branches.js\"), exports);\n__exportStar(__webpack_require__(/*! ./no_public_attributes */ \"./node_modules/@abaplint/core/build/src/rules/no_public_attributes.js\"), exports);\n__exportStar(__webpack_require__(/*! ./no_yoda_conditions */ \"./node_modules/@abaplint/core/build/src/rules/no_yoda_conditions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./nrob_consistency */ \"./node_modules/@abaplint/core/build/src/rules/nrob_consistency.js\"), exports);\n__exportStar(__webpack_require__(/*! ./object_naming */ \"./node_modules/@abaplint/core/build/src/rules/object_naming.js\"), exports);\n__exportStar(__webpack_require__(/*! ./obsolete_statement */ \"./node_modules/@abaplint/core/build/src/rules/obsolete_statement.js\"), exports);\n__exportStar(__webpack_require__(/*! ./omit_parameter_name */ \"./node_modules/@abaplint/core/build/src/rules/omit_parameter_name.js\"), exports);\n__exportStar(__webpack_require__(/*! ./omit_preceding_zeros */ \"./node_modules/@abaplint/core/build/src/rules/omit_preceding_zeros.js\"), exports);\n__exportStar(__webpack_require__(/*! ./omit_receiving */ \"./node_modules/@abaplint/core/build/src/rules/omit_receiving.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parser_702_chaining */ \"./node_modules/@abaplint/core/build/src/rules/parser_702_chaining.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parser_error */ \"./node_modules/@abaplint/core/build/src/rules/parser_error.js\"), exports);\n__exportStar(__webpack_require__(/*! ./parser_missing_space */ \"./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js\"), exports);\n__exportStar(__webpack_require__(/*! ./pragma_style */ \"./node_modules/@abaplint/core/build/src/rules/pragma_style.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefer_corresponding */ \"./node_modules/@abaplint/core/build/src/rules/prefer_corresponding.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefer_inline */ \"./node_modules/@abaplint/core/build/src/rules/prefer_inline.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefer_is_not */ \"./node_modules/@abaplint/core/build/src/rules/prefer_is_not.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefer_pragmas */ \"./node_modules/@abaplint/core/build/src/rules/prefer_pragmas.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefer_raise_exception_new */ \"./node_modules/@abaplint/core/build/src/rules/prefer_raise_exception_new.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefer_returning_to_exporting */ \"./node_modules/@abaplint/core/build/src/rules/prefer_returning_to_exporting.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefer_xsdbool */ \"./node_modules/@abaplint/core/build/src/rules/prefer_xsdbool.js\"), exports);\n__exportStar(__webpack_require__(/*! ./preferred_compare_operator */ \"./node_modules/@abaplint/core/build/src/rules/preferred_compare_operator.js\"), exports);\n__exportStar(__webpack_require__(/*! ./prefix_is_current_class */ \"./node_modules/@abaplint/core/build/src/rules/prefix_is_current_class.js\"), exports);\n__exportStar(__webpack_require__(/*! ./reduce_string_templates */ \"./node_modules/@abaplint/core/build/src/rules/reduce_string_templates.js\"), exports);\n__exportStar(__webpack_require__(/*! ./release_idoc */ \"./node_modules/@abaplint/core/build/src/rules/release_idoc.js\"), exports);\n__exportStar(__webpack_require__(/*! ./remove_descriptions */ \"./node_modules/@abaplint/core/build/src/rules/remove_descriptions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./rfc_error_handling */ \"./node_modules/@abaplint/core/build/src/rules/rfc_error_handling.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select_add_order_by */ \"./node_modules/@abaplint/core/build/src/rules/select_add_order_by.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select_performance */ \"./node_modules/@abaplint/core/build/src/rules/select_performance.js\"), exports);\n__exportStar(__webpack_require__(/*! ./select_single_full_key */ \"./node_modules/@abaplint/core/build/src/rules/select_single_full_key.js\"), exports);\n__exportStar(__webpack_require__(/*! ./selection_screen_naming */ \"./node_modules/@abaplint/core/build/src/rules/selection_screen_naming.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sequential_blank */ \"./node_modules/@abaplint/core/build/src/rules/sequential_blank.js\"), exports);\n__exportStar(__webpack_require__(/*! ./short_case */ \"./node_modules/@abaplint/core/build/src/rules/short_case.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sicf_consistency */ \"./node_modules/@abaplint/core/build/src/rules/sicf_consistency.js\"), exports);\n__exportStar(__webpack_require__(/*! ./slow_parameter_passing */ \"./node_modules/@abaplint/core/build/src/rules/slow_parameter_passing.js\"), exports);\n__exportStar(__webpack_require__(/*! ./smim_consistency */ \"./node_modules/@abaplint/core/build/src/rules/smim_consistency.js\"), exports);\n__exportStar(__webpack_require__(/*! ./space_before_colon */ \"./node_modules/@abaplint/core/build/src/rules/space_before_colon.js\"), exports);\n__exportStar(__webpack_require__(/*! ./space_before_dot */ \"./node_modules/@abaplint/core/build/src/rules/space_before_dot.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_escape_host_variables */ \"./node_modules/@abaplint/core/build/src/rules/sql_escape_host_variables.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sql_value_conversion */ \"./node_modules/@abaplint/core/build/src/rules/sql_value_conversion.js\"), exports);\n__exportStar(__webpack_require__(/*! ./start_at_tab */ \"./node_modules/@abaplint/core/build/src/rules/start_at_tab.js\"), exports);\n__exportStar(__webpack_require__(/*! ./static_call_via_instance */ \"./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js\"), exports);\n__exportStar(__webpack_require__(/*! ./strict_sql */ \"./node_modules/@abaplint/core/build/src/rules/strict_sql.js\"), exports);\n__exportStar(__webpack_require__(/*! ./superclass_final */ \"./node_modules/@abaplint/core/build/src/rules/superclass_final.js\"), exports);\n__exportStar(__webpack_require__(/*! ./superfluous_value */ \"./node_modules/@abaplint/core/build/src/rules/superfluous_value.js\"), exports);\n__exportStar(__webpack_require__(/*! ./sy_modification */ \"./node_modules/@abaplint/core/build/src/rules/sy_modification.js\"), exports);\n__exportStar(__webpack_require__(/*! ./tabl_enhancement_category */ \"./node_modules/@abaplint/core/build/src/rules/tabl_enhancement_category.js\"), exports);\n__exportStar(__webpack_require__(/*! ./try_without_catch */ \"./node_modules/@abaplint/core/build/src/rules/try_without_catch.js\"), exports);\n__exportStar(__webpack_require__(/*! ./type_form_parameters */ \"./node_modules/@abaplint/core/build/src/rules/type_form_parameters.js\"), exports);\n__exportStar(__webpack_require__(/*! ./types_naming */ \"./node_modules/@abaplint/core/build/src/rules/types_naming.js\"), exports);\n__exportStar(__webpack_require__(/*! ./uncaught_exception */ \"./node_modules/@abaplint/core/build/src/rules/uncaught_exception.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unknown_types */ \"./node_modules/@abaplint/core/build/src/rules/unknown_types.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unnecessary_chaining */ \"./node_modules/@abaplint/core/build/src/rules/unnecessary_chaining.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unnecessary_pragma */ \"./node_modules/@abaplint/core/build/src/rules/unnecessary_pragma.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unnecessary_return */ \"./node_modules/@abaplint/core/build/src/rules/unnecessary_return.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unreachable_code */ \"./node_modules/@abaplint/core/build/src/rules/unreachable_code.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unsecure_fae */ \"./node_modules/@abaplint/core/build/src/rules/unsecure_fae.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unused_ddic */ \"./node_modules/@abaplint/core/build/src/rules/unused_ddic.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unused_methods */ \"./node_modules/@abaplint/core/build/src/rules/unused_methods.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unused_types */ \"./node_modules/@abaplint/core/build/src/rules/unused_types.js\"), exports);\n__exportStar(__webpack_require__(/*! ./unused_variables */ \"./node_modules/@abaplint/core/build/src/rules/unused_variables.js\"), exports);\n__exportStar(__webpack_require__(/*! ./use_bool_expression */ \"./node_modules/@abaplint/core/build/src/rules/use_bool_expression.js\"), exports);\n__exportStar(__webpack_require__(/*! ./use_class_based_exceptions */ \"./node_modules/@abaplint/core/build/src/rules/use_class_based_exceptions.js\"), exports);\n__exportStar(__webpack_require__(/*! ./use_line_exists */ \"./node_modules/@abaplint/core/build/src/rules/use_line_exists.js\"), exports);\n__exportStar(__webpack_require__(/*! ./use_new */ \"./node_modules/@abaplint/core/build/src/rules/use_new.js\"), exports);\n__exportStar(__webpack_require__(/*! ./when_others_last */ \"./node_modules/@abaplint/core/build/src/rules/when_others_last.js\"), exports);\n__exportStar(__webpack_require__(/*! ./whitespace_end */ \"./node_modules/@abaplint/core/build/src/rules/whitespace_end.js\"), exports);\n__exportStar(__webpack_require__(/*! ./xml_consistency */ \"./node_modules/@abaplint/core/build/src/rules/xml_consistency.js\"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/index.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InlineDataOldVersions = exports.InlineDataOldVersionsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass InlineDataOldVersionsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.InlineDataOldVersionsConf = InlineDataOldVersionsConf;\nclass InlineDataOldVersions extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new InlineDataOldVersionsConf();\n }\n getMetadata() {\n return {\n key: \"inline_data_old_versions\",\n title: \"Inline data, old versions\",\n shortDescription: `Checks for inline data declarations in older releases. Only active for versions less than v740sp02`,\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n if (this.reg.getConfig().getVersion() >= version_1.Version.v740sp02\n || this.reg.getConfig().getVersion() === version_1.Version.Cloud) {\n return [];\n }\n for (const statement of file.getStatements()) {\n // when parsed in old versions these expressions are NOT InlineData\n for (const target of statement.findAllExpressions(expressions_1.Target)) {\n const tokens = target.getAllTokens();\n if (tokens.length !== 4) {\n continue;\n }\n if (!tokens[0].getStr().match(/DATA/i)) {\n continue;\n }\n if (tokens[1].getStr() !== \"(\") {\n continue;\n }\n if (tokens[3].getStr() !== \")\") {\n continue;\n }\n const message = \"Inline DATA not possible in \" + this.reg.getConfig().getVersion();\n const issue = issue_1.Issue.atToken(file, tokens[0], message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.InlineDataOldVersions = InlineDataOldVersions;\n//# sourceMappingURL=inline_data_old_versions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IntfReferencingClas = exports.IntfReferencingClasConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nclass IntfReferencingClasConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** List of classes allowed to be referenced, regex, case insensitive\n * @uniqueItems true\n */\n this.allow = [];\n }\n}\nexports.IntfReferencingClasConf = IntfReferencingClasConf;\nclass IntfReferencingClas {\n constructor() {\n this.conf = new IntfReferencingClasConf();\n }\n getMetadata() {\n return {\n key: \"intf_referencing_clas\",\n title: \"INTF referencing CLAS\",\n shortDescription: `Interface contains references to class`,\n extendedInformation: `Only global interfaces are checked.\r\n Only first level references are checked.\r\n Exception class references are ignored.\r\n Void references are ignored.`,\n };\n }\n getConfig() {\n if (this.conf.allow === undefined) {\n this.conf.allow = [];\n }\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof objects_1.Interface)) {\n return [];\n }\n return this.traverse(new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop());\n }\n ////////////////\n traverse(node) {\n var _a, _b;\n let ret = [];\n const message = \"Referencing CLAS: \";\n const ddic = new ddic_1.DDIC(this.reg);\n for (const r of node.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.ObjectOrientedReference\n && ((_a = r.extra) === null || _a === void 0 ? void 0 : _a.ooType) === \"CLAS\"\n && ((_b = r.extra) === null || _b === void 0 ? void 0 : _b.ooName) !== undefined) {\n const found = this.reg.getObject(\"CLAS\", r.extra.ooName) || undefined;\n if (found && ddic.isException(found.getClassDefinition(), found)) {\n continue;\n }\n else if (this.getConfig().allow.some(reg => new RegExp(reg, \"i\").test(r.extra.ooName))) {\n continue;\n }\n ret.push(issue_1.Issue.atIdentifier(r.position, message + r.extra.ooName, this.getMetadata().key, this.conf.severity));\n }\n }\n for (const c of node.getChildren()) {\n ret = ret.concat(this.traverse(c));\n }\n return ret;\n }\n}\nexports.IntfReferencingClas = IntfReferencingClas;\n//# sourceMappingURL=intf_referencing_clas.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.KeepSingleParameterCallsOnOneLine = exports.KeepSingleParameterCallsOnOneLineConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass KeepSingleParameterCallsOnOneLineConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Max line length, in characters */\n this.length = 120;\n }\n}\nexports.KeepSingleParameterCallsOnOneLineConf = KeepSingleParameterCallsOnOneLineConf;\nclass KeepSingleParameterCallsOnOneLine extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new KeepSingleParameterCallsOnOneLineConf();\n }\n getMetadata() {\n return {\n key: \"keep_single_parameter_on_one_line\",\n title: \"Keep single parameters on one line\",\n shortDescription: `Keep single parameter calls on one line`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-single-parameter-calls-on-one-line`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n badExample: `call_method(\\n 2 ).`,\n goodExample: `call_method( 2 ).`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n let issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n for (const s of file.getStatements()) {\n if (this.isMultiLine(s) === false\n || this.calcStatementLength(s) > this.getConfig().length\n || this.containsNewLineValue(s)\n || this.containsNewLineTableExpression(s)\n || this.containsFieldAssigments(s)\n || this.containsNewLineTemplate(s)) {\n continue;\n }\n for (const c of s.findAllExpressions(Expressions.MethodCallParam)) {\n issues = issues.concat(this.check(c, file));\n }\n }\n return issues;\n }\n ///////////////////////////////////////\n containsFieldAssigments(s) {\n const fs = s.findAllExpressions(Expressions.FieldAssignment);\n return fs.length > 1;\n }\n containsNewLineTableExpression(s) {\n for (const st of s.findAllExpressions(Expressions.TableExpression)) {\n if (st.getFirstToken().getRow() !== st.getLastToken().getRow()) {\n return true;\n }\n }\n return false;\n }\n containsNewLineValue(s) {\n for (const st of s.findAllExpressions(Expressions.Source)) {\n const first = st.getFirstToken().getStr().toUpperCase();\n if (first === \"VALUE\" && st.getFirstToken().getRow() !== st.getLastToken().getRow()) {\n return true;\n }\n }\n return false;\n }\n containsNewLineTemplate(s) {\n for (const st of s.findAllExpressions(Expressions.StringTemplate)) {\n for (const t of st.getAllTokens()) {\n if (t.getStr().includes(\"\\\\n\")) {\n return true;\n }\n }\n }\n return false;\n }\n check(c, file) {\n if (this.isSingleParameter(c) === true && this.isMultiLine(c) === true) {\n for (const sub of c.findAllExpressions(Expressions.MethodCallParam)) {\n if (this.isSingleParameter(sub) === false\n && this.isWithoutParameters(sub) === false) {\n return [];\n }\n }\n const message = \"Keep single parameter on one line\";\n return [issue_1.Issue.atToken(file, c.getFirstToken(), message, this.getMetadata().key, this.conf.severity)];\n }\n return [];\n }\n // including first indentation, worst case calculation add space after each token\n calcStatementLength(c) {\n let length = 0;\n for (const t of c.getTokens()) {\n if (length === 0) {\n length = length + t.getStart().getCol();\n }\n length = length + t.getStr().length + 1;\n }\n return length;\n }\n isMultiLine(c) {\n const first = c.getFirstToken();\n const last = c.getLastToken();\n return first.getStart().getRow() < last.getStart().getRow();\n }\n isWithoutParameters(c) {\n return c.getChildren().length === 2;\n }\n isSingleParameter(c) {\n if (c.findDirectExpression(Expressions.Source)) {\n return true;\n }\n const list = c.findDirectExpression(Expressions.ParameterListS);\n if (list) {\n return list.getChildren().length === 1;\n }\n const param = c.findDirectExpression(Expressions.MethodParameters);\n if (param) {\n if (param.getChildren().length > 2) {\n return false;\n }\n const paramsource = param.findDirectExpression(Expressions.ParameterListS);\n if (paramsource && paramsource.getChildren().length === 1) {\n return true;\n }\n const paramtarget = param.findDirectExpression(Expressions.ParameterListT);\n if (paramtarget && paramtarget.getChildren().length === 1) {\n return true;\n }\n }\n return false;\n }\n}\nexports.KeepSingleParameterCallsOnOneLine = KeepSingleParameterCallsOnOneLine;\n//# sourceMappingURL=keep_single_parameter_on_one_line.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/keyword_case.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/keyword_case.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.KeywordCase = exports.KeywordCaseConf = exports.KeywordCaseStyle = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nvar KeywordCaseStyle;\n(function (KeywordCaseStyle) {\n KeywordCaseStyle[\"Upper\"] = \"upper\";\n KeywordCaseStyle[\"Lower\"] = \"lower\";\n})(KeywordCaseStyle || (exports.KeywordCaseStyle = KeywordCaseStyle = {}));\nclass KeywordCaseConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.style = KeywordCaseStyle.Upper;\n /** Ignore global exception classes */\n this.ignoreExceptions = true;\n this.ignoreLowerClassImplmentationStatement = true;\n this.ignoreGlobalClassDefinition = false;\n this.ignoreGlobalInterface = false;\n this.ignoreFunctionModuleName = false;\n // this ignores keywords in CLASS/ENDCLASS statements of a global class (and only in them, the rest is checked)\n this.ignoreGlobalClassBoundaries = false;\n /** A list of keywords to be ignored */\n this.ignoreKeywords = [];\n }\n}\nexports.KeywordCaseConf = KeywordCaseConf;\nclass Skip {\n constructor(conf) {\n this.skip = false;\n this.isGlobalClass = false;\n this.isGlobalIf = false;\n this.conf = conf;\n }\n skipStatement(statement) {\n const get = statement.get();\n if (get instanceof _statement_1.Unknown\n || get instanceof _statement_1.MacroContent\n || get instanceof _statement_1.MacroCall\n || statement.getFirstToken().getStart() instanceof position_1.VirtualPosition\n || get instanceof _statement_1.Comment) {\n return true;\n }\n if (this.conf.ignoreGlobalClassBoundaries) {\n const node = get;\n if (node instanceof Statements.Interface && statement.findFirstExpression(Expressions.ClassGlobal)) {\n this.isGlobalIf = true;\n return true;\n }\n else if (this.isGlobalIf === true && node instanceof Statements.EndInterface) {\n return true;\n }\n if (node instanceof Statements.ClassDefinition && statement.findFirstExpression(Expressions.ClassGlobal)) {\n this.isGlobalClass = true;\n return true;\n }\n else if (this.isGlobalClass === true\n && (node instanceof Statements.EndClass || node instanceof Statements.ClassImplementation)) {\n return true;\n }\n }\n if (this.conf.ignoreGlobalClassDefinition) {\n if (get instanceof Statements.ClassDefinition\n && statement.findFirstExpression(Expressions.ClassGlobal)) {\n this.skip = true;\n return true;\n }\n else if (this.skip === true && get instanceof Statements.EndClass) {\n this.skip = false;\n return true;\n }\n else if (this.skip === true) {\n return true;\n }\n }\n if (this.conf.ignoreGlobalInterface) {\n if (get instanceof Statements.Interface\n && statement.findFirstExpression(Expressions.ClassGlobal)) {\n this.skip = true;\n return true;\n }\n else if (this.skip === true && get instanceof Statements.EndInterface) {\n this.skip = false;\n return true;\n }\n else if (this.skip === true) {\n return true;\n }\n }\n return false;\n }\n}\nclass KeywordCase extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new KeywordCaseConf();\n }\n getMetadata() {\n return {\n key: \"keyword_case\",\n title: \"Keyword case\",\n shortDescription: `Checks that keywords have the same case. Non-keywords must be lower case.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-your-pretty-printer-team-settings`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf === undefined) {\n this.conf = new KeywordCaseConf();\n }\n if (this.conf.style === undefined) {\n this.conf = new KeywordCaseConf();\n }\n if (this.conf.ignoreExceptions === undefined) {\n this.conf.ignoreExceptions = new KeywordCaseConf().ignoreExceptions;\n }\n }\n runParsed(file, obj) {\n const issues = [];\n const ddic = new ddic_1.DDIC(this.reg);\n const MAX_ISSUES = 100;\n if (this.conf.ignoreExceptions && obj instanceof objects_1.Class) {\n const definition = obj.getClassDefinition();\n if (definition === undefined || ddic.isException(definition, obj)) {\n return [];\n }\n }\n const skip = new Skip(this.getConfig());\n let prev = undefined;\n for (const statement of file.getStatements()) {\n if (skip.skipStatement(statement) === true) {\n continue;\n }\n let result = this.traverse(statement, statement.get());\n if (result.length > 0) {\n if (prev && result[0].token.getStart().equals(prev.getStart())) {\n continue;\n }\n if (statement.getColon() !== undefined) {\n // if its a chained statement, go token by token\n result = [result[0]];\n }\n const issue = this.build(result, file);\n issues.push(issue);\n if (issues.length > MAX_ISSUES) {\n break;\n }\n prev = result[0].token;\n }\n }\n return issues;\n }\n //////////////////\n build(tokens, file) {\n const first = tokens[0];\n const firstToken = tokens[0].token;\n const lastToken = tokens[tokens.length - 1].token;\n const firstTokenValue = firstToken.getStr();\n let description = \"\";\n if (first.keyword === true) {\n description = `Keyword should be ${this.conf.style} case: \"${firstTokenValue}\"`;\n }\n else {\n description = `Identifiers should be lower case: \"${firstTokenValue}\"`;\n }\n const draft = new edit_helper_1.EditDraft(file);\n for (const token of tokens) {\n const str = token.token.getStr();\n const pos = token.token.getStart();\n if (token.keyword === true) {\n if (this.conf.style === KeywordCaseStyle.Lower) {\n draft.replace(pos, str.toLowerCase());\n }\n else {\n draft.replace(pos, str.toUpperCase());\n }\n }\n else {\n draft.replace(pos, str.toLowerCase());\n }\n }\n const fix = draft.toEdit();\n return issue_1.Issue.atRange(file, firstToken.getStart(), lastToken.getEnd(), description, this.getMetadata().key, this.conf.severity, fix);\n }\n /** returns a list of tokens which violates the keyword_case rule */\n traverse(s, parent) {\n let ret = [];\n for (const child of s.getChildren()) {\n if (child instanceof nodes_1.TokenNodeRegex) {\n if (this.conf.ignoreLowerClassImplmentationStatement\n && parent instanceof Statements.ClassImplementation) {\n continue;\n }\n const str = child.get().getStr();\n const upper = str.toUpperCase();\n // todo, this is a hack, the parser should recongize OTHERS/TEXT as a keyword\n if (upper === \"OTHERS\" || upper === \"TEXT\") {\n continue;\n }\n if (this.conf.ignoreFunctionModuleName === true\n && parent instanceof Statements.FunctionModule && upper !== \"FUNCTION\") {\n continue;\n }\n // todo, this is a hack, the parser should recigize SCREEN as a keyword\n if (upper === \"SCREEN\"\n && (parent instanceof Statements.ModifyDatabase\n || parent instanceof Statements.ModifyInternal\n || parent instanceof Statements.Loop)) {\n continue;\n }\n if (str !== str.toLowerCase() && child.get() instanceof tokens_1.Identifier) {\n ret.push({ token: child.get(), keyword: false });\n }\n }\n else if (child instanceof nodes_1.TokenNode) {\n const str = child.get().getStr();\n if (this.violatesRule(str) && child.get() instanceof tokens_1.Identifier) {\n ret.push({ token: child.get(), keyword: true });\n }\n }\n else if (child instanceof nodes_1.ExpressionNode) {\n ret = ret.concat(this.traverse(child, parent));\n }\n else {\n throw new Error(\"keyword_case, traverseStatement, unexpected node type\");\n }\n }\n return ret;\n }\n violatesRule(keyword) {\n if (this.conf.ignoreKeywords && this.conf.ignoreKeywords.map(k => { return k.toUpperCase(); }).includes(keyword.toUpperCase())) {\n return false;\n }\n if (this.conf.style === KeywordCaseStyle.Lower) {\n return keyword !== keyword.toLowerCase();\n }\n else if (this.conf.style === KeywordCaseStyle.Upper) {\n return keyword !== keyword.toUpperCase();\n }\n return false;\n }\n}\nexports.KeywordCase = KeywordCase;\n//# sourceMappingURL=keyword_case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/keyword_case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LineBreakMultipleParameters = exports.LineBreakMultipleParametersConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass LineBreakMultipleParametersConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Amount of allowed parameters on one line */\n this.count = 1;\n }\n}\nexports.LineBreakMultipleParametersConf = LineBreakMultipleParametersConf;\nclass LineBreakMultipleParameters extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new LineBreakMultipleParametersConf();\n }\n getMetadata() {\n return {\n key: \"line_break_multiple_parameters\",\n title: \"Line break multiple parameters\",\n shortDescription: `Line break multiple parameters`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#line-break-multiple-parameters`,\n badExample: `method( parameter1 = value parameter2 = value ).`,\n goodExample: `method( parameter1 = value\\n parameter2 = value ).`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n for (const s of file.getStatements()) {\n for (const e of s.findAllExpressions(Expressions.ParameterListS)) {\n if (s.getFirstToken().getStart() instanceof position_1.VirtualPosition) {\n continue; // skip macro content\n }\n const parameters = e.findDirectExpressions(Expressions.ParameterS);\n if (parameters.length <= 1) {\n continue;\n }\n let previous = parameters[0];\n for (let i = 1; i < parameters.length; i++) {\n const current = parameters[i];\n if (this.conf.count && i < this.conf.count) {\n previous = current;\n continue;\n }\n const first = current.getFirstToken();\n if (previous.getFirstToken().getRow() === first.getRow()) {\n const fix = edit_helper_1.EditHelper.insertAt(file, first.getStart(), \"\\n\" + \" \".repeat(parameters[0].getFirstToken().getStart().getCol() - 1));\n issues.push(issue_1.Issue.atToken(file, current.getFirstToken(), this.getMetadata().title, this.getMetadata().key, this.conf.severity, fix));\n }\n previous = current;\n }\n }\n }\n return issues;\n }\n}\nexports.LineBreakMultipleParameters = LineBreakMultipleParameters;\n//# sourceMappingURL=line_break_multiple_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/line_break_style.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/line_break_style.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LineBreakStyle = exports.LineBreakStyleConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass LineBreakStyleConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.LineBreakStyleConf = LineBreakStyleConf;\nclass LineBreakStyle {\n constructor() {\n this.conf = new LineBreakStyleConf();\n }\n getMetadata() {\n return {\n key: \"line_break_style\",\n title: \"Makes sure line breaks are consistent in the ABAP code\",\n shortDescription: `Enforces LF as newlines in ABAP files\r\n\r\nabapGit does not work with CRLF`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile],\n };\n }\n initialize(_reg) {\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n const output = [];\n for (const file of obj.getFiles()) {\n if (file.getFilename().endsWith(\".abap\")) {\n const rows = file.getRawRows();\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].endsWith(\"\\r\") === true) {\n const message = \"Line contains carriage return\";\n const issue = issue_1.Issue.atRow(file, i + 1, message, this.getMetadata().key, this.conf.severity);\n output.push(issue);\n break; // only one finding per file\n }\n }\n }\n }\n return output;\n }\n}\nexports.LineBreakStyle = LineBreakStyle;\n//# sourceMappingURL=line_break_style.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/line_break_style.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/line_length.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/line_length.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LineLength = exports.LineLengthConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass LineLengthConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Maximum line length in characters, trailing whitespace ignored */\n this.length = 120;\n }\n}\nexports.LineLengthConf = LineLengthConf;\nclass LineLength extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new LineLengthConf();\n }\n getMetadata() {\n return {\n key: \"line_length\",\n title: \"Line length\",\n shortDescription: `Detects lines exceeding the provided maximum length.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#stick-to-a-reasonable-line-length\r\nhttps://docs.abapopenchecks.org/checks/04/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n // maximum line length in abap files\n const maxLineLength = 255;\n const array = file.getRawRows();\n for (let rowIndex = 0; rowIndex < array.length; rowIndex++) {\n const row = array[rowIndex].replace(\"\\r\", \"\");\n if (row.length > maxLineLength) {\n const message = `Maximum allowed line length of ${maxLineLength} exceeded, currently ${row.length}`;\n issues.push(issue_1.Issue.atRow(file, rowIndex + 1, message, this.getMetadata().key, this.conf.severity));\n }\n else if (row.length > this.conf.length) {\n const message = `Reduce line length to max ${this.conf.length}, currently ${row.length}`;\n issues.push(issue_1.Issue.atRow(file, rowIndex + 1, message, this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.LineLength = LineLength;\n//# sourceMappingURL=line_length.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/line_length.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/line_only_punc.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/line_only_punc.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LineOnlyPunc = exports.LineOnlyPuncConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nclass LineOnlyPuncConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Ignore lines with only puncutation in global exception classes */\n this.ignoreExceptions = true;\n }\n}\nexports.LineOnlyPuncConf = LineOnlyPuncConf;\nclass LineOnlyPunc extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new LineOnlyPuncConf();\n }\n getMetadata() {\n return {\n key: \"line_only_punc\",\n title: \"Line containing only punctuation\",\n shortDescription: `Detects lines containing only punctuation.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#close-brackets-at-line-end\r\nhttps://docs.abapopenchecks.org/checks/16/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: \"zcl_class=>method(\\n).\",\n goodExample: \"zcl_class=>method( ).\",\n };\n }\n getMessage() {\n return \"A line should not contain only \\\".\\\" or \\\").\\\"\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n const ddic = new ddic_1.DDIC(this.reg);\n if (obj instanceof objects_1.Class) {\n const definition = obj.getClassDefinition();\n if (definition === undefined) {\n return [];\n }\n else if (this.conf.ignoreExceptions && ddic.isException(definition, obj)) {\n return [];\n }\n }\n const rows = file.getRawRows();\n const reg = new RegExp(\"^\\\\)?\\\\. *(\\\\\\\".*)?$\");\n for (let i = 0; i < rows.length; i++) {\n if (reg.exec(rows[i].trim())) {\n const column = rows[i].indexOf(\")\") >= 0 ? rows[i].indexOf(\")\") + 1 : rows[i].indexOf(\".\") + 1;\n const position = new position_1.Position(i + 1, column);\n // merge punc into previous row\n let rowContent = rows[i].trim();\n // if reported row contains a paranthesis, prefix with space if needed\n if (rowContent.length > 1 && !rows[i - 1].endsWith(\" \") && !rows[i - 1].endsWith(\" \\r\")) {\n rowContent = \" \" + rowContent;\n }\n let offset = 0;\n if (rows[i - 1].endsWith(\"\\r\")) {\n offset = -1;\n }\n const startPos = new position_1.Position(i, rows[i - 1].length + 1 + offset);\n const endPos = new position_1.Position(i + 1, rows[i].length + 1);\n const fix = edit_helper_1.EditHelper.replaceRange(file, startPos, endPos, rowContent);\n const issue = issue_1.Issue.atPosition(file, position, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.LineOnlyPunc = LineOnlyPunc;\n//# sourceMappingURL=line_only_punc.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/line_only_punc.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/local_class_naming.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/local_class_naming.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LocalClassNaming = exports.LocalClassNamingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _naming_rule_config_1 = __webpack_require__(/*! ./_naming_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js\");\nconst name_validator_1 = __webpack_require__(/*! ../utils/name_validator */ \"./node_modules/@abaplint/core/build/src/utils/name_validator.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nclass LocalClassNamingConf extends _naming_rule_config_1.NamingRuleConfig {\n constructor() {\n super(...arguments);\n /** The pattern for local class names */\n this.local = \"^LCL_.+$\";\n /** The pattern for local exception names */\n this.exception = \"^LCX_.+$\";\n /** The pattern for local test class names */\n this.test = \"^LTCL_.+$\";\n }\n}\nexports.LocalClassNamingConf = LocalClassNamingConf;\nclass LocalClassNaming extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new LocalClassNamingConf();\n }\n getMetadata() {\n return {\n key: \"local_class_naming\",\n title: \"Local class naming conventions\",\n shortDescription: `Allows you to enforce a pattern, such as a prefix, for local class names.`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(expected, actual) {\n return this.conf.patternKind === \"required\" ?\n \"Local class name does not match pattern \" + expected + \": \" + actual :\n \"Local class name must not match pattern \" + expected + \": \" + actual;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n if (this.conf.patternKind === undefined) {\n this.conf.patternKind = \"required\";\n }\n const ddic = new ddic_1.DDIC(this.reg);\n for (const classDef of file.getInfo().listClassDefinitions()) {\n if (classDef.isGlobal) {\n continue;\n }\n const className = classDef.name;\n let expected = \"\";\n if (classDef.isForTesting) {\n expected = this.conf.test;\n }\n else if (ddic.isException(classDef, obj)) {\n expected = this.conf.exception;\n }\n else {\n expected = this.conf.local;\n }\n if (expected === undefined || expected.length === 0) {\n continue;\n }\n const regex = new RegExp(expected, \"i\");\n if (name_validator_1.NameValidator.violatesRule(className, regex, this.conf)) {\n issues.push(issue_1.Issue.atIdentifier(classDef.identifier, this.getDescription(expected, className), this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.LocalClassNaming = LocalClassNaming;\n//# sourceMappingURL=local_class_naming.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/local_class_naming.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/local_testclass_consistency.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/local_testclass_consistency.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LocalTestclassConsistency = exports.LocalTestclassConsistencyConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass LocalTestclassConsistencyConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.LocalTestclassConsistencyConf = LocalTestclassConsistencyConf;\nclass LocalTestclassConsistency extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new LocalTestclassConsistencyConf();\n }\n getMetadata() {\n return {\n key: \"local_testclass_consistency\",\n title: \"Local testclass consistency\",\n shortDescription: `Checks that local test classes are placed in the test include, and class unit test flag is set`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n var _a;\n const issues = [];\n if (this.reg.getConfig().getVersion() === version_1.Version.v700) {\n // 700 does not have testclass includes\n return [];\n }\n if (!(obj instanceof objects_1.Class)) {\n return [];\n }\n for (const c of file.getInfo().listClassDefinitions()) {\n if (c.isLocal && c.isForTesting && !file.getFilename().includes(\".testclasses.abap\")) {\n const message = \"Place local testclass \\\"\" + c.name + \"\\\" in the testclass include\";\n const issue = issue_1.Issue.atIdentifier(c.identifier, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (file.getFilename().includes(\".testclasses.\") === true\n && obj.getTestclassFile() !== undefined\n && ((_a = obj.getXML()) === null || _a === void 0 ? void 0 : _a.includes(\"X\")) === false) {\n const id = obj.getIdentifier();\n if (id) {\n const message = \"Has testclass, but XML does not set \";\n const issue = issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.LocalTestclassConsistency = LocalTestclassConsistency;\n//# sourceMappingURL=local_testclass_consistency.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/local_testclass_consistency.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/local_variable_names.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/local_variable_names.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LocalVariableNames = exports.LocalVariableNamesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _naming_rule_config_1 = __webpack_require__(/*! ./_naming_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js\");\nconst name_validator_1 = __webpack_require__(/*! ../utils/name_validator */ \"./node_modules/@abaplint/core/build/src/utils/name_validator.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass LocalVariableNamesConf extends _naming_rule_config_1.NamingRuleConfig {\n constructor() {\n super(...arguments);\n /** The pattern for local variable names */\n this.expectedData = \"^L._.+$\";\n /** The pattern for local constant names */\n this.expectedConstant = \"^LC_.+$\";\n /** The pattern for field symbol names */\n this.expectedFS = \"^$\";\n }\n}\nexports.LocalVariableNamesConf = LocalVariableNamesConf;\nclass LocalVariableNames extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new LocalVariableNamesConf();\n }\n getMetadata() {\n return {\n key: \"local_variable_names\",\n title: \"Local variable naming conventions\",\n shortDescription: `\r\nAllows you to enforce a pattern, such as a prefix, for local variables, constants and field symbols.\r\nRegexes are case-insensitive.`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(expected, actual) {\n return this.conf.patternKind === \"required\" ?\n \"Local variable name does not match pattern \" + expected + \": \" + actual :\n \"Local variable name must not match pattern \" + expected + \": \" + actual;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const ret = [];\n if (this.conf.patternKind === undefined) {\n this.conf.patternKind = \"required\";\n }\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n // inside METHOD, FORM, FUNCTION MODULE\n for (const node of stru.findAllStructures(Structures.Form)) {\n ret.push(...this.checkLocals(node, file));\n }\n for (const node of stru.findAllStructures(Structures.Method)) {\n ret.push(...this.checkLocals(node, file));\n }\n for (const node of stru.findAllStructures(Structures.FunctionModule)) {\n ret.push(...this.checkLocals(node, file));\n }\n return ret;\n }\n checkLocals(structure, file) {\n let ret = [];\n // data, field symbols\n for (const dat of structure.findAllStatements(Statements.Data)) {\n const parent = structure.findParent(dat);\n if (parent && parent.get() instanceof Structures.Data) {\n continue; // inside DATA BEGIN OF\n }\n const found = dat.findFirstExpression(Expressions.DefinitionName);\n if (found) {\n const token = found.getFirstToken();\n ret = ret.concat(this.checkName(token, file, this.conf.expectedData));\n }\n }\n // inline data\n for (const dat of structure.findAllExpressions(Expressions.InlineData)) {\n const found = dat.findFirstExpression(Expressions.TargetField);\n if (found) {\n const token = found.getFirstToken();\n ret = ret.concat(this.checkName(token, file, this.conf.expectedData));\n }\n }\n // data structures, data begin of, first level\n const dataStructures = structure.findAllStructures(Structures.Data);\n for (const struc of dataStructures) {\n // ignore nested DATA BEGIN\n const stat = struc.findFirstStatement(Statements.DataBegin);\n const found = stat === null || stat === void 0 ? void 0 : stat.findFirstExpression(Expressions.DefinitionName);\n if (found) {\n const token = found.getFirstToken();\n ret = ret.concat(this.checkName(token, file, this.conf.expectedData));\n }\n }\n for (const fieldsymbol of structure.findAllStatements(Statements.FieldSymbol)) {\n const found = fieldsymbol.findFirstExpression(Expressions.FieldSymbol);\n if (found) {\n const token = found.getFirstToken();\n ret = ret.concat(this.checkName(token, file, this.conf.expectedFS));\n }\n }\n // inline field symbols\n for (const fieldsymbol of structure.findAllExpressions(Expressions.InlineFS)) {\n const found = fieldsymbol.findFirstExpression(Expressions.TargetFieldSymbol);\n if (found) {\n const token = found.getFirstToken();\n ret = ret.concat(this.checkName(token, file, this.conf.expectedFS));\n }\n }\n const constants = structure.findAllStatements(Statements.Constant);\n for (const constant of constants) {\n const parent = structure.findParent(constant);\n if (parent && parent.get() instanceof Structures.Constants) {\n continue; // inside DATA BEGIN OF\n }\n const found = constant.findFirstExpression(Expressions.DefinitionName);\n if (found) {\n const token = found.getFirstToken();\n ret = ret.concat(this.checkName(token, file, this.conf.expectedConstant));\n }\n }\n return ret;\n }\n checkName(token, file, expected) {\n const ret = [];\n const regex = new RegExp(expected, \"i\");\n const name = token.getStr();\n if (name_validator_1.NameValidator.violatesRule(name, regex, this.conf)) {\n const message = this.getDescription(expected, name);\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n return ret;\n }\n}\nexports.LocalVariableNames = LocalVariableNames;\n//# sourceMappingURL=local_variable_names.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/local_variable_names.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/main_file_contents.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/main_file_contents.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MainFileContents = exports.MainFileContentsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass MainFileContentsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MainFileContentsConf = MainFileContentsConf;\nclass MainFileContents {\n constructor() {\n this.conf = new MainFileContentsConf();\n }\n getMetadata() {\n return {\n key: \"main_file_contents\",\n title: \"Main file contents\",\n shortDescription: `Checks related to report declarations.`,\n extendedInformation: `Does not run if the target version is Cloud\r\n\r\n* PROGs must begin with \"REPORT .\" or \"PROGRAM .\r\n* TYPEs must begin with \"TYPE-POOL .\"\r\n`,\n };\n }\n getDescription(details) {\n return \"Main file must have specific contents: \" + details;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)\n || this.reg.getConfig().getVersion() === version_1.Version.Cloud) {\n return [];\n }\n const main = obj.getMainABAPFile();\n if (main === undefined) {\n return [];\n }\n const stru = main.getStructure();\n if (stru === undefined) {\n return [];\n }\n if (obj instanceof Objects.Program\n && obj.isInclude() === false\n && obj.isModulePool() === false) {\n let count = 0;\n let first = main.getStatements()[count];\n while (first !== undefined && first.get() instanceof _statement_1.Comment) {\n count = count + 1;\n first = main.getStatements()[count];\n }\n if (first === undefined || !(first.get() instanceof Statements.Report\n || first.get() instanceof Statements.Program)) {\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(main, position, this.getDescription(\"Report must begin with REPORT or PROGRAM\"), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n const name = first.findFirstExpression(Expressions.ReportName);\n if (name === undefined) {\n const token = first.getFirstToken();\n const issue = issue_1.Issue.atToken(main, token, this.getDescription(\"Add report name to REPORT or PROGRAM statement\"), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n else if (name.getFirstToken().getStr().toUpperCase() !== obj.getName()) {\n const token = name.getFirstToken();\n const issue = issue_1.Issue.atToken(main, token, this.getDescription(\"REPORT or PROGRAM name must match filename\"), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n }\n else if (obj instanceof Objects.TypePool) {\n let count = 0;\n let first = main.getStatements()[count];\n while (first !== undefined && first.get() instanceof _statement_1.Comment) {\n count = count + 1;\n first = main.getStatements()[count];\n }\n if (first === undefined || !(first.get() instanceof Statements.TypePool)) {\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(main, position, this.getDescription(\"Type pool must begin with TYPE-POOL\"), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n const name = first.getChildren()[3];\n if (name.getFirstToken().getStr().toUpperCase() !== obj.getName()) {\n const token = name.getFirstToken();\n const issue = issue_1.Issue.atToken(main, token, this.getDescription(\"TYPE-POOL name must match filename\"), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n }\n return [];\n }\n}\nexports.MainFileContents = MainFileContents;\n//# sourceMappingURL=main_file_contents.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/main_file_contents.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/many_parentheses.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/many_parentheses.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ManyParentheses = exports.ManyParenthesesConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass ManyParenthesesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ManyParenthesesConf = ManyParenthesesConf;\nclass ManyParentheses extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ManyParenthesesConf();\n }\n getMetadata() {\n return {\n key: \"many_parentheses\",\n title: \"Too many parentheses\",\n shortDescription: `Searches for expressions where extra parentheses can safely be removed`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n badExample: `\r\nIF ( destination IS INITIAL ).\r\nENDIF.\r\nIF foo = boo AND ( bar = lar AND moo = loo ).\r\nENDIF.\r\n`,\n goodExample: `\r\nIF destination IS INITIAL.\r\nENDIF.\r\nIF foo = boo AND bar = lar AND moo = loo.\r\nENDIF.\r\n`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const structure = file.getStructure();\n if (structure === undefined) {\n return [];\n }\n for (const cond of structure.findAllExpressionsMulti([Expressions.Cond, Expressions.ComponentCond])) {\n issues.push(...this.analyze(file, cond));\n }\n for (const sub of structure.findAllExpressionsMulti([Expressions.CondSub, Expressions.ComponentCondSub])) {\n let cond = [];\n if (sub.get() instanceof Expressions.CondSub) {\n cond = sub.findDirectExpressions(Expressions.Cond);\n }\n else {\n cond = sub.findDirectExpressions(Expressions.ComponentCond);\n }\n if (cond.length !== 1) {\n continue;\n }\n if (cond[0].getChildren().length === 1) {\n const message = \"Too many parentheses, simple\";\n const fixText = sub.getChildren()[1].concatTokens();\n const fix = edit_helper_1.EditHelper.replaceRange(file, sub.getFirstToken().getStart(), sub.getLastToken().getEnd(), fixText);\n const issue = issue_1.Issue.atToken(file, sub.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n for (const m of structure.findAllStatements(Statements.Move)) {\n issues.push(...this.analyzeMove(file, m));\n }\n for (const m of structure.findAllStatements(Statements.Select)) {\n issues.push(...this.analyzeInto(file, m));\n }\n return issues;\n }\n ////////////////////\n analyzeInto(file, m) {\n const into = m.findFirstExpression(Expressions.SQLIntoStructure);\n if (into === undefined) {\n return [];\n }\n const second = into.getAllTokens()[1];\n if (second === undefined || second.getStr() !== \"(\") {\n return [];\n }\n const concat = into.concatTokens();\n if (concat.endsWith(\")\") === true && concat.includes(\",\") === false) {\n const issue = issue_1.Issue.atStatement(file, m, \"Too many parentheses\", this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n return [];\n }\n analyzeMove(file, m) {\n const issues = [];\n const children = m.getChildren();\n const last = children[children.length - 2];\n const lastChildren = last.getChildren();\n if (lastChildren.length === 3\n && lastChildren[0].getFirstToken().getStr() === \"(\"\n && lastChildren[2].getFirstToken().getStr() === \")\") {\n const issue = issue_1.Issue.atToken(file, last.getFirstToken(), \"Too many parentheses\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n return issues;\n }\n analyze(file, cond) {\n const issues = [];\n let comparator = \"\";\n let found = false;\n for (const c of cond.getChildren()) {\n let current = \"\";\n if (c instanceof nodes_1.TokenNode) {\n current = c.get().getStr().toUpperCase();\n }\n else if (c instanceof nodes_1.ExpressionNode\n && (c.get() instanceof Expressions.CondSub || c.get() instanceof Expressions.ComponentCondSub)) {\n if (c.getFirstToken().getStr().toUpperCase() === \"NOT\") {\n return [];\n }\n let i = c.findDirectExpression(Expressions.Cond);\n if (i === undefined) {\n i = c.findDirectExpression(Expressions.ComponentCond);\n }\n if (i === undefined) {\n return [];\n }\n current = this.findComparator(i);\n if (current !== \"\") {\n found = true; // dont report for the simple case that contains quick fixes\n }\n }\n if (comparator === \"\") {\n comparator = current;\n }\n else if (comparator !== \"\" && current !== \"\" && comparator !== current) {\n return [];\n }\n }\n if (comparator !== \"\" && comparator !== \"MIXED\" && found === true) {\n const message = \"Too many parentheses, complex\";\n const issue = issue_1.Issue.atToken(file, cond.getFirstToken(), message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n return issues;\n }\n findComparator(cond) {\n let comparator = \"\";\n const children = cond.getChildren();\n for (const c of children) {\n if (c instanceof nodes_1.TokenNode) {\n const current = c.get().getStr().toUpperCase();\n if (comparator === \"\") {\n comparator = current;\n }\n else if (current !== comparator) {\n return \"MIXED\";\n }\n }\n }\n return comparator;\n }\n}\nexports.ManyParentheses = ManyParentheses;\n//# sourceMappingURL=many_parentheses.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/many_parentheses.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/max_one_method_parameter_per_line.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/max_one_method_parameter_per_line.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MaxOneMethodParameterPerLine = exports.MaxOneMethodParameterPerLineConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass MaxOneMethodParameterPerLineConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MaxOneMethodParameterPerLineConf = MaxOneMethodParameterPerLineConf;\nclass MaxOneMethodParameterPerLine extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new MaxOneMethodParameterPerLineConf();\n }\n getMetadata() {\n return {\n key: \"max_one_method_parameter_per_line\",\n title: \"Max one method parameter definition per line\",\n shortDescription: `Keep max one method parameter description per line`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Whitespace],\n badExample: `\r\nMETHODS apps_scope_token\r\n IMPORTING\r\n body TYPE bodyapps_scope_token client_id TYPE str.`,\n goodExample: `\r\nMETHODS apps_scope_token\r\n IMPORTING\r\n body TYPE bodyapps_scope_token\r\n client_id TYPE str.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n for (const statement of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllStatements(Statements.MethodDef)) || []) {\n let prev = undefined;\n for (const p of statement.findAllExpressions(Expressions.MethodParam)) {\n if (prev === undefined) {\n prev = p;\n continue;\n }\n if (prev.getFirstToken().getStart().getRow() === p.getFirstToken().getStart().getRow()) {\n const issue = issue_1.Issue.atToken(file, prev.getFirstToken(), this.getMetadata().title, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n prev = p;\n }\n }\n return issues;\n }\n}\nexports.MaxOneMethodParameterPerLine = MaxOneMethodParameterPerLine;\n//# sourceMappingURL=max_one_method_parameter_per_line.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/max_one_method_parameter_per_line.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/max_one_statement.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/max_one_statement.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MaxOneStatement = exports.MaxOneStatementConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass MaxOneStatementConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MaxOneStatementConf = MaxOneStatementConf;\nclass MaxOneStatement extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new MaxOneStatementConf();\n }\n getMetadata() {\n return {\n key: \"max_one_statement\",\n title: \"Max one statement per line\",\n shortDescription: `Checks that each line contains only a single statement.`,\n extendedInformation: `Does not report empty statements, use rule empty_statement for detecting empty statements.\r\n\r\nDoes not report anything for chained statements.\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#no-more-than-one-statement-per-line\r\nhttps://docs.abapopenchecks.org/checks/11/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `WRITE foo. WRITE bar.`,\n goodExample: `WRITE foo.\\nWRITE bar.`,\n };\n }\n getMessage() {\n return \"Only one statement is allowed per line\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n let prev = 0;\n let reported = 0;\n for (const statement of file.getStatements()) {\n const term = statement.getTerminator();\n if (statement.get() instanceof _statement_1.Comment\n || statement.get() instanceof _statement_1.NativeSQL\n || term === \",\") {\n continue;\n }\n const pos = statement.getStart();\n if (pos instanceof position_1.VirtualPosition) {\n continue;\n }\n const row = pos.getRow();\n if (prev === row && row !== reported && statement.getFirstToken().getStr() !== \".\") {\n const fix = edit_helper_1.EditHelper.insertAt(file, pos, \"\\n\");\n const issue = issue_1.Issue.atPosition(file, pos, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n reported = row;\n }\n prev = row;\n }\n return issues;\n }\n}\nexports.MaxOneStatement = MaxOneStatement;\n//# sourceMappingURL=max_one_statement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/max_one_statement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/message_exists.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/message_exists.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MessageExistsRule = exports.MessageExistsConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass MessageExistsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MessageExistsConf = MessageExistsConf;\nclass MessageExistsRule extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new MessageExistsConf();\n }\n getMetadata() {\n return {\n key: \"message_exists\",\n title: \"Check MESSAGE exists\",\n shortDescription: `In message statements, check that the message class + id exist`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n const expressions = struc.findAllExpressionsMulti([Expressions.MessageClass, Expressions.MessageSource]);\n for (const node of expressions) {\n if (node.get() instanceof Expressions.MessageClass) {\n const token = node.getFirstToken();\n const name = token.getStr();\n if (this.reg.getObject(\"MSAG\", name) === undefined\n && new ddic_1.DDIC(this.reg).inErrorNamespace(name) === true) {\n const message = \"Message class \\\"\" + name + \"\\\" not found\";\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n for (const node of expressions) {\n if (node.get() instanceof Expressions.MessageSource) {\n const clas = node.findFirstExpression(Expressions.MessageClass);\n if (clas === undefined) {\n // todo, handle case where message class is defined on header level instead of in the statement\n continue;\n }\n const token = clas.getFirstToken();\n const name = token.getStr();\n const msag = this.reg.getObject(\"MSAG\", name);\n if (msag === undefined) {\n if (new ddic_1.DDIC(this.reg).inErrorNamespace(name) === true) {\n const message = \"Message class \\\"\" + token.getStr() + \"\\\" not found\";\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n continue;\n }\n const typeNumber = node.findFirstExpression(Expressions.MessageTypeAndNumber);\n if (typeNumber === undefined) {\n continue;\n }\n const numberToken = typeNumber.getFirstToken();\n const num = numberToken.getStr().substr(1);\n if (msag.getByNumber(num) === undefined) {\n const message = \"Message number \\\"\" + num + \"\\\" not found in class \\\"\" + name + \"\\\"\";\n const issue = issue_1.Issue.atToken(file, numberToken, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n // todo, check number of placeholders in message vs code matches\n return issues;\n }\n}\nexports.MessageExistsRule = MessageExistsRule;\n//# sourceMappingURL=message_exists.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/message_exists.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/method_implemented_twice.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/method_implemented_twice.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodImplementedTwice = exports.MethodImplementedTwiceConf = void 0;\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass MethodImplementedTwiceConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MethodImplementedTwiceConf = MethodImplementedTwiceConf;\nclass MethodImplementedTwice extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new MethodImplementedTwiceConf();\n }\n getMetadata() {\n return {\n key: \"method_implemented_twice\",\n title: \"Method implemented twice\",\n shortDescription: `Reports an error if a method is implemented or defined twice`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n for (const classDef of file.getInfo().listClassImplementations()) {\n const names = {};\n for (const m of classDef.methods) {\n const name = m.getName().toUpperCase();\n if (names[name] === undefined) {\n names[name] = true;\n }\n else {\n const message = `Method ${name} implemented twice`;\n issues.push(issue_1.Issue.atToken(file, m.getToken(), message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n for (const classDef of file.getInfo().listClassDefinitions()) {\n const names = {};\n for (const m of classDef.methods) {\n const name = m.name.toUpperCase();\n if (names[name] === undefined) {\n names[name] = true;\n }\n else {\n const message = `Method ${name} defined twice`;\n issues.push(issue_1.Issue.atToken(file, m.identifier.getToken(), message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n for (const iDef of file.getInfo().listInterfaceDefinitions()) {\n const names = {};\n for (const m of iDef.methods) {\n const name = m.name.toUpperCase();\n if (names[name] === undefined) {\n names[name] = true;\n }\n else {\n const message = `Method ${name} implemented twice`;\n issues.push(issue_1.Issue.atIdentifier(m.identifier, message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n return issues;\n }\n}\nexports.MethodImplementedTwice = MethodImplementedTwice;\n//# sourceMappingURL=method_implemented_twice.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/method_implemented_twice.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/method_length.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/method_length.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodLength = exports.MethodLengthConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst method_length_stats_1 = __webpack_require__(/*! ../utils/method_length_stats */ \"./node_modules/@abaplint/core/build/src/utils/method_length_stats.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst form_length_stats_1 = __webpack_require__(/*! ../utils/form_length_stats */ \"./node_modules/@abaplint/core/build/src/utils/form_length_stats.js\");\nclass MethodLengthConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Maximum method/form length in statements. */\n this.statements = 100;\n /** Checks for empty methods/forms. */\n this.errorWhenEmpty = true;\n /** Option to ignore test classes for this check. */\n this.ignoreTestClasses = false;\n /** Option to check forms. */\n this.checkForms = true;\n }\n}\nexports.MethodLengthConf = MethodLengthConf;\nvar IssueType;\n(function (IssueType) {\n IssueType[IssueType[\"EmptyMethod\"] = 0] = \"EmptyMethod\";\n IssueType[IssueType[\"MaxStatements\"] = 1] = \"MaxStatements\";\n})(IssueType || (IssueType = {}));\nclass MethodLength {\n constructor() {\n this.conf = new MethodLengthConf();\n }\n getMetadata() {\n return {\n key: \"method_length\",\n title: \"Method/Form Length\",\n shortDescription: `Checks relating to method/form length.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-methods-small`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(issueType, actual, type) {\n switch (issueType) {\n case IssueType.EmptyMethod: {\n return \"Empty \" + type;\n }\n case IssueType.MaxStatements: {\n return \"Reduce \" + type + \" length to max \" + this.conf.statements + \" statements, currently \" + actual;\n }\n default: {\n return \"\";\n }\n }\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n const methodStats = method_length_stats_1.MethodLengthStats.run(obj);\n const methodIssues = this.check(methodStats, \"METHOD\");\n let formIssues = [];\n if (this.conf.checkForms) {\n const formStats = form_length_stats_1.FormLengthStats.run(obj);\n formIssues = this.check(formStats, \"FORM\");\n }\n return methodIssues.concat(formIssues);\n }\n // ***********************\n check(stats, type) {\n const issues = [];\n for (const s of stats) {\n if ((this.conf.ignoreTestClasses === true)\n && s.file.getFilename().includes(\".testclasses.\")) {\n continue;\n }\n if (s.count === 0 && this.conf.errorWhenEmpty === true) {\n const issue = issue_1.Issue.atPosition(s.file, s.pos, this.getDescription(IssueType.EmptyMethod, \"0\", type), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n continue;\n }\n if (s.count > this.conf.statements) {\n const message = this.getDescription(IssueType.MaxStatements, s.count.toString(), type);\n const issue = issue_1.Issue.atPosition(s.file, s.pos, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.MethodLength = MethodLength;\n//# sourceMappingURL=method_length.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/method_length.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/method_overwrites_builtin.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/method_overwrites_builtin.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodOverwritesBuiltIn = exports.MethodOverwritesBuiltInConf = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass MethodOverwritesBuiltInConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MethodOverwritesBuiltInConf = MethodOverwritesBuiltInConf;\nclass MethodOverwritesBuiltIn extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new MethodOverwritesBuiltInConf();\n }\n getMetadata() {\n return {\n key: \"method_overwrites_builtin\",\n title: \"Method name overwrites builtin function\",\n shortDescription: `Checks Method names that overwrite builtin SAP functions`,\n extendedInformation: `https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abenbuilt_in_functions_overview.htm\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-obscuring-built-in-functions\r\n\r\nInterface method names are ignored`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n let methods = [];\n for (const classDef of file.getInfo().listClassDefinitions()) {\n methods = methods.concat(classDef.methods);\n }\n const builtIn = new _builtin_1.BuiltIn();\n for (const method of methods) {\n if (builtIn.searchBuiltin(method.name.toUpperCase())) {\n const message = `Method name \"${method.name}\" overwrites built-in SAP function name`;\n issues.push(__1.Issue.atIdentifier(method.identifier, message, this.getMetadata().key));\n }\n }\n return issues;\n }\n}\nexports.MethodOverwritesBuiltIn = MethodOverwritesBuiltIn;\n//# sourceMappingURL=method_overwrites_builtin.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/method_overwrites_builtin.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/method_parameter_names.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/method_parameter_names.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodParameterNames = exports.MethodParameterNamesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _naming_rule_config_1 = __webpack_require__(/*! ./_naming_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js\");\nconst name_validator_1 = __webpack_require__(/*! ../utils/name_validator */ \"./node_modules/@abaplint/core/build/src/utils/name_validator.js\");\nconst _abap_file_information_1 = __webpack_require__(/*! ../abap/4_file_information/_abap_file_information */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nclass MethodParameterNamesConf extends _naming_rule_config_1.NamingRuleConfig {\n constructor() {\n super(...arguments);\n /** Ignore parameters in methods of exception classes */\n this.ignoreExceptions = true;\n /** The pattern for importing parameters */\n this.importing = \"^I._.+$\";\n /** The pattern for returning parameters */\n this.returning = \"^R._.+$\";\n /** The pattern for changing parameters */\n this.changing = \"^C._.+$\";\n /** The pattern for exporting parameters */\n this.exporting = \"^E._.+$\";\n }\n}\nexports.MethodParameterNamesConf = MethodParameterNamesConf;\nclass MethodParameterNames {\n constructor() {\n this.conf = new MethodParameterNamesConf();\n }\n getMetadata() {\n return {\n key: \"method_parameter_names\",\n title: \"Method parameter naming conventions\",\n shortDescription: `Allows you to enforce a pattern, such as a prefix, for method parameter names`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(expected, actual) {\n return this.conf.patternKind === \"required\" ?\n \"Method parameter name does not match pattern \" + expected + \": \" + actual :\n \"Method parameter name must not match pattern \" + expected + \": \" + actual;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n let ret = [];\n if (this.conf.patternKind === undefined) {\n this.conf.patternKind = \"required\";\n }\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const ddic = new ddic_1.DDIC(this.reg);\n for (const file of obj.getABAPFiles()) {\n for (const def of file.getInfo().listInterfaceDefinitions()) {\n for (const method of def.methods) {\n ret = ret.concat(this.checkMethod(method));\n }\n }\n for (const def of file.getInfo().listClassDefinitions()) {\n if (this.conf.ignoreExceptions && ddic.isException(def, obj)) {\n continue;\n }\n for (const method of def.methods) {\n if (method.isEventHandler) {\n continue;\n }\n ret = ret.concat(this.checkMethod(method));\n }\n }\n }\n return ret;\n }\n checkMethod(method) {\n let ret = [];\n for (const p of method.parameters) {\n switch (p.direction) {\n case _abap_file_information_1.MethodParameterDirection.Importing:\n ret = ret.concat(this.checkParameter(p, this.conf.importing));\n break;\n case _abap_file_information_1.MethodParameterDirection.Exporting:\n ret = ret.concat(this.checkParameter(p, this.conf.exporting));\n break;\n case _abap_file_information_1.MethodParameterDirection.Changing:\n ret = ret.concat(this.checkParameter(p, this.conf.changing));\n break;\n case _abap_file_information_1.MethodParameterDirection.Returning:\n ret = ret.concat(this.checkParameter(p, this.conf.returning));\n break;\n default:\n break;\n }\n }\n return ret;\n }\n checkParameter(param, expected) {\n const ret = [];\n const regex = new RegExp(expected, \"i\");\n const name = param.name;\n if (name_validator_1.NameValidator.violatesRule(name, regex, this.conf)) {\n const message = this.getDescription(expected, name);\n const issue = issue_1.Issue.atIdentifier(param.identifier, message, this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n return ret;\n }\n}\nexports.MethodParameterNames = MethodParameterNames;\n//# sourceMappingURL=method_parameter_names.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/method_parameter_names.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/mix_returning.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/mix_returning.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MixReturning = exports.MixReturningConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass MixReturningConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MixReturningConf = MixReturningConf;\nclass MixReturning extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new MixReturningConf();\n }\n getMetadata() {\n return {\n key: \"mix_returning\",\n title: \"Mix of returning and exporting\",\n shortDescription: `Checks that methods don't have a mixture of returning and exporting/changing parameters`,\n // eslint-disable-next-line max-len\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-either-returning-or-exporting-or-changing-but-not-a-combination`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Don't mix RETURNING and EXPORTING/CHANGING parameters in a single method.\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const ret = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n for (const def of stru.findAllStatements(Statements.MethodDef)) {\n if (!def.findFirstExpression(Expressions.MethodDefReturning)) {\n continue;\n }\n if (def.findFirstExpression(Expressions.MethodDefExporting)\n || def.findFirstExpression(Expressions.MethodDefChanging)) {\n const token = def.getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n }\n return ret;\n }\n}\nexports.MixReturning = MixReturning;\n//# sourceMappingURL=mix_returning.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/mix_returning.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/modify_only_own_db_tables.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/modify_only_own_db_tables.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ModifyOnlyOwnDBTables = exports.ModifyOnlyOwnDBTablesConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nclass ModifyOnlyOwnDBTablesConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.reportDynamic = true;\n /** Case insensitve regex for own tables */\n this.ownTables = \"^[yz]\";\n }\n}\nexports.ModifyOnlyOwnDBTablesConf = ModifyOnlyOwnDBTablesConf;\nclass ModifyOnlyOwnDBTables {\n constructor() {\n this.conf = new ModifyOnlyOwnDBTablesConf();\n }\n getMetadata() {\n return {\n key: \"modify_only_own_db_tables\",\n title: \"Modify only own DB tables\",\n shortDescription: `Modify only own DB tables`,\n extendedInformation: `https://docs.abapopenchecks.org/checks/26/`,\n tags: [_irule_1.RuleTag.Security],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n var _a;\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n let spaghetti = undefined;\n const output = [];\n for (const file of obj.getABAPFiles()) {\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n const regExp = new RegExp(this.getConfig().ownTables, \"i\");\n for (const s of file.getStatements()) {\n const g = s.get();\n if (g instanceof Statements.DeleteDatabase\n || g instanceof Statements.UpdateDatabase\n || g instanceof Statements.InsertDatabase\n || g instanceof Statements.ModifyDatabase) {\n const databaseTable = s.findFirstExpression(Expressions.DatabaseTable);\n if (databaseTable === undefined) {\n continue;\n }\n if (((_a = databaseTable.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Dynamic) {\n if (this.getConfig().reportDynamic === true) {\n output.push(issue_1.Issue.atStatement(file, s, this.getMetadata().title, this.getMetadata().key, this.getConfig().severity));\n }\n continue;\n }\n const concat = databaseTable.concatTokens().toUpperCase();\n if (regExp.test(concat) === false) {\n // must contain a ReferenceType.TableVoidReference or a ReferenceType.TableReference if its a dependency\n if (spaghetti === undefined) {\n spaghetti = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti;\n }\n const start = databaseTable.getFirstToken().getStart();\n const scope = spaghetti.lookupPosition(start, file.getFilename());\n const found1 = scope === null || scope === void 0 ? void 0 : scope.findTableVoidReference(start);\n if (found1) {\n output.push(issue_1.Issue.atStatement(file, s, this.getMetadata().title, this.getMetadata().key, this.getConfig().severity));\n }\n const found2 = scope === null || scope === void 0 ? void 0 : scope.findTableReference(start);\n if (found2) {\n output.push(issue_1.Issue.atStatement(file, s, this.getMetadata().title, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n }\n }\n return output;\n }\n}\nexports.ModifyOnlyOwnDBTables = ModifyOnlyOwnDBTables;\n//# sourceMappingURL=modify_only_own_db_tables.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/modify_only_own_db_tables.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/msag_consistency.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/msag_consistency.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MSAGConsistency = exports.MSAGConsistencyConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass MSAGConsistencyConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.MSAGConsistencyConf = MSAGConsistencyConf;\nclass MSAGConsistency {\n constructor() {\n this.conf = new MSAGConsistencyConf();\n }\n getMetadata() {\n return {\n key: \"msag_consistency\",\n title: \"MSAG consistency check\",\n shortDescription: `Checks the validity of messages in message classes`,\n extendedInformation: `Message numbers must be 3 digits, message text must not be empty, no message number duplicates`,\n };\n }\n getDescription(reason) {\n return \"Message class invalid: \" + reason;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n const issues = [];\n if (!(obj instanceof objects_1.MessageClass)) {\n return [];\n }\n const numbers = new Set();\n for (const message of obj.getMessages()) {\n // todo, get the right positions in xml file\n if (!message.getNumber().match(/\\d\\d\\d/)) {\n const text = this.getDescription(\"Message number must be 3 digits: message \" + message.getNumber());\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, text, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n if (message.getMessage() === \"\") {\n const text = \"Message text empty: message \" + message.getNumber();\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, text, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n const num = message.getNumber();\n if (numbers.has(num)) {\n const text = \"Duplicate message number \" + num;\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, text, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n else {\n numbers.add(num);\n }\n }\n return issues;\n }\n}\nexports.MSAGConsistency = MSAGConsistency;\n//# sourceMappingURL=msag_consistency.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/msag_consistency.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/names_no_dash.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/names_no_dash.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NamesNoDash = exports.NamesNoDashConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass NamesNoDashConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.NamesNoDashConf = NamesNoDashConf;\n// todo, also check for other characters like %&$, rename rule? and extend to more kinds of identifiers?\nclass NamesNoDash extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NamesNoDashConf();\n }\n getMetadata() {\n return {\n key: \"names_no_dash\",\n title: \"No dashes in FORM and DATA names\",\n shortDescription: `Checks for a \"-\" in FORM, DATA, PARAMETER and SELECT-OPTION names`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Naming],\n badExample: \"DATA foo-bar TYPE i.\",\n goodExample: \"DATA foobar TYPE i.\",\n };\n }\n getMessage() {\n return \"No dash allowed in FORM and DATA names\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return issues;\n }\n if (obj.getType() !== \"CLAS\" && obj.getType() !== \"INTF\") {\n for (const form of struc.findAllStatements(Statements.Form)) {\n const expr = form.findFirstExpression(expressions_1.FormName);\n for (const token of expr.getTokens()) {\n if (token instanceof tokens_1.Dash || token instanceof tokens_1.DashW) {\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n break;\n }\n }\n }\n for (const form of struc.findAllStatements(Statements.Parameter)) {\n const expr = form.findFirstExpression(Expressions.FieldSub);\n for (const token of expr.getTokens()) {\n if (token instanceof tokens_1.Dash || token instanceof tokens_1.DashW) {\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n break;\n }\n }\n }\n for (const form of struc.findAllStatements(Statements.SelectOption)) {\n const expr = form.findFirstExpression(Expressions.FieldSub);\n for (const token of expr.getTokens()) {\n if (token instanceof tokens_1.Dash || token instanceof tokens_1.DashW) {\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n break;\n }\n }\n }\n }\n for (const name of struc.findAllExpressions(Expressions.DefinitionName)) {\n const text = name.concatTokens();\n if (text.includes(\"-\")) {\n const issue = issue_1.Issue.atToken(file, name.getFirstToken(), this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.NamesNoDash = NamesNoDash;\n//# sourceMappingURL=names_no_dash.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/names_no_dash.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/nesting.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/nesting.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Nesting = exports.NestingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass NestingConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Maximum allowed nesting depth */\n this.depth = 5;\n }\n}\nexports.NestingConf = NestingConf;\nclass Nesting extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NestingConf();\n }\n getMetadata() {\n return {\n key: \"nesting\",\n title: \"Check nesting depth\",\n shortDescription: `Checks for methods exceeding a maximum nesting depth`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-the-nesting-depth-low\r\nhttps://docs.abapopenchecks.org/checks/74/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(max) {\n return \"Reduce nesting depth to max \" + max;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n let depth = 0;\n for (const statement of file.getStatements()) {\n const type = statement.get();\n if (type instanceof Statements.If\n || type instanceof Statements.Case\n || type instanceof Statements.While\n || type instanceof Statements.Loop\n || type instanceof Statements.SelectLoop\n || type instanceof Statements.Do\n || type instanceof Statements.Try) {\n depth = depth + 1;\n }\n else if (type instanceof Statements.EndIf\n || type instanceof Statements.EndCase\n || type instanceof Statements.EndWhile\n || type instanceof Statements.EndLoop\n || type instanceof Statements.EndSelect\n || type instanceof Statements.EndDo\n || type instanceof Statements.EndTry) {\n depth = depth - 1;\n }\n if (depth > this.conf.depth) {\n const pos = statement.getFirstToken().getStart();\n const issue = issue_1.Issue.atPosition(file, pos, this.getDescription(this.conf.depth.toString()), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n break; // only one finding per file\n }\n }\n return issues;\n }\n}\nexports.Nesting = Nesting;\n//# sourceMappingURL=nesting.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/nesting.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/newline_between_methods.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/newline_between_methods.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NewlineBetweenMethods = exports.NewlineBetweenMethodsConf = exports.NewlineLogic = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst sequential_blank_1 = __webpack_require__(/*! ./sequential_blank */ \"./node_modules/@abaplint/core/build/src/rules/sequential_blank.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nvar NewlineLogic;\n(function (NewlineLogic) {\n NewlineLogic[\"Exact\"] = \"exact\";\n NewlineLogic[\"Less\"] = \"less\";\n})(NewlineLogic || (exports.NewlineLogic = NewlineLogic = {}));\nclass NewlineBetweenMethodsConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Amount of newlines, works in conjunction with \"newlineLogic\" */\n this.count = 3;\n /**\n * Exact: the exact number of required newlines between methods is defined by \"newlineAmount\"\n *\n * Less: the required number of newlines has to be less than \"newlineAmount\"\n */\n this.logic = NewlineLogic.Less;\n }\n}\nexports.NewlineBetweenMethodsConf = NewlineBetweenMethodsConf;\nclass NewlineBetweenMethods extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NewlineBetweenMethodsConf();\n }\n getMetadata() {\n return {\n key: \"newline_between_methods\",\n title: \"New line between methods\",\n shortDescription: `Checks for newlines between method implementations.`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n switch (this.conf.logic) {\n case NewlineLogic.Exact: return `Exactly ${this.conf.count} newlines are required in between methods`;\n case NewlineLogic.Less: return `Less than ${this.conf.count} newlines and at least a single newline are required in between methods`;\n default: return \"\";\n }\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n const rows = file.getRawRows();\n if (!this.isConfigurationValid()) {\n return [];\n }\n for (const statement of file.getStatements()) {\n let nextRow = statement.getStart().getRow();\n if (!(statement.get() instanceof Statements.EndMethod) || ((_a = rows[nextRow]) === null || _a === void 0 ? void 0 : _a.toUpperCase().includes(\"ENDCLASS.\"))) {\n continue;\n }\n let counter = 0;\n while (sequential_blank_1.SequentialBlank.isBlankOrWhitespace(rows[nextRow]) && (counter <= this.conf.count + 1)) {\n counter++;\n nextRow++;\n }\n if ((counter !== this.conf.count && this.conf.logic === NewlineLogic.Exact)\n || (counter >= this.conf.count && this.conf.logic === NewlineLogic.Less)\n || counter === 0) {\n issues.push(issue_1.Issue.atStatement(file, statement, this.getMessage(), this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n isConfigurationValid() {\n if (this.conf.count < 1 || (this.conf.count === 1 && this.conf.logic === NewlineLogic.Less)) {\n return false;\n }\n else {\n return true;\n }\n }\n}\nexports.NewlineBetweenMethods = NewlineBetweenMethods;\n//# sourceMappingURL=newline_between_methods.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/newline_between_methods.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/no_aliases.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/no_aliases.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoAliases = exports.NoAliasesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass NoAliasesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.NoAliasesConf = NoAliasesConf;\nclass NoAliases extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NoAliasesConf();\n }\n getMetadata() {\n return {\n key: \"no_aliases\",\n title: \"No ALIASES\",\n shortDescription: `Detects use of the ALIAS statement`,\n extendedInformation: `Only one issue is reported for chained statements`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const message = \"Do not use ALIASES\";\n let prev = undefined;\n for (const stat of file.getStatements()) {\n if (stat.get() instanceof Statements.Aliases) {\n if (prev && prev.getColon() === stat.getColon()) {\n continue;\n }\n issues.push(issue_1.Issue.atStatement(file, stat, message, this.getMetadata().key, this.conf.severity));\n prev = stat;\n }\n }\n return issues;\n }\n}\nexports.NoAliases = NoAliases;\n//# sourceMappingURL=no_aliases.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/no_aliases.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/no_chained_assignment.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/no_chained_assignment.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoChainedAssignment = exports.NoChainedAssignmentConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass NoChainedAssignmentConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.NoChainedAssignmentConf = NoChainedAssignmentConf;\nclass NoChainedAssignment extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NoChainedAssignmentConf();\n }\n getMetadata() {\n return {\n key: \"no_chained_assignment\",\n title: \"No chained assignment\",\n shortDescription: `Find chained assingments and reports issues`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-chain-assignments`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],\n badExample: `var1 = var2 = var3.`,\n goodExample: `var2 = var3.\r\nvar1 = var2.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n for (const s of file.getStatements()) {\n if (!(s.get() instanceof Statements.Move)) {\n continue;\n }\n if (s.findDirectExpressions(Expressions.Target).length >= 2) {\n const message = \"No chained assignment\";\n const issue = issue_1.Issue.atStatement(file, s, message, this.getMetadata().key);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.NoChainedAssignment = NoChainedAssignment;\n//# sourceMappingURL=no_chained_assignment.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/no_chained_assignment.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/no_external_form_calls.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/no_external_form_calls.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoExternalFormCalls = exports.NoExternalFormCallsConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass NoExternalFormCallsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.NoExternalFormCallsConf = NoExternalFormCallsConf;\nclass NoExternalFormCalls extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NoExternalFormCallsConf();\n }\n getMetadata() {\n return {\n key: \"no_external_form_calls\",\n title: \"No external FORM calls\",\n shortDescription: `Detect external form calls`,\n badExample: `PERFORM foo IN PROGRAM bar.\r\n\r\nPERFORM foo(bar).`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return issues; // parser error\n }\n for (const p of stru.findAllStatements(Statements.Perform)) {\n if (p.findDirectExpression(Expressions.IncludeName) || p.findDirectTokenByText(\"PROGRAM\")) {\n const message = \"No external FORM calls\";\n issues.push(issue_1.Issue.atStatement(file, p, message, this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.NoExternalFormCalls = NoExternalFormCalls;\n//# sourceMappingURL=no_external_form_calls.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/no_external_form_calls.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/no_inline_in_optional_branches.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/no_inline_in_optional_branches.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoInlineInOptionalBranches = exports.NoInlineInOptionalBranchesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass NoInlineInOptionalBranchesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.NoInlineInOptionalBranchesConf = NoInlineInOptionalBranchesConf;\nclass NoInlineInOptionalBranches extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NoInlineInOptionalBranchesConf();\n }\n getMetadata() {\n return {\n key: \"no_inline_in_optional_branches\",\n title: \"Don't declare inline in optional branches\",\n shortDescription: `Don't declare inline in optional branches`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-declare-inline-in-optional-branches\r\n\r\nConsidered optional branches:\r\n* inside IF/ELSEIF/ELSE\r\n* inside LOOP\r\n* inside WHILE\r\n* inside CASE/WHEN, CASE TYPE OF\r\n* inside DO\r\n* inside SELECT loops\r\n\r\nNot considered optional branches:\r\n* TRY/CATCH/CLEANUP`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const output = [];\n const version = this.reg.getConfig().getVersion();\n if (version === version_1.Version.v700\n || version === version_1.Version.v702\n || version === version_1.Version.OpenABAP) {\n return [];\n }\n const struc = file.getStructure();\n if (struc === undefined) {\n return []; // syntax error\n }\n const candidates = [\n ...struc.findAllStructures(Structures.If),\n ...struc.findAllStructures(Structures.Loop),\n ...struc.findAllStructures(Structures.While),\n ...struc.findAllStructures(Structures.Case),\n ...struc.findAllStructures(Structures.CaseType),\n ...struc.findAllStructures(Structures.Do),\n ...struc.findAllStructures(Structures.Select)\n ];\n for (const c of candidates) {\n const inline = c.findFirstExpression(Expressions.InlineData);\n if (inline) {\n const message = \"Don't declare inline in optional branches\";\n const issue = issue_1.Issue.atToken(file, inline.getFirstToken(), message, this.getMetadata().key, this.getConfig().severity);\n output.push(issue);\n }\n }\n return output;\n }\n}\nexports.NoInlineInOptionalBranches = NoInlineInOptionalBranches;\n//# sourceMappingURL=no_inline_in_optional_branches.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/no_inline_in_optional_branches.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/no_public_attributes.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/no_public_attributes.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoPublicAttributes = exports.NoPublicAttributesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst visibility_1 = __webpack_require__(/*! ../abap/4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst _abap_file_information_1 = __webpack_require__(/*! ../abap/4_file_information/_abap_file_information */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass NoPublicAttributesConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Allows public attributes, if they are declared as READ-ONLY. */\n this.allowReadOnly = false;\n /** Option to ignore test classes for this check. */\n this.ignoreTestClasses = false;\n }\n}\nexports.NoPublicAttributesConf = NoPublicAttributesConf;\nclass NoPublicAttributes extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NoPublicAttributesConf();\n }\n getMetadata() {\n return {\n key: \"no_public_attributes\",\n title: \"No public attributes\",\n shortDescription: `Checks that classes and interfaces don't contain any public attributes.\r\nExceptions are excluded from this rule.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#members-private-by-default-protected-only-if-needed`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(name) {\n return \"Public attributes are not allowed, attribute \\\"\" + name + \"\\\"\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n this.file = file;\n const attributes = this.getAllPublicAttributes(obj);\n return this.findAllIssues(attributes);\n }\n getAllPublicAttributes(obj) {\n let attributes = [];\n attributes = attributes.concat(this.getAllPublicClassAttributes(obj));\n attributes = attributes.concat(this.getAllPublicInterfaceAttributes());\n return attributes;\n }\n getAllPublicClassAttributes(obj) {\n let attributes = [];\n const ddic = new ddic_1.DDIC(this.reg);\n for (const classDef of this.file.getInfo().listClassDefinitions()) {\n if (ddic.isException(classDef, obj)) {\n continue;\n }\n attributes = attributes.concat(classDef.attributes.filter(a => a.visibility === visibility_1.Visibility.Public));\n }\n return attributes;\n }\n getAllPublicInterfaceAttributes() {\n let attributes = [];\n for (const interfaceDef of this.file.getInfo().listInterfaceDefinitions()) {\n attributes = attributes.concat(interfaceDef.attributes.filter(a => a.visibility === visibility_1.Visibility.Public));\n }\n return attributes;\n }\n findAllIssues(attributes) {\n const issues = [];\n for (const attr of attributes) {\n if (this.conf.allowReadOnly === true && attr.readOnly) {\n continue;\n }\n else if (attr.level === _abap_file_information_1.AttributeLevel.Constant) {\n continue;\n }\n else if ((this.conf.ignoreTestClasses === true)\n && this.file.getFilename().includes(\".testclasses.\")) {\n continue;\n }\n const issue = issue_1.Issue.atIdentifier(attr.identifier, this.getDescription(attr.name), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n return issues;\n }\n}\nexports.NoPublicAttributes = NoPublicAttributes;\n//# sourceMappingURL=no_public_attributes.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/no_public_attributes.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/no_yoda_conditions.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/no_yoda_conditions.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoYodaConditions = exports.NoYodaConditionsConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass NoYodaConditionsConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Only report issues where the left side is a constant */\n this.onlyConstants = false;\n }\n}\nexports.NoYodaConditionsConf = NoYodaConditionsConf;\nclass NoYodaConditions extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new NoYodaConditionsConf();\n }\n getMetadata() {\n return {\n key: \"no_yoda_conditions\",\n title: \"No Yoda conditions\",\n shortDescription: `Finds Yoda conditions and reports issues`,\n extendedInformation: `https://en.wikipedia.org/wiki/Yoda_conditions\r\n\r\nConditions with operators CP, NP, CS, NS, CA, NA, CO, CN are ignored`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `IF 0 <> sy-subrc.\r\nENDIF.`,\n goodExample: `IF sy-subrc <> 0.\r\nENDIF.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a, _b;\n const issues = [];\n for (const c of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.Compare)) || []) {\n const operator = (_b = c.findDirectExpression(Expressions.CompareOperator)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase();\n if (operator === undefined\n || operator === \"CP\"\n || operator === \"NP\"\n || operator === \"CS\"\n || operator === \"NS\"\n || operator === \"CA\"\n || operator === \"NA\"\n || operator === \"CO\"\n || operator === \"CN\") {\n continue;\n }\n const sources = c.findDirectExpressions(Expressions.Source);\n if (sources.length !== 2) {\n continue;\n }\n if (this.conf.onlyConstants === true) {\n if (this.isConstant(sources[0]) === true && this.isConstant(sources[1]) === false) {\n const start = sources[0].getFirstToken().getStart();\n const end = sources[1].getLastToken().getEnd();\n const issue = issue_1.Issue.atRange(file, start, end, \"No Yoda conditions\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n continue;\n }\n // Scenarios:\n // constant COMPARE chain\n // constant COMPARE multiple tokens with spaces\n // fieldChain COMPARE multiple tokens with spaces\n if ((this.withoutSpaces(sources[0]) === false && this.withoutSpaces(sources[1]) === true) || ((this.isConstant(sources[0]) === true && this.isFieldChain(sources[1]) === true))) {\n const start = sources[0].getFirstToken().getStart();\n const end = sources[1].getLastToken().getEnd();\n const issue = issue_1.Issue.atRange(file, start, end, \"No Yoda conditions\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n isConstant(node) {\n var _a;\n if (node.getChildren().length > 1) {\n return false;\n }\n return ((_a = node.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Constant;\n }\n isFieldChain(node) {\n var _a;\n if (node.getChildren().length > 1) {\n return false;\n }\n return ((_a = node.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.FieldChain;\n }\n withoutSpaces(node) {\n return node.concatTokensWithoutStringsAndComments().includes(\" \");\n }\n}\nexports.NoYodaConditions = NoYodaConditions;\n//# sourceMappingURL=no_yoda_conditions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/no_yoda_conditions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/nrob_consistency.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/nrob_consistency.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NROBConsistency = exports.NROBConsistencyConf = void 0;\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nclass NROBConsistencyConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.NROBConsistencyConf = NROBConsistencyConf;\nclass NROBConsistency {\n constructor() {\n this.conf = new NROBConsistencyConf();\n }\n getMetadata() {\n return {\n key: \"nrob_consistency\",\n title: \"Number range consistency\",\n shortDescription: `Consistency checks for number ranges`,\n extendedInformation: `Issue reported if percentage warning is over 50%\r\n\r\nIssue reported if the referenced domain is not found(taking error namespace into account)`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof Objects.NumberRange)) {\n return [];\n }\n const issues = [];\n const id = obj.getIdentifier();\n if (id === undefined) {\n return [];\n }\n if (obj.getPercentage() || 0 > 50) {\n const message = \"Percentage more than 50\";\n issues.push(issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.getConfig().severity));\n }\n const domain = obj.getDomain();\n if (domain\n && this.reg.getObject(\"DOMA\", domain) === undefined\n && this.reg.inErrorNamespace(domain) === true) {\n const message = \"Domain \" + domain + \" not found\";\n issues.push(issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.getConfig().severity));\n }\n return [];\n }\n}\nexports.NROBConsistency = NROBConsistency;\n//# sourceMappingURL=nrob_consistency.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/nrob_consistency.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/object_naming.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/object_naming.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ObjectNaming = exports.ObjectNamingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _naming_rule_config_1 = __webpack_require__(/*! ./_naming_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst name_validator_1 = __webpack_require__(/*! ../utils/name_validator */ \"./node_modules/@abaplint/core/build/src/utils/name_validator.js\");\nclass ObjectNamingConf extends _naming_rule_config_1.NamingRuleConfig {\n constructor() {\n super(...arguments);\n /** The regex pattern for global class names */\n this.clas = \"^ZC(L|X)\";\n /** The regex pattern for global interface names */\n this.intf = \"^ZIF\";\n /** The regex pattern for program (report) names */\n this.prog = \"^Z\";\n /** The regex pattern for function group names */\n this.fugr = \"^Z\";\n /** The regex pattern for DDIC table names */\n this.tabl = \"^Z\";\n /** The regex pattern for DDIC table type names */\n this.ttyp = \"^Z\";\n /** The regex pattern for data element names */\n this.dtel = \"^Z\";\n /** The regex pattern for domain names */\n this.doma = \"^Z\";\n /** The regex pattern for message class names */\n this.msag = \"^Z\";\n /** The regex pattern for transaction names */\n this.tran = \"^Z\";\n /** The regex pattern for lock object names */\n this.enqu = \"^EZ\";\n /** The regex pattern for authorization object names */\n this.auth = \"^Z\";\n /** The regex pattern for package interface names */\n this.pinf = \"^Z\";\n /** The regex pattern for idoc names */\n this.idoc = \"^Z\";\n /** The regex pattern for transformation names */\n this.xslt = \"^Z\";\n /** The regex pattern for smartform names */\n this.ssfo = \"^Z\";\n /** The regex pattern for smartstyle names */\n this.ssst = \"^Z\";\n /** The regex pattern for search helps */\n this.shlp = \"^Z\";\n /** The regex pattern for BADI Implementation */\n this.sxci = \"^Z\";\n /** The regex pattern for Enhancement Spot */\n this.enhs = \"^Z\";\n /** The regex pattern for Enhancement Implementation */\n this.enho = \"^Z\";\n /** The regex pattern for Customer enhancement projects */\n this.cmod = \"^Z\";\n /** The regex pattern for SAPscript form */\n this.form = \"^Z\";\n /** The regex pattern for Adobe Form Definition */\n this.sfpf = \"^Z\";\n /** The regex pattern for Adobe Interface Definition */\n this.sfpi = \"^Z\";\n /** The regex pattern for ABAP Query: Query */\n this.aqqu = \"^Z\";\n /** The regex pattern for ABAP Query: Functional area */\n this.aqsg = \"^Z\";\n /** The regex pattern for ABAP Query: User group */\n this.aqbg = \"^Z\";\n /** The regex pattern for Authorization Object */\n this.suso = \"^Z\";\n /** The regex pattern for Authorization Group */\n this.sucu = \"^Z\";\n /** The regex pattern for Web Dynpro Application */\n this.wdya = \"^Z\";\n /** The regex pattern for Web Dynpro Component */\n this.wdyn = \"^Z\";\n }\n}\nexports.ObjectNamingConf = ObjectNamingConf;\nclass ObjectNaming {\n constructor() {\n this.conf = new ObjectNamingConf();\n }\n getMetadata() {\n return {\n key: \"object_naming\",\n title: \"Object naming conventions\",\n shortDescription: `Allows you to enforce a pattern, such as a prefix, for object names`,\n tags: [_irule_1.RuleTag.Naming],\n };\n }\n getDescription(expected, actual) {\n return this.conf.patternKind === \"required\" ?\n \"Object name does not match pattern \" + expected + \": \" + actual :\n \"Object name must not match pattern \" + expected + \": \" + actual;\n }\n getConfig() {\n if (typeof this.conf === \"boolean\" && this.conf === true) {\n return new ObjectNamingConf();\n }\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n let message = undefined;\n if (this.conf.patternKind === undefined) {\n this.conf.patternKind = \"required\";\n }\n const abapType = obj.getType().toLowerCase();\n const config = this.getConfig();\n // @ts-ignore\n const pattern = config[abapType];\n if (pattern === undefined) {\n return [];\n }\n const regex = new RegExp(pattern, \"i\");\n if (name_validator_1.NameValidator.violatesRule(obj.getName(), regex, this.conf)) {\n message = this.getDescription(pattern, obj.getName());\n }\n if (message) {\n return [issue_1.Issue.atRow(obj.getFiles()[0], 1, message, this.getMetadata().key, this.conf.severity)];\n }\n return [];\n }\n}\nexports.ObjectNaming = ObjectNaming;\n//# sourceMappingURL=object_naming.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/object_naming.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/obsolete_statement.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/obsolete_statement.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ObsoleteStatement = exports.ObsoleteStatementConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nclass ObsoleteStatementConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Check for REFRESH statement */\n this.refresh = true;\n /** Check for COMPUTE statement */\n this.compute = true;\n /** Check for ADD statement */\n this.add = true;\n /** Check for SUBTRACT statement */\n this.subtract = true;\n /** Check for MULTIPLY statement */\n this.multiply = true;\n /** Check for DIVIDE statement */\n this.divide = true;\n /** Check for MOVE statement */\n this.move = true;\n /** Checks for usages of IS REQUESTED */\n this.requested = true;\n /** Checks for usages of OCCURS */\n this.occurs = true;\n /** Checks for SET EXTENDED CHECK */\n this.setExtended = true;\n /** Checks for WITH HEADER LINE */\n this.withHeaderLine = true;\n /** Checks for FIELD-SYMBOLS ... STRUCTURE */\n this.fieldSymbolStructure = true;\n /** Checks for TYPE-POOLS */\n this.typePools = true;\n /** Checks for addition LOAD */\n this.load = true;\n /** Checks for PARAMETER */\n this.parameter = true;\n /** Checks for RANGES */\n this.ranges = true;\n /** Checks for COMMUNICATION */\n this.communication = true;\n /** Checks for PACK */\n this.pack = true;\n /** Checks for SELECT without INTO */\n this.selectWithoutInto = true;\n /** FREE MEMORY, without ID */\n this.freeMemory = true;\n /** Checks for EXIT FROM SQL */\n this.exitFromSQL = true;\n /** Checks for SORT itab BY */\n this.sortByFS = true;\n /** Checks for CALL TRANSFORMATION OBJECTS */\n this.callTransformation = true;\n /** Check for POSIX REGEX usage */\n this.regex = true;\n /** Check for OCCURENCES vs OCCURRENCES usage */\n this.occurences = true;\n /** Check for CLIENT SPECIFIED */\n this.clientSpecified = true;\n /** Check for FORM DEFINITION */\n this.formDefinition = true;\n /** Check for FORM IMPLEMENTATION */\n this.formImplementation = true;\n }\n}\nexports.ObsoleteStatementConf = ObsoleteStatementConf;\nclass ObsoleteStatement extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ObsoleteStatementConf();\n }\n getMetadata() {\n return {\n key: \"obsolete_statement\",\n title: \"Obsolete statements\",\n shortDescription: `Checks for usages of certain obsolete statements`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix],\n extendedInformation: `\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-functional-to-procedural-language-constructs\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-obsolete-language-elements\r\n\r\nSET EXTENDED CHECK: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapset_extended_check.htm\r\n\r\nIS REQUESTED: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenlogexp_requested.htm\r\n\r\nWITH HEADER LINE: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapdata_header_line.htm\r\n\r\nFIELD-SYMBOLS STRUCTURE: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapfield-symbols_obsolete_typing.htm\r\n\r\nTYPE-POOLS: from 702, https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-71-program_load.htm\r\n\r\nLOAD addition: from 702, https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-71-program_load.htm\r\n\r\nCOMMUICATION: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapcommunication.htm\r\n\r\nOCCURS: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapdata_occurs.htm\r\n\r\nPARAMETER: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapparameter.htm\r\n\r\nRANGES: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapranges.htm\r\n\r\nPACK: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abappack.htm\r\n\r\nMOVE: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapmove_obs.htm\r\n\r\nSELECT without INTO: https://help.sap.com/doc/abapdocu_731_index_htm/7.31/en-US/abapselect_obsolete.htm\r\nSELECT COUNT(*) is considered okay\r\n\r\nFREE MEMORY: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abapfree_mem_id_obsolete.htm\r\n\r\nSORT BY FS: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapsort_itab_obsolete.htm\r\n\r\nCALL TRANSFORMATION OBJECTS: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapcall_transformation_objects.htm\r\n\r\nPOSIX REGEX: https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm\r\n\r\nOCCURENCES: check for OCCURENCES vs OCCURRENCES\r\n\r\nCLIENT SPECIFIED, from 754: https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abapselect_client_obsolete.htm`,\n badExample: `REFRESH itab.\r\n\r\nCOMPUTE foo = 2 + 2.\r\n\r\nMULTIPLY lv_foo BY 2.\r\n\r\nINTERFACE intf LOAD.\r\n\r\nIF foo IS SUPPLIED.\r\nENDIF.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a, _b, _c;\n const issues = [];\n const statements = file.getStatements();\n let prev = undefined;\n const configVersion = this.reg.getConfig().getVersion();\n for (const staNode of statements) {\n const sta = staNode.get();\n if ((sta instanceof Statements.Refresh && this.conf.refresh)\n || (sta instanceof Statements.Compute && this.conf.compute)\n || (sta instanceof Statements.Add && this.conf.add)\n || (sta instanceof Statements.Subtract && this.conf.subtract)\n || (sta instanceof Statements.ClassDefinitionLoad && this.conf.load && configVersion >= version_1.Version.v702)\n || (sta instanceof Statements.InterfaceLoad && this.conf.load && configVersion >= version_1.Version.v702)\n || (sta instanceof Statements.Multiply && this.conf.multiply)\n || (sta instanceof Statements.Divide && this.conf.divide)\n || (sta instanceof Statements.Move && this.conf.move\n && staNode.getTokens()[0].getStr().toUpperCase() === \"MOVE\"\n && staNode.getTokens()[1].getStr() !== \"-\"\n && staNode.getTokens()[1].getStr().toUpperCase() !== \"EXACT\")) {\n if (prev === undefined || staNode.getStart().getCol() !== prev.getCol() || staNode.getStart().getRow() !== prev.getRow()) {\n const message = \"Statement \\\"\" + staNode.getFirstToken().getStr() + \"\\\" is obsolete\";\n const fix = this.getFix(file, sta, staNode);\n const issue = issue_1.Issue.atStatement(file, staNode, message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n prev = staNode.getStart();\n }\n if (this.conf.setExtended && sta instanceof Statements.SetExtendedCheck) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"SET EXTENDED CHECK is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n if (this.conf.communication && sta instanceof Statements.Communication) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"COMMUNICATION is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n if (this.conf.pack && sta instanceof Statements.Pack) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"PACK is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n if (this.conf.parameter && sta instanceof Statements.Parameter) {\n const token = staNode.getFirstToken();\n if (token.getStr().toUpperCase() === \"PARAMETER\") {\n const fix = edit_helper_1.EditHelper.replaceToken(file, token, \"PARAMETERS\");\n const issue = issue_1.Issue.atStatement(file, staNode, \"Use PARAMETERS instead of PARAMETER\", this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n if (this.conf.ranges && sta instanceof Statements.Ranges) {\n const children = staNode.getChildren();\n let fix = undefined;\n if (children.length === 5) {\n const simpleNameString = children[1].concatTokens();\n const fieldSubString = children[3].concatTokens();\n const replacement = \"TYPES \" + simpleNameString + \" LIKE RANGE OF \" + fieldSubString + \".\";\n fix = edit_helper_1.EditHelper.replaceRange(file, staNode.getStart(), staNode.getEnd(), replacement);\n }\n const issue = issue_1.Issue.atStatement(file, staNode, \"Use LIKE RANGE OF instead of RANGES\", this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n if (this.conf.selectWithoutInto\n && (sta instanceof Statements.Select || sta instanceof Statements.SelectLoop)\n && staNode.findFirstExpression(Expressions.SQLIntoStructure) === undefined\n && staNode.findFirstExpression(Expressions.SQLIntoTable) === undefined) {\n const concat = (_a = staNode.findFirstExpression(Expressions.SQLFieldList)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\n if (concat !== \"COUNT(*)\" && concat !== \"COUNT( * )\") {\n const issue = issue_1.Issue.atStatement(file, staNode, \"SELECT without INTO\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.conf.requested && sta instanceof Statements.If) {\n for (const compare of staNode.findAllExpressions(Expressions.Compare)) {\n const token = compare.findDirectTokenByText(\"REQUESTED\");\n if (token) {\n const fix = edit_helper_1.EditHelper.replaceToken(file, token, \"SUPPLIED\");\n const issue = issue_1.Issue.atToken(file, token, \"IS REQUESTED is obsolete\", this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n }\n if (this.conf.occurs) {\n if ((sta instanceof Statements.Describe)\n || (sta instanceof Statements.Ranges)\n || (sta instanceof Statements.DataBegin)\n || (sta instanceof Statements.TypeBegin)) {\n const token = staNode.findDirectTokenByText(\"OCCURS\");\n if (token) {\n const issue = issue_1.Issue.atToken(file, token, \"OCCURS is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n for (const dataDef of staNode.findAllExpressions(Expressions.DataDefinition)) {\n const token = (_b = dataDef.findDirectExpression(Expressions.TypeTable)) === null || _b === void 0 ? void 0 : _b.findDirectTokenByText(\"OCCURS\");\n if (token) {\n const issue = issue_1.Issue.atToken(file, token, \"OCCURS is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n if (this.conf.withHeaderLine === true && sta instanceof Statements.Data) {\n if (staNode.concatTokens().toUpperCase().includes(\"WITH HEADER LINE\")) {\n const token = staNode.getTokens().find(t => t.getStr().toUpperCase() === \"WITH\");\n if (token) {\n const issue = issue_1.Issue.atToken(file, token, \"WITH HEADER LINE is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n if (this.conf.fieldSymbolStructure && sta instanceof Statements.FieldSymbol) {\n const token = staNode.findDirectTokenByText(\"STRUCTURE\");\n if (token) {\n const issue = issue_1.Issue.atToken(file, token, \"FIELD-SYMBOLS ... STRUCTURE is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.conf.typePools && sta instanceof Statements.TypePools && configVersion >= version_1.Version.v702) {\n const fix = edit_helper_1.EditHelper.deleteStatement(file, staNode);\n const issue = issue_1.Issue.atStatement(file, staNode, \"Statement \\\"TYPE-POOLS\\\" is obsolete\", this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n if (this.conf.freeMemory && sta instanceof Statements.FreeMemory) {\n const concat = staNode.concatTokens().toUpperCase();\n if (concat === \"FREE MEMORY.\") {\n const issue = issue_1.Issue.atStatement(file, staNode, \"Statement \\\"FREE MEMORY\\\" without ID is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.conf.exitFromSQL && sta instanceof Statements.Exit) {\n const concat = staNode.concatTokens().toUpperCase();\n if (concat === \"EXIT FROM SQL.\") {\n const issue = issue_1.Issue.atStatement(file, staNode, \"Statement \\\"EXIT FROM SQL\\\" is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.conf.sortByFS && sta instanceof Statements.Sort) {\n const afterBy = staNode.findExpressionAfterToken(\"BY\");\n if (afterBy instanceof nodes_1.ExpressionNode && afterBy.get() instanceof expressions_1.SourceFieldSymbol) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"Statement \\\"SORT itab BY \\\" is obsolete\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.conf.callTransformation && sta instanceof Statements.CallTransformation) {\n const objects = staNode.findExpressionAfterToken(\"OBJECTS\");\n if (objects) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"Use PARAMETERS instead of OBJECTS\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.conf.occurences && sta instanceof Statements.Replace) {\n const concat = staNode.concatTokens().toUpperCase();\n if (concat.includes(\" OCCURENCES \")) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"Use \\\"OCCURRENCES\\\"\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.conf.formDefinition && sta instanceof Statements.FormDefinition) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"FORM DEFINITION\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n if (this.conf.formImplementation && sta instanceof Statements.Form) {\n if (staNode.findDirectTokenByText(\"IMPLEMENTATION\")) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"FORM IMPLEMENTATION\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (configVersion >= version_1.Version.v754 && this.conf.clientSpecified\n && (sta instanceof Statements.Select\n || sta instanceof Statements.SelectLoop\n || sta instanceof Statements.DeleteDatabase\n || sta instanceof Statements.InsertDatabase\n || sta instanceof Statements.ModifyDatabase\n || sta instanceof Statements.UpdateDatabase)) {\n const concat = staNode.concatTokens().toUpperCase();\n if (concat.includes(\" CLIENT SPECIFIED\")) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"Use USING CLIENT\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (configVersion >= version_1.Version.v756 && this.conf.regex) {\n if (sta instanceof Statements.Find || sta instanceof Statements.Replace) {\n if ((_c = staNode.findFirstExpression(Expressions.FindType)) === null || _c === void 0 ? void 0 : _c.concatTokens().includes(\"REGEX\")) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"REGEX obsolete, use PCRE\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n else {\n const classNameExpression = staNode.findAllExpressions(Expressions.ClassName);\n const methodNameExpression = staNode.findAllExpressions(Expressions.MethodName);\n if (classNameExpression.length !== 0 && methodNameExpression.length !== 0) {\n const className = classNameExpression[0].concatTokens();\n const methodName = methodNameExpression[0].concatTokens();\n if (className === \"cl_abap_regex\") {\n if (methodName === \"create_posix\") {\n const issue = issue_1.Issue.atStatement(file, staNode, \"create_posix obsolete, use create_pcre\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n else if (className === \"cl_abap_matcher\") {\n if (methodName.includes(\"posix\")) {\n const issue = issue_1.Issue.atStatement(file, staNode, \"posix methods obsolete, use pcre methods\", this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n }\n }\n }\n return issues;\n }\n getFix(file, statement, statementNode) {\n if (statement instanceof Statements.Refresh) {\n if (statementNode.getChildren().length === 6) {\n return undefined;\n }\n return edit_helper_1.EditHelper.replaceToken(file, statementNode.getFirstToken(), \"CLEAR\");\n }\n else if (statement instanceof Statements.Compute) {\n const children = statementNode.getChildren();\n if (children.length === 5) {\n const tokenForDeletion = statementNode.getFirstToken();\n let endPosition = tokenForDeletion.getEnd();\n endPosition = new position_1.Position(endPosition.getRow(), endPosition.getCol() + 1);\n return edit_helper_1.EditHelper.deleteRange(file, tokenForDeletion.getStart(), endPosition);\n }\n else {\n const targetString = children[2].concatTokens();\n const sourceString = children[4].concatTokens();\n const replacement = targetString + \" = EXACT #( \" + sourceString + \" ).\";\n return edit_helper_1.EditHelper.replaceRange(file, statementNode.getStart(), statementNode.getEnd(), replacement);\n }\n }\n else if (statement instanceof Statements.Add ||\n statement instanceof Statements.Subtract) {\n const children = statementNode.getChildren();\n const sourceString = children[1].concatTokens();\n const targetString = children[3].concatTokens();\n let replacement = \"\";\n if (statement instanceof Statements.Add) {\n replacement = targetString + \" = \" + targetString + \" + \" + sourceString + \".\";\n }\n else if (statement instanceof Statements.Subtract) {\n replacement = targetString + \" = \" + targetString + \" - \" + sourceString + \".\";\n }\n return edit_helper_1.EditHelper.replaceRange(file, statementNode.getStart(), statementNode.getEnd(), replacement);\n }\n else if (statement instanceof Statements.Multiply ||\n statement instanceof Statements.Divide) {\n const children = statementNode.getChildren();\n const targetString = children[1].concatTokens();\n const sourceString = children[3].concatTokens();\n let replacement = \"\";\n if (statement instanceof Statements.Multiply) {\n replacement = targetString + \" = \" + targetString + \" * \" + sourceString + \".\";\n }\n else if (statement instanceof Statements.Divide) {\n replacement = targetString + \" = \" + targetString + \" / \" + sourceString + \".\";\n }\n return edit_helper_1.EditHelper.replaceRange(file, statementNode.getStart(), statementNode.getEnd(), replacement);\n }\n else if (statement instanceof Statements.Move) {\n if (statementNode.getColon() !== undefined) {\n return undefined;\n }\n const children = statementNode.getChildren();\n const sourceString = children[1].concatTokens();\n const targetString = children[3].concatTokens();\n let operator = children[2].concatTokens();\n if (operator === \"TO\") {\n operator = \" = \";\n }\n else {\n operator = \" ?= \";\n }\n const replacement = targetString + operator + sourceString + \".\";\n return edit_helper_1.EditHelper.replaceRange(file, statementNode.getStart(), statementNode.getEnd(), replacement);\n }\n else if (statement instanceof Statements.ClassDefinitionLoad ||\n statement instanceof Statements.InterfaceLoad) {\n let token = undefined;\n if (statement instanceof Statements.ClassDefinitionLoad) {\n token = statementNode.getChildren()[3].getFirstToken();\n }\n else {\n token = statementNode.getChildren()[2].getFirstToken();\n }\n let startPosition = token.getStart();\n startPosition = new position_1.Position(startPosition.getRow(), startPosition.getCol() - 1);\n return edit_helper_1.EditHelper.deleteRange(file, startPosition, token.getEnd());\n }\n return undefined;\n }\n}\nexports.ObsoleteStatement = ObsoleteStatement;\n//# sourceMappingURL=obsolete_statement.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/obsolete_statement.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/omit_parameter_name.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/omit_parameter_name.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OmitParameterName = exports.OmitParameterNameConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst method_definition_1 = __webpack_require__(/*! ../abap/types/method_definition */ \"./node_modules/@abaplint/core/build/src/abap/types/method_definition.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _builtin_1 = __webpack_require__(/*! ../abap/5_syntax/_builtin */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_builtin.js\");\nclass OmitParameterNameConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.OmitParameterNameConf = OmitParameterNameConf;\nclass OmitParameterName {\n constructor() {\n this.conf = new OmitParameterNameConf();\n }\n getMetadata() {\n return {\n key: \"omit_parameter_name\",\n title: \"Omit parameter name\",\n shortDescription: `Omit the parameter name in single parameter calls`,\n extendedInformation: `\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#omit-the-parameter-name-in-single-parameter-calls\r\n\r\nEXPORTING must already be omitted for this rule to take effect, https://rules.abaplint.org/exporting/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix],\n badExample: `method( param = 2 ).`,\n goodExample: `method( 2 ).`,\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n var _a, _b;\n const issues = [];\n if (!(obj instanceof _abap_object_1.ABAPObject) || obj.getType() === \"INTF\") {\n return [];\n }\n const spaghetti = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti;\n for (const file of obj.getABAPFiles()) {\n const stru = file.getStructure();\n if (stru === undefined) {\n continue;\n }\n for (const c of stru.findAllExpressions(Expressions.MethodCall)) {\n if (c.findFirstExpression(Expressions.MethodParameters)) {\n continue;\n }\n // hmm, this will break for nested method calls?\n const parameters = c.findAllExpressions(Expressions.ParameterS);\n if (parameters.length > 1 || parameters.length === 0) {\n continue;\n }\n const name = c.findDirectExpression(Expressions.MethodName);\n if (name === undefined) {\n continue;\n }\n const param = c.findDirectExpression(Expressions.MethodCallParam);\n if (param === undefined) {\n continue;\n }\n const ref = this.findMethodReference(name.getFirstToken(), spaghetti, file.getFilename());\n if (ref === undefined) {\n continue;\n }\n const i = ref.getDefaultImporting();\n if (i === undefined) {\n continue;\n }\n const p = (_a = parameters[0].findDirectExpression(Expressions.ParameterName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n if ((p === null || p === void 0 ? void 0 : p.getStr().toUpperCase()) === i.toUpperCase()) {\n const message = \"Omit default parameter name \\\"\" + i + \"\\\"\";\n const end = (_b = parameters[0].findDirectExpression(Expressions.Source)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStart();\n if (end) {\n const fix = edit_helper_1.EditHelper.deleteRange(file, p.getStart(), end);\n issues.push(issue_1.Issue.atRange(file, p.getStart(), end, message, this.getMetadata().key, this.getConfig().severity, fix));\n }\n else {\n issues.push(issue_1.Issue.atToken(file, name.getFirstToken(), message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n }\n return issues;\n }\n ///////////////////\n findMethodReference(token, spaghetti, filename) {\n const scope = spaghetti.lookupPosition(token.getStart(), filename);\n if (scope === undefined) {\n return undefined;\n }\n for (const r of scope.getData().references) {\n if (r.referenceType !== _reference_1.ReferenceType.MethodReference\n && r.referenceType !== _reference_1.ReferenceType.BuiltinMethodReference) {\n continue;\n }\n else if (r.position.getStart().equals(token.getStart())) {\n if (r.resolved instanceof _builtin_1.BuiltInMethod) {\n return r.resolved;\n }\n else if (r.resolved instanceof method_definition_1.MethodDefinition) {\n return r.resolved.getParameters();\n }\n }\n }\n return undefined;\n }\n}\nexports.OmitParameterName = OmitParameterName;\n//# sourceMappingURL=omit_parameter_name.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/omit_parameter_name.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/omit_preceding_zeros.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/omit_preceding_zeros.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OmitPrecedingZeros = exports.OmitPrecedingZerosConf = void 0;\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass OmitPrecedingZerosConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.OmitPrecedingZerosConf = OmitPrecedingZerosConf;\nclass OmitPrecedingZeros extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new OmitPrecedingZerosConf();\n }\n getMetadata() {\n return {\n key: \"omit_preceding_zeros\",\n title: \"Omit preceding zeros\",\n shortDescription: `Omit preceding zeros from integer constants`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n badExample: `int = -001.`,\n goodExample: `int = -1.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n const message = \"Omit preceding zeros\";\n for (const s of file.getStatements()) {\n for (const i of s.findAllExpressions(Expressions.Integer)) {\n const token = i.getLastToken();\n const str = token.getStr();\n if (str.length > 1 && str.startsWith(\"0\")) {\n if (s.get() instanceof statements_1.CallScreen || s.get() instanceof statements_1.SetScreen) {\n continue;\n }\n const replace = str.replace(/^0+/, \"\");\n const fix = edit_helper_1.EditHelper.replaceRange(file, token.getStart(), token.getEnd(), replace);\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.getConfig().severity, fix);\n issues.push(issue);\n }\n }\n for (const i of s.findAllExpressions(Expressions.ParameterException)) {\n const token = (_a = i.findDirectExpression(Expressions.SimpleName)) === null || _a === void 0 ? void 0 : _a.getFirstToken();\n const str = token === null || token === void 0 ? void 0 : token.getStr();\n if (token && str && str.length > 1 && str.startsWith(\"0\")) {\n const replace = str.replace(/^0+/, \"\");\n const fix = edit_helper_1.EditHelper.replaceRange(file, token.getStart(), token.getEnd(), replace);\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.getConfig().severity, fix);\n issues.push(issue);\n }\n }\n }\n return issues;\n }\n}\nexports.OmitPrecedingZeros = OmitPrecedingZeros;\n//# sourceMappingURL=omit_preceding_zeros.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/omit_preceding_zeros.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/omit_receiving.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/omit_receiving.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.OmitReceiving = exports.OmitReceivingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nclass OmitReceivingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.OmitReceivingConf = OmitReceivingConf;\nclass OmitReceiving extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new OmitReceivingConf();\n }\n getMetadata() {\n return {\n key: \"omit_receiving\",\n title: \"Omit RECEIVING\",\n shortDescription: `Omit RECEIVING`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#omit-receiving`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n badExample: `\r\n upload_pack(\r\n EXPORTING\r\n io_client = lo_client\r\n iv_url = iv_url\r\n iv_deepen_level = iv_deepen_level\r\n it_hashes = lt_hashes\r\n RECEIVING\r\n rt_objects = et_objects ).`,\n goodExample: `\r\n et_objects = upload_pack(\r\n io_client = lo_client\r\n iv_url = iv_url\r\n iv_deepen_level = iv_deepen_level\r\n it_hashes = lt_hashes ).`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n for (const e of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.MethodCallParam)) || []) {\n const p = e.findDirectExpression(Expressions.MethodParameters);\n if (p === undefined) {\n continue;\n }\n const r = p.findDirectTokenByText(\"RECEIVING\");\n if (r === undefined) {\n continue;\n }\n const ex = p.findDirectTokenByText(\"EXCEPTIONS\");\n if (ex !== undefined) {\n continue;\n }\n issues.push(issue_1.Issue.atToken(file, r, \"Omit RECEIVING\", this.getMetadata().key, this.getConfig().severity));\n }\n return issues;\n }\n}\nexports.OmitReceiving = OmitReceiving;\n//# sourceMappingURL=omit_receiving.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/omit_receiving.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/parser_702_chaining.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/parser_702_chaining.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Parser702Chaining = exports.Parser702ChainingConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass Parser702ChainingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.Parser702ChainingConf = Parser702ChainingConf;\nclass Parser702Chaining extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new Parser702ChainingConf();\n }\n getMetadata() {\n return {\n key: \"parser_702_chaining\",\n title: \"Parser Error, bad chanining on 702\",\n shortDescription: `ABAP on 702 does not allow for method chaining with IMPORTING/EXPORTING/CHANGING keywords,\r\nthis rule finds these and reports errors.\r\nOnly active on target version 702 and below.`,\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n if (this.reg.getConfig().getVersion() !== version_1.Version.v702\n && this.reg.getConfig().getVersion() !== version_1.Version.v700) {\n return [];\n }\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n for (const chain of stru.findAllExpressions(Expressions.MethodCallChain)) {\n const calls = chain.findDirectExpressions(Expressions.MethodCall);\n if (calls.length < 2) {\n continue;\n }\n for (const call of calls) {\n const callParam = call.findDirectExpression(Expressions.MethodCallParam);\n if (callParam === undefined) {\n continue;\n }\n const param = callParam.findDirectExpression(Expressions.MethodParameters);\n if (param === undefined) {\n continue;\n }\n if (param.findDirectTokenByText(\"IMPORTING\")\n || param.findDirectTokenByText(\"CHANGING\")\n || param.findDirectTokenByText(\"EXCEPTIONS\")) {\n const message = \"This kind of method chaining not possible in 702\";\n const issue = issue_1.Issue.atPosition(file, param.getFirstToken().getStart(), message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n return issues;\n }\n}\nexports.Parser702Chaining = Parser702Chaining;\n//# sourceMappingURL=parser_702_chaining.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/parser_702_chaining.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/parser_error.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/parser_error.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParserError = exports.ParserErrorConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst statement_parser_1 = __webpack_require__(/*! ../abap/2_statements/statement_parser */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statement_parser.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass ParserErrorConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ParserErrorConf = ParserErrorConf;\nclass ParserError {\n constructor() {\n this.conf = new ParserErrorConf();\n }\n getMetadata() {\n return {\n key: \"parser_error\",\n title: \"Parser error\",\n shortDescription: `Checks for syntax not recognized by abaplint.\r\n\r\nSee recognized syntax at https://syntax.abaplint.org`,\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.SingleFile],\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n const issues = [];\n issues.push(...obj.getParsingIssues());\n if (obj instanceof _abap_object_1.ABAPObject) {\n for (const file of obj.getABAPFiles()) {\n for (const statement of file.getStatements()) {\n if (!(statement.get() instanceof _statement_1.Unknown)) {\n continue;\n }\n if (statement.getTokens().length > statement_parser_1.STATEMENT_MAX_TOKENS) {\n const message = \"Statement too long, refactor statement\";\n const issue = issue_1.Issue.atToken(file, statement.getTokens()[0], message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n else {\n const tok = statement.getFirstToken();\n const message = \"Statement does not exist in ABAP\" + this.reg.getConfig().getVersion() + \"(or a parser error), \\\"\" + tok.getStr() + \"\\\"\";\n const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n if (this.reg.getConfig().getVersion() === version_1.Version.v700) {\n for (const statement of file.getStatements()) {\n if (statement.getPragmas().length > 0) {\n const message = \"Pragmas not allowed in v700\";\n const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n }\n }\n return issues;\n }\n}\nexports.ParserError = ParserError;\n//# sourceMappingURL=parser_error.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/parser_error.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParserMissingSpace = exports.ParserMissingSpaceConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\n// todo: this rule needs refactoring\nclass ParserMissingSpaceConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ParserMissingSpaceConf = ParserMissingSpaceConf;\nclass ParserMissingSpace extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ParserMissingSpaceConf();\n }\n getMetadata() {\n return {\n key: \"parser_missing_space\",\n title: \"Parser Error, missing space\",\n shortDescription: `In special cases the ABAP language allows for not having spaces before or after string literals.\r\nThis rule makes sure the spaces are consistently required across the language.`,\n tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile],\n badExample: `IF ( foo = 'bar').`,\n goodExample: `IF ( foo = 'bar' ).`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n let start = new position_1.Position(0, 0);\n for (const statement of file.getStatements()) {\n const missing = this.missingSpace(statement);\n if (missing) {\n const message = \"Missing space between string or character literal and parentheses\";\n start = missing;\n const issue = issue_1.Issue.atPosition(file, start, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n missingSpace(statement) {\n const found = statement.findAllExpressionsMulti([Expressions.CondSub, Expressions.SQLCond,\n Expressions.ValueBodyLine, Expressions.NewObject, Expressions.Cond,\n Expressions.ComponentCond, Expressions.ComponentCondSub, Expressions.MethodCallParam], true);\n let pos = undefined;\n for (const f of found) {\n const type = f.get();\n if (type instanceof Expressions.Cond) {\n pos = this.checkCond(f);\n }\n else if (type instanceof Expressions.CondSub) {\n pos = this.checkCondSub(f);\n }\n else if (type instanceof Expressions.ComponentCond) {\n pos = this.checkComponentCond(f);\n }\n else if (type instanceof Expressions.ComponentCondSub) {\n pos = this.checkComponentCondSub(f);\n }\n else if (type instanceof Expressions.SQLCond) {\n pos = this.checkSQLCond(f);\n }\n else if (type instanceof Expressions.ValueBodyLine) {\n pos = this.checkValueBodyLine(f);\n }\n else if (type instanceof Expressions.NewObject) {\n pos = this.checkNewObject(f);\n }\n else if (type instanceof Expressions.MethodCallParam) {\n pos = this.checkMethodCallParam(f);\n }\n if (pos) {\n return pos;\n }\n }\n return undefined;\n }\n checkSQLCond(cond) {\n const children = cond.getChildren();\n for (let i = 0; i < children.length; i++) {\n if (children[i].get() instanceof Expressions.SQLCond) {\n const current = children[i];\n const prev = children[i - 1].getLastToken();\n const next = children[i + 1].getFirstToken();\n if (prev.getStr() === \"(\"\n && prev.getRow() === current.getFirstToken().getRow()\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\n return current.getFirstToken().getStart();\n }\n if (next.getStr() === \")\"\n && next.getRow() === current.getLastToken().getRow()\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\n return current.getLastToken().getEnd();\n }\n }\n }\n return undefined;\n }\n checkNewObject(cond) {\n const children = cond.getChildren();\n {\n const first = children[children.length - 2].getLastToken();\n const second = children[children.length - 1].getFirstToken();\n if (first.getRow() === second.getRow()\n && first.getEnd().getCol() === second.getStart().getCol()) {\n return second.getStart();\n }\n }\n return undefined;\n }\n checkCondSub(cond) {\n const children = cond.getChildren();\n for (let i = 0; i < children.length; i++) {\n if (children[i].get() instanceof Expressions.Cond) {\n const current = children[i];\n const prev = children[i - 1].getLastToken();\n const next = children[i + 1].getFirstToken();\n if (prev.getStr() === \"(\"\n && prev.getRow() === current.getFirstToken().getRow()\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\n return current.getFirstToken().getStart();\n }\n if (next.getStr() === \")\"\n && next.getRow() === current.getLastToken().getRow()\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\n return current.getLastToken().getEnd();\n }\n }\n }\n return undefined;\n }\n checkComponentCondSub(cond) {\n const children = cond.getChildren();\n for (let i = 0; i < children.length; i++) {\n if (children[i].get() instanceof Expressions.ComponentCond) {\n const current = children[i];\n const prev = children[i - 1].getLastToken();\n const next = children[i + 1].getFirstToken();\n if (prev.getStr() === \"(\"\n && prev.getRow() === current.getFirstToken().getRow()\n && prev.getCol() + 1 === current.getFirstToken().getStart().getCol()) {\n return current.getFirstToken().getStart();\n }\n if (next.getStr() === \")\"\n && next.getRow() === current.getLastToken().getRow()\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\n return current.getLastToken().getEnd();\n }\n }\n }\n return undefined;\n }\n checkComponentCond(cond) {\n const children = cond.getAllTokens();\n for (let i = 0; i < children.length - 1; i++) {\n const current = children[i];\n const next = children[i + 1];\n if (next.getStr().startsWith(\"'\")\n && next.getRow() === current.getRow()\n && next.getCol() === current.getEnd().getCol()) {\n return current.getEnd();\n }\n }\n return undefined;\n }\n checkValueBodyLine(vb) {\n var _a, _b;\n const children = vb.getChildren();\n for (let i = 0; i < children.length; i++) {\n const current = children[i];\n if (current instanceof nodes_1.TokenNode) {\n const prev = (_a = children[i - 1]) === null || _a === void 0 ? void 0 : _a.getLastToken();\n const next = (_b = children[i + 1]) === null || _b === void 0 ? void 0 : _b.getFirstToken();\n if (current.getFirstToken().getStr() === \"(\"\n && next\n && next.getRow() === current.getLastToken().getRow()\n && next.getCol() === current.getLastToken().getEnd().getCol()) {\n return current.getFirstToken().getStart();\n }\n if (current.getFirstToken().getStr() === \")\"\n && prev\n && prev.getRow() === current.getFirstToken().getRow()\n && prev.getEnd().getCol() === current.getFirstToken().getStart().getCol()) {\n return current.getLastToken().getEnd();\n }\n }\n }\n return undefined;\n }\n checkCond(cond) {\n const children = cond.getAllTokens();\n for (let i = 0; i < children.length - 1; i++) {\n const current = children[i];\n const next = children[i + 1];\n if (next.getStr().startsWith(\"'\")\n && next.getRow() === current.getRow()\n && next.getCol() === current.getEnd().getCol()) {\n return current.getEnd();\n }\n }\n return undefined;\n }\n checkMethodCallParam(call) {\n const children = call.getChildren();\n {\n const first = children[0].getFirstToken();\n const second = children[1].getFirstToken();\n if (first.getRow() === second.getRow()\n && first.getCol() + 1 === second.getStart().getCol()) {\n return second.getStart();\n }\n }\n {\n const first = children[children.length - 2].getLastToken();\n const second = children[children.length - 1].getFirstToken();\n if (first.getRow() === second.getRow()\n && first.getEnd().getCol() === second.getStart().getCol()) {\n return second.getStart();\n }\n }\n return undefined;\n }\n}\nexports.ParserMissingSpace = ParserMissingSpace;\n//# sourceMappingURL=parser_missing_space.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/parser_missing_space.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/pragma_style.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/pragma_style.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PragmaStyle = exports.PragmaStyleConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst keyword_case_1 = __webpack_require__(/*! ./keyword_case */ \"./node_modules/@abaplint/core/build/src/rules/keyword_case.js\");\nclass PragmaStyleConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.style = keyword_case_1.KeywordCaseStyle.Upper;\n }\n}\nexports.PragmaStyleConf = PragmaStyleConf;\nclass PragmaStyle extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PragmaStyleConf();\n }\n getMetadata() {\n return {\n key: \"pragma_style\",\n title: \"Pragma Style\",\n shortDescription: `Check pragmas placement and case`,\n tags: [_irule_1.RuleTag.SingleFile],\n extendedInformation: `https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/abenpragma.htm`,\n badExample: `DATA field ##NO_TEXT TYPE i.`,\n goodExample: `DATA field TYPE i ##NO_TEXT.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.style === undefined) {\n this.conf.style = keyword_case_1.KeywordCaseStyle.Upper;\n }\n }\n runParsed(file) {\n const issues = [];\n for (const s of file.getStatements()) {\n if (s.getPragmas().length === 0) {\n continue;\n }\n for (const p of s.getPragmas()) {\n const children = s.getChildren();\n if (children.length === 1) {\n break; // empty statement with pragma\n }\n if (children[children.length - 2].getLastToken().getStart().isAfter(p.getStart())) {\n const message = \"Place pragma at end of statement\";\n const issue = issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n continue; // max one finding per statement\n }\n if (this.conf.style === keyword_case_1.KeywordCaseStyle.Upper && p.getStr() !== p.getStr().toUpperCase()) {\n const message = \"Upper case pragmas\";\n const issue = issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n else if (this.conf.style === keyword_case_1.KeywordCaseStyle.Lower && p.getStr() !== p.getStr().toLowerCase()) {\n const message = \"Lower case pragmas\";\n const issue = issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n return issues;\n }\n}\nexports.PragmaStyle = PragmaStyle;\n//# sourceMappingURL=pragma_style.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/pragma_style.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefer_corresponding.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefer_corresponding.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferCorresponding = exports.PreferCorrespondingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass PreferCorrespondingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.PreferCorrespondingConf = PreferCorrespondingConf;\nclass PreferCorresponding extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PreferCorrespondingConf();\n }\n getMetadata() {\n return {\n key: \"prefer_corresponding\",\n title: \"Prefer corresponding( ) to MOVE-CORRESPONDING\",\n shortDescription: `Prefer corresponding( ) to MOVE-CORRESPONDING, from v740sp05 and up`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-functional-to-procedural-language-constructs`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Upport, _irule_1.RuleTag.Styleguide],\n badExample: `MOVE-CORRESPONDING foo TO bar.`,\n goodExample: `bar = CORRESPONDING #( foo ).`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n if (this.reg.getConfig().getVersion() < version_1.Version.v740sp05) {\n return issues;\n }\n const message = \"Use CORRESPONDING type( ... ) instead of MOVE-CORRESPONDING\";\n for (const stat of file.getStatements()) {\n if (stat.get() instanceof Statements.MoveCorresponding\n && stat.getChildren().length === 7) {\n issues.push(issue_1.Issue.atStatement(file, stat, message, this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.PreferCorresponding = PreferCorresponding;\n//# sourceMappingURL=prefer_corresponding.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefer_corresponding.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefer_inline.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefer_inline.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferInline = exports.PreferInlineConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass PreferInlineConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.PreferInlineConf = PreferInlineConf;\nclass PreferInline {\n constructor() {\n this.conf = new PreferInlineConf();\n }\n getMetadata() {\n return {\n key: \"prefer_inline\",\n title: \"Prefer Inline Declarations\",\n shortDescription: `Prefer inline to up-front declarations.`,\n extendedInformation: `EXPERIMENTAL\r\n\r\nActivates if language version is v740sp02 or above.\r\n\r\nVariables must be local(METHOD or FORM).\r\n\r\nNo generic or void typed variables. No syntax errors.\r\n\r\nFirst position used must be a full/pure write.\r\n\r\nMove statment is not a cast(?=)\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-inline-to-up-front-declarations`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Upport, _irule_1.RuleTag.Experimental, _irule_1.RuleTag.Quickfix],\n badExample: `DATA foo TYPE i.\r\nfoo = 2.\r\nDATA percentage TYPE decfloat34.\r\npercentage = ( comment_number / abs_statement_number ) * 100.`,\n goodExample: `DATA(foo) = 2.\r\nDATA(percentage) = CONV decfloat34( comment_number / abs_statement_number ) * 100.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n if (obj.getType() === \"INTF\") {\n return [];\n }\n if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02 && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {\n return [];\n }\n else if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const run = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (run.issues.length > 0) {\n return [];\n }\n const scopes = this.findScopeCandidates(run.spaghetti.getTop());\n const ret = [];\n for (const s of scopes) {\n ret.push(...this.analyzeScope(s, obj));\n }\n return ret;\n }\n ///////////////////////////\n analyzeScope(node, obj) {\n var _a, _b;\n const ret = [];\n const vars = node.getData().vars;\n for (const name in vars) {\n const identifier = vars[name];\n if (this.isLocalDefinition(node, identifier) === false\n || identifier.getMeta().includes(\"inline\" /* IdentifierMeta.InlineDefinition */)\n || identifier.getMeta().includes(\"form_parameter\" /* IdentifierMeta.FormParameter */)) {\n continue;\n }\n else if (identifier.getType().isGeneric() === true) {\n continue;\n }\n else if (identifier.getType().containsVoid() === true) {\n continue;\n }\n const write = this.firstUseIsWrite(node, identifier);\n if (write === undefined) {\n continue;\n }\n // check that it is a pure write, eg not sub component assignment\n const next = this.findNextToken(write, obj);\n if (next === undefined) {\n continue;\n }\n else if ((next === null || next === void 0 ? void 0 : next.getStart().equals(write.position.getEnd())) && next.getStr() !== \".\" && next.getStr() !== \",\") {\n continue;\n }\n const file = obj.getABAPFileByName(identifier.getFilename());\n const writeStatement = edit_helper_1.EditHelper.findStatement(next, file);\n const statementType = writeStatement === null || writeStatement === void 0 ? void 0 : writeStatement.get();\n if (statementType === undefined) {\n continue;\n }\n // for now only allow some specific target statements, todo refactor\n if (!(statementType instanceof Statements.Move\n || statementType instanceof Statements.Catch\n || statementType instanceof Statements.ReadTable\n || statementType instanceof Statements.Loop)\n || ((_a = writeStatement === null || writeStatement === void 0 ? void 0 : writeStatement.concatTokens()) === null || _a === void 0 ? void 0 : _a.includes(\"?=\"))\n || ((_b = writeStatement === null || writeStatement === void 0 ? void 0 : writeStatement.concatTokens()) === null || _b === void 0 ? void 0 : _b.includes(\" #(\"))) {\n continue;\n }\n const statement = edit_helper_1.EditHelper.findStatement(identifier.getToken(), file);\n const concat = statement === null || statement === void 0 ? void 0 : statement.concatTokens().toUpperCase();\n if (concat === null || concat === void 0 ? void 0 : concat.includes(\"BEGIN OF\")) {\n continue;\n }\n let fix = undefined;\n if (file && statement) {\n const fix1 = edit_helper_1.EditHelper.deleteStatement(file, statement);\n const name = identifier.getName();\n const replace = name.startsWith(\"<\") ? \"FIELD-SYMBOL(\" + name + \")\" : \"DATA(\" + name + \")\";\n const fix2 = edit_helper_1.EditHelper.replaceRange(file, write.position.getStart(), write.position.getEnd(), replace);\n fix = edit_helper_1.EditHelper.merge(fix1, fix2);\n }\n const message = this.getMetadata().title + \", \" + name;\n ret.push(issue_1.Issue.atIdentifier(identifier, message, this.getMetadata().key, this.conf.severity, fix));\n }\n return ret;\n }\n ////////////////////////\n findNextToken(ref, obj) {\n const file = obj.getABAPFileByName(ref.resolved.getFilename());\n if (file === undefined) {\n return undefined;\n }\n for (const t of file.getTokens()) {\n if (t.getStart().isAfter(ref.position.getEnd())) {\n return t;\n }\n }\n return undefined;\n }\n firstUseIsWrite(node, identifier) {\n // assumption: variables are local, so only the current scope must be searched\n var _a, _b, _c;\n for (const r of node.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.TypeReference\n && ((_a = r.resolved) === null || _a === void 0 ? void 0 : _a.getStart().equals(identifier.getStart())) === true) {\n return undefined;\n }\n }\n let firstRead = undefined;\n for (const r of node.getData().references) {\n if (r.referenceType !== _reference_1.ReferenceType.DataReadReference\n || ((_b = r.resolved) === null || _b === void 0 ? void 0 : _b.getStart().equals(identifier.getStart())) === false) {\n continue;\n }\n if (r.resolved) {\n firstRead = { position: r.position, resolved: r.resolved };\n break;\n }\n }\n let firstWrite = undefined;\n for (const w of node.getData().references) {\n if (w.referenceType !== _reference_1.ReferenceType.DataWriteReference\n || ((_c = w.resolved) === null || _c === void 0 ? void 0 : _c.getStart().equals(identifier.getStart())) === false) {\n continue;\n }\n if (w.resolved) {\n firstWrite = { position: w.position, resolved: w.resolved };\n break;\n }\n }\n if (firstRead === undefined) {\n return firstWrite;\n }\n else if (firstWrite === undefined) {\n return undefined;\n }\n else if (firstWrite.position.getStart().getRow() === firstRead.position.getStart().getRow()) {\n // if the same statement both reads and write the same variable\n // note that currently just the line number is compared, this is not correct, it should check if its the same statement\n return undefined;\n }\n else if (firstWrite.position.getStart().isBefore(firstRead.position.getStart())) {\n return firstWrite;\n }\n return undefined;\n }\n isLocalDefinition(node, identifier) {\n const { start, end } = node.calcCoverage();\n if (identifier.getStart().isAfter(start) && identifier.getStart().isBefore(end)) {\n return true;\n }\n else {\n return false;\n }\n }\n findScopeCandidates(node) {\n if (node.getIdentifier().stype === _scope_type_1.ScopeType.Form\n || node.getIdentifier().stype === _scope_type_1.ScopeType.Method) {\n return [node];\n }\n let ret = [];\n for (const c of node.getChildren()) {\n ret = ret.concat(this.findScopeCandidates(c));\n }\n return ret;\n }\n}\nexports.PreferInline = PreferInline;\n//# sourceMappingURL=prefer_inline.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefer_inline.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefer_is_not.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefer_is_not.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferIsNot = exports.PreferIsNotConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass PreferIsNotConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.PreferIsNotConf = PreferIsNotConf;\nclass PreferIsNot extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PreferIsNotConf();\n }\n getMetadata() {\n return {\n key: \"prefer_is_not\",\n title: \"Prefer IS NOT to NOT IS\",\n shortDescription: `Prefer IS NOT to NOT IS`,\n extendedInformation: `\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-is-not-to-not-is\r\n\r\n\"if not is_valid( ).\" examples are skipped`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n goodExample: `IF variable IS NOT INITIAL.\r\nIF variable NP 'TODO*'.\r\nIF variable <> 42.\r\nIF variable CO 'hello'.`,\n badExample: `IF NOT variable IS INITIAL.\r\nIF NOT variable CP 'TODO*'.\r\nIF NOT variable = 42.\r\nIF NOT variable CA 'hello'.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n for (const s of file.getStatements()) {\n for (const c of s.findAllExpressions(Expressions.Compare)) {\n if (c.concatTokens().toUpperCase().startsWith(\"NOT \") === false) {\n continue;\n }\n else if (c.getChildren().length === 2 && c.getChildren()[1].get() instanceof Expressions.MethodCallChain) {\n continue;\n }\n const message = \"Prefer IS NOT to NOT IS\";\n const fix = this.getFix(file, c);\n issues.push(issue_1.Issue.atToken(file, c.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix));\n }\n }\n return issues;\n }\n getFix(file, c) {\n let insertFix;\n if (c.getChildren()[2].getFirstToken().getStr().toUpperCase() === \"IS\") {\n const tokenPositionBeforeDelete = c.getChildren()[2].getLastToken().getEnd();\n const tokenPosition = new position_1.Position(tokenPositionBeforeDelete.getRow(), tokenPositionBeforeDelete.getCol() + 1);\n insertFix = edit_helper_1.EditHelper.insertAt(file, tokenPosition, \"NOT \");\n }\n else if (c.getChildren()[2].getFirstToken().getStr().toUpperCase() === \"IN\" || c.getChildren()[2].getFirstToken().getStr().toUpperCase() === \"BETWEEN\") {\n const tokenPositionBeforeDelete = c.getChildren()[1].getLastToken().getEnd();\n const tokenPosition = new position_1.Position(tokenPositionBeforeDelete.getRow(), tokenPositionBeforeDelete.getCol() + 1);\n insertFix = edit_helper_1.EditHelper.insertAt(file, tokenPosition, \"NOT \");\n }\n else if (c.getChildren()[2].getFirstToken().getStr() === \"=\") {\n insertFix = edit_helper_1.EditHelper.replaceToken(file, c.getChildren()[2].getLastToken(), \"<>\");\n }\n else if (c.getChildren()[2].getFirstToken().getStr() === \"<>\") {\n insertFix = edit_helper_1.EditHelper.replaceToken(file, c.getChildren()[2].getLastToken(), \"=\");\n }\n else if (c.getChildren()[2].getFirstToken().getStr() === \"<\") {\n insertFix = edit_helper_1.EditHelper.replaceToken(file, c.getChildren()[2].getLastToken(), \">\");\n }\n else if (c.getChildren()[2].getFirstToken().getStr() === \">\") {\n insertFix = edit_helper_1.EditHelper.replaceToken(file, c.getChildren()[2].getLastToken(), \"<\");\n }\n else if (c.getChildren()[2].getFirstToken().getStr() === \"<=\") {\n insertFix = edit_helper_1.EditHelper.replaceToken(file, c.getChildren()[2].getLastToken(), \">=\");\n }\n else if (c.getChildren()[2].getFirstToken().getStr() === \">=\") {\n insertFix = edit_helper_1.EditHelper.replaceToken(file, c.getChildren()[2].getLastToken(), \"<=\");\n }\n else {\n return;\n }\n const endCol = c.getChildren()[0].getFirstToken().getEnd().getCol() + 1;\n const endPosition = new position_1.Position(c.getChildren()[0].getFirstToken().getEnd().getRow(), endCol);\n const deleteFix = edit_helper_1.EditHelper.deleteRange(file, c.getChildren()[0].getFirstToken().getStart(), endPosition);\n const finalFix = edit_helper_1.EditHelper.merge(insertFix, deleteFix);\n return finalFix;\n }\n}\nexports.PreferIsNot = PreferIsNot;\n//# sourceMappingURL=prefer_is_not.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefer_is_not.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefer_pragmas.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefer_pragmas.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferPragmas = exports.PreferPragmasConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass PreferPragmasConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.check = [\n {\n pseudo: \"#EC CI_SUBRC\",\n pragma: \"SUBRC_OK\",\n },\n {\n pseudo: \"#EC NEEDED\",\n pragma: \"NEEDED\",\n },\n {\n pseudo: \"#EC NOTEXT\",\n pragma: \"NO_TEXT\",\n },\n {\n pseudo: \"#EC NO_HANDLER\",\n pragma: \"NO_HANDLER\",\n },\n ];\n }\n}\nexports.PreferPragmasConf = PreferPragmasConf;\nclass PreferPragmas extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PreferPragmasConf();\n }\n getMetadata() {\n return {\n key: \"prefer_pragmas\",\n title: \"prefer pragmas over pseudo comments \",\n shortDescription: `prefer pragmas over pseudo comments `,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-pragmas-to-pseudo-comments`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],\n badExample: `DATA foo1 TYPE i. \"#EC NEEDED`,\n goodExample: `DATA foo2 TYPE i ##NEEDED.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const config = this.getConfig();\n for (const statement of file.getStatements()) {\n if (!(statement.get() instanceof _statement_1.Comment)) {\n continue;\n }\n const concat = statement.concatTokens().toUpperCase();\n if (concat.includes(\"#EC\") === false) {\n continue;\n }\n for (const check of config.check) {\n if (concat.includes(check.pseudo.toUpperCase())) {\n const message = `Prefer pragma ${check.pragma}`;\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n return issues;\n }\n}\nexports.PreferPragmas = PreferPragmas;\n//# sourceMappingURL=prefer_pragmas.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefer_pragmas.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefer_raise_exception_new.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefer_raise_exception_new.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferRaiseExceptionNew = exports.PreferRaiseExceptionNewConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass PreferRaiseExceptionNewConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.PreferRaiseExceptionNewConf = PreferRaiseExceptionNewConf;\nclass PreferRaiseExceptionNew extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PreferRaiseExceptionNewConf();\n }\n getMetadata() {\n return {\n key: \"prefer_raise_exception_new\",\n title: \"Prefer RAISE EXCEPTION NEW to RAISE EXCEPTION TYPE\",\n shortDescription: `Prefer RAISE EXCEPTION NEW to RAISE EXCEPTION TYPE`,\n extendedInformation: `\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-raise-exception-new-to-raise-exception-type\r\n\r\nFrom 752 and up`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.Upport],\n goodExample: `RAISE EXCEPTION NEW cx_generation_error( previous = exception ).`,\n badExample: `RAISE EXCEPTION TYPE cx_generation_error\r\n EXPORTING\r\n previous = exception.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n if (this.reg.getConfig().getVersion() < __1.Version.v752) {\n return [];\n }\n const issues = [];\n for (const statement of file.getStatements()) {\n if (statement.get() instanceof __1.Statements.Raise) {\n const concat = statement.concatTokens().toUpperCase();\n if (concat.includes(\" MESSAGE\")) {\n continue;\n }\n if (concat.startsWith(\"RAISE EXCEPTION TYPE \")) {\n const message = \"Prefer RAISE EXCEPTION NEW to RAISE EXCEPTION TYPE\";\n const fix = this.getFix(file, statement, concat.includes(\" EXPORTING\") ? true : false);\n issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity, fix));\n }\n }\n }\n return issues;\n }\n getFix(file, statement, withExporting) {\n const children = statement.getChildren();\n let contentFix = undefined;\n if (withExporting) {\n const fixText = \"( \" + children[5].concatTokens() + \" ).\";\n contentFix = edit_helper_1.EditHelper.replaceRange(file, children[3].getLastToken().getEnd(), statement.getEnd(), fixText);\n }\n else {\n contentFix = edit_helper_1.EditHelper.replaceRange(file, children[3].getLastToken().getEnd(), statement.getEnd(), \"( ).\");\n }\n const replaceType = edit_helper_1.EditHelper.replaceToken(file, children[2].getFirstToken(), \"NEW\");\n return edit_helper_1.EditHelper.merge(contentFix, replaceType);\n }\n}\nexports.PreferRaiseExceptionNew = PreferRaiseExceptionNew;\n//# sourceMappingURL=prefer_raise_exception_new.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefer_raise_exception_new.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefer_returning_to_exporting.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefer_returning_to_exporting.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferReturningToExporting = exports.PreferReturningToExportingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass PreferReturningToExportingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.PreferReturningToExportingConf = PreferReturningToExportingConf;\nclass PreferReturningToExporting extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PreferReturningToExportingConf();\n }\n getMetadata() {\n return {\n key: \"prefer_returning_to_exporting\",\n title: \"Prefer RETURNING to EXPORTING\",\n shortDescription: `Prefer RETURNING to EXPORTING. Generic types cannot be RETURNING.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-returning-to-exporting\r\nhttps://docs.abapopenchecks.org/checks/44/`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const ret = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n for (const def of stru.findAllStatements(Statements.MethodDef)) {\n if (def.findFirstExpression(Expressions.MethodDefChanging)) {\n continue;\n }\n const exporting = def.findFirstExpression(Expressions.MethodDefExporting);\n if (exporting === undefined) {\n continue;\n }\n const returning = def.findFirstExpression(Expressions.MethodDefReturning);\n if (returning !== undefined) {\n continue;\n }\n const params = exporting.findDirectExpressions(Expressions.MethodParam);\n if (params.length !== 1) {\n continue;\n }\n const concat = params[0].concatTokens().toUpperCase();\n if (concat.endsWith(\"TYPE ANY\")\n || concat.endsWith(\"TYPE ANY TABLE\")\n || concat.endsWith(\"TYPE C\")\n || concat.endsWith(\"TYPE CLIKE\")\n || concat.endsWith(\"TYPE CSEQUENCE\")\n || concat.endsWith(\"TYPE DATA\")\n || concat.endsWith(\"TYPE DECFLOAT\")\n || concat.endsWith(\"TYPE HASHED TABLE\")\n || concat.endsWith(\"TYPE INDEX TABLE\")\n || concat.endsWith(\"TYPE N\")\n || concat.endsWith(\"TYPE NUMERIC\")\n || concat.endsWith(\"TYPE OBJECT\")\n || concat.endsWith(\"TYPE P\")\n || concat.endsWith(\"TYPE SIMPLE\")\n || concat.endsWith(\"TYPE SORTED TABLE\")\n || concat.endsWith(\"TYPE STANDARD TABLE\")\n || concat.endsWith(\"TYPE TABLE\")\n || concat.endsWith(\"TYPE X\")\n || concat.endsWith(\"TYPE XSEQUENCE\")) {\n continue;\n }\n const token = params[0].getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, \"Prefer RETURNING to EXPORTING\", this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n return ret;\n }\n}\nexports.PreferReturningToExporting = PreferReturningToExporting;\n//# sourceMappingURL=prefer_returning_to_exporting.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefer_returning_to_exporting.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefer_xsdbool.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefer_xsdbool.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferXsdbool = exports.PreferXsdboolConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass PreferXsdboolConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.PreferXsdboolConf = PreferXsdboolConf;\nclass PreferXsdbool extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PreferXsdboolConf();\n }\n getMetadata() {\n return {\n key: \"prefer_xsdbool\",\n title: \"Prefer xsdbool over boolc\",\n shortDescription: `Prefer xsdbool over boolc`,\n extendedInformation: `Activates if language version is v740sp08 or above.\r\n\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-xsdbool-to-set-boolean-variables`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Upport, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `DATA(sdf) = boolc( 1 = 2 ).`,\n goodExample: `DATA(sdf) = xsdbool( 1 = 2 ).`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n if (this.reg.getConfig().getVersion() < version_1.Version.v740sp08 && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {\n return [];\n }\n for (const s of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.Source)) || []) {\n if (s.concatTokens().toUpperCase().startsWith(\"BOOLC( \") === false) {\n continue;\n }\n const token = s.getFirstToken();\n const message = \"Prefer xsdbool over boolc\";\n const fix = edit_helper_1.EditHelper.replaceToken(file, token, \"xsdbool\");\n issues.push(issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity, fix));\n }\n return issues;\n }\n}\nexports.PreferXsdbool = PreferXsdbool;\n//# sourceMappingURL=prefer_xsdbool.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefer_xsdbool.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/preferred_compare_operator.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/preferred_compare_operator.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PreferredCompareOperator = exports.PreferredCompareOperatorConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass PreferredCompareOperatorConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Operators which are not allowed */\n this.badOperators = [\"EQ\", \"><\", \"NE\", \"GE\", \"GT\", \"LT\", \"LE\"];\n }\n}\nexports.PreferredCompareOperatorConf = PreferredCompareOperatorConf;\nclass PreferredCompareOperator extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PreferredCompareOperatorConf();\n this.operatorMapping = new Map();\n }\n getMetadata() {\n return {\n key: \"preferred_compare_operator\",\n title: \"Preferred compare operator\",\n shortDescription: `Configure undesired operator variants`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n };\n }\n getDescription(operator) {\n return \"Compare operator \\\"\" + operator + \"\\\" not preferred\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n this.buildMapping();\n const issues = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n const operators = struc.findAllExpressionsMulti([Expressions.CompareOperator, Expressions.SQLCompareOperator]);\n for (const op of operators) {\n const token = op.getLastToken();\n // todo, performance, lookup in hash map instead(JS object)\n if (this.conf.badOperators.indexOf(token.getStr().toUpperCase()) >= 0) {\n issues.push(this.createIssue(token, file));\n }\n }\n return issues;\n }\n buildMapping() {\n if (this.operatorMapping.size === 0) {\n this.operatorMapping.set(\"EQ\", \"=\");\n this.operatorMapping.set(\"><\", \"<>\");\n this.operatorMapping.set(\"NE\", \"<>\");\n this.operatorMapping.set(\"GE\", \">=\");\n this.operatorMapping.set(\"GT\", \">\");\n this.operatorMapping.set(\"LT\", \"<\");\n this.operatorMapping.set(\"LE\", \"<=\");\n this.operatorMapping.set(\"=\", \"EQ\");\n this.operatorMapping.set(\"<>\", \"NE\");\n this.operatorMapping.set(\">=\", \"GE\");\n this.operatorMapping.set(\">\", \"GT\");\n this.operatorMapping.set(\"<\", \"LT\");\n this.operatorMapping.set(\"<=\", \"LE\");\n }\n }\n createIssue(token, file) {\n var _a;\n const message = this.getDescription(token.getStr());\n const replacementToken = (_a = this.operatorMapping) === null || _a === void 0 ? void 0 : _a.get(token.getStr());\n // values in badOperators can be entered by the user and may not necessarily be actual operators\n if (replacementToken) {\n const fix = edit_helper_1.EditHelper.replaceRange(file, token.getStart(), token.getEnd(), replacementToken);\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity, fix);\n return issue;\n }\n else {\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n return issue;\n }\n }\n}\nexports.PreferredCompareOperator = PreferredCompareOperator;\n//# sourceMappingURL=preferred_compare_operator.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/preferred_compare_operator.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/prefix_is_current_class.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/prefix_is_current_class.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PrefixIsCurrentClass = exports.PrefixIsCurrentClassConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass PrefixIsCurrentClassConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /**\n * Checks usages of self references with 'me' when calling instance methods\n */\n this.omitMeInstanceCalls = true;\n }\n}\nexports.PrefixIsCurrentClassConf = PrefixIsCurrentClassConf;\nclass PrefixIsCurrentClass extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new PrefixIsCurrentClassConf();\n }\n getMetadata() {\n return {\n key: \"prefix_is_current_class\",\n title: \"Prefix is current class\",\n shortDescription: `Reports errors if the current class or interface references itself with \"current_class=>\"`,\n // eslint-disable-next-line max-len\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#omit-the-self-reference-me-when-calling-an-instance-attribute-or-method`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n return this.checkClasses(file).concat(this.checkInterfaces(file));\n }\n checkInterfaces(file) {\n var _a;\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n const issues = [];\n for (const s of struc.findDirectStructures(Structures.Interface)) {\n const name = (_a = s.findFirstExpression(expressions_1.InterfaceName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr().toUpperCase();\n if (name === undefined) {\n continue;\n }\n const staticAccess = name + \"=>\";\n for (const e of s.findAllExpressions(expressions_1.TypeName)) {\n const concat = e.concatTokens().toUpperCase();\n if (concat.startsWith(staticAccess)) {\n const stat = e.findDirectTokenByText(\"=>\");\n if (stat === undefined) {\n continue;\n }\n const start = new position_1.Position(stat.getRow(), stat.getCol() - name.length);\n const end = new position_1.Position(stat.getRow(), stat.getCol() + 2);\n const fix = edit_helper_1.EditHelper.deleteRange(file, start, end);\n issues.push(issue_1.Issue.atToken(file, e.getFirstToken(), \"Reference to current interface can be omitted\", this.getMetadata().key, this.conf.severity, fix));\n }\n }\n }\n return issues;\n }\n checkClasses(file) {\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n const issues = [];\n const classStructures = struc.findDirectStructures(Structures.ClassImplementation);\n classStructures.push(...struc.findDirectStructures(Structures.ClassDefinition));\n const meAccess = \"ME->\";\n for (const c of classStructures) {\n const className = c.findFirstExpression(expressions_1.ClassName).getFirstToken().getStr().toUpperCase();\n const staticAccess = className + \"=>\";\n for (const s of c.findAllStatementNodes()) {\n const concat = s.concatTokensWithoutStringsAndComments().toUpperCase();\n if (concat.includes(staticAccess)) {\n const tokenPos = s.findTokenSequencePosition(className, \"=>\");\n if (tokenPos) {\n const end = new position_1.Position(tokenPos.getRow(), tokenPos.getCol() + className.length + 2);\n const fix = edit_helper_1.EditHelper.deleteRange(file, tokenPos, end);\n issues.push(issue_1.Issue.atRange(file, tokenPos, end, \"Reference to current class can be omitted: \\\"\" + staticAccess + \"\\\"\", this.getMetadata().key, this.conf.severity, fix));\n }\n }\n else if (this.conf.omitMeInstanceCalls === true\n && concat.includes(meAccess)\n && s.findFirstExpression(expressions_1.MethodCall)) {\n const tokenPos = s.findTokenSequencePosition(\"me\", \"->\");\n if (tokenPos) {\n const end = new position_1.Position(tokenPos.getRow(), tokenPos.getCol() + 4);\n const fix = edit_helper_1.EditHelper.deleteRange(file, tokenPos, end);\n issues.push(issue_1.Issue.atRange(file, tokenPos, end, \"Omit 'me->' in instance calls\", this.getMetadata().key, this.conf.severity, fix));\n }\n }\n }\n }\n return issues;\n }\n}\nexports.PrefixIsCurrentClass = PrefixIsCurrentClass;\n//# sourceMappingURL=prefix_is_current_class.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/prefix_is_current_class.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/reduce_string_templates.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/reduce_string_templates.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReduceStringTemplates = exports.ReduceStringTemplatesConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass ReduceStringTemplatesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ReduceStringTemplatesConf = ReduceStringTemplatesConf;\nclass ReduceStringTemplates extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ReduceStringTemplatesConf();\n }\n getMetadata() {\n return {\n key: \"reduce_string_templates\",\n title: \"Reduce string templates\",\n shortDescription: `Checks for string templates`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `WRITE |{ |sdf| }|.\\nWRITE |{ 'sdf' }|.`,\n goodExample: `WRITE |sdf|.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, _obj) {\n const issues = [];\n const structure = file.getStructure();\n if (structure === undefined) {\n return [];\n }\n for (const template of structure.findAllExpressions(Expressions.StringTemplate)) {\n for (const ts of template.findAllExpressions(Expressions.StringTemplateSource)) {\n for (const source of ts.findDirectExpressions(Expressions.Source)) {\n for (const second of source.findDirectExpressions(Expressions.StringTemplate)) {\n issues.push(issue_1.Issue.atToken(file, second.getFirstToken(), \"Nested string templates, reduce\", this.getMetadata().key, this.conf.severity));\n }\n if (ts.findDirectExpression(Expressions.StringTemplateFormatting)) {\n continue;\n }\n for (const constant of source.findDirectExpressions(Expressions.Constant)) {\n for (const constantString of constant.findDirectExpressions(Expressions.ConstantString)) {\n issues.push(issue_1.Issue.atToken(file, constantString.getFirstToken(), \"Constant string in text template, reduce\", this.getMetadata().key, this.conf.severity));\n }\n }\n }\n }\n }\n for (const source of structure.findAllExpressions(Expressions.Source)) {\n const children = source.getChildren();\n if (children.length !== 3) {\n continue;\n }\n else if (!(children[0].get() instanceof Expressions.StringTemplate)) {\n continue;\n }\n else if (children[1].getFirstToken().getStr() !== \"&&\") {\n continue;\n }\n else if (!(children[2].get() instanceof Expressions.Source)) {\n continue;\n }\n const sub = children[2].getChildren();\n if (sub.length !== 1) {\n continue;\n }\n const start = children[0].getFirstToken().getStart();\n const end = sub[0].getLastToken().getEnd();\n if (start.getRow() === end.getRow()) {\n const message = \"Reduce template, remove \\\"&&\\\"\";\n issues.push(issue_1.Issue.atToken(file, children[1].getFirstToken(), message, this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.ReduceStringTemplates = ReduceStringTemplates;\n//# sourceMappingURL=reduce_string_templates.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/reduce_string_templates.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/release_idoc.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/release_idoc.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReleaseIdoc = exports.ReleaseIdocConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass ReleaseIdocConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.ReleaseIdocConf = ReleaseIdocConf;\nclass ReleaseIdoc {\n constructor() {\n this.conf = new ReleaseIdocConf();\n }\n getMetadata() {\n return {\n key: \"release_idoc\",\n title: \"Release iDoc\",\n shortDescription: `Checks idoc types and segments are set to status released`,\n };\n }\n getMessage() {\n return \"Idoc type/segement status must be set to released\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n const file = obj.getXMLFile();\n if (file === undefined) {\n return [];\n }\n if (obj instanceof Objects.Table) {\n if (file.getRaw().includes(\"\") === false) {\n return [];\n }\n }\n else if (!(obj instanceof Objects.Idoc)) {\n return [];\n }\n if (file.getRaw().includes(\"X\") === false) {\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, this.getMessage(), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n else {\n return [];\n }\n }\n}\nexports.ReleaseIdoc = ReleaseIdoc;\n//# sourceMappingURL=release_idoc.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/release_idoc.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/remove_descriptions.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/remove_descriptions.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RemoveDescriptions = exports.RemoveDescriptionsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst fast_xml_parser_1 = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst xml_utils_1 = __webpack_require__(/*! ../xml_utils */ \"./node_modules/@abaplint/core/build/src/xml_utils.js\");\nclass RemoveDescriptionsConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Ignore global exception classes */\n this.ignoreExceptions = false;\n /** Ignore global workflow classes */\n this.ignoreWorkflow = true;\n }\n}\nexports.RemoveDescriptionsConf = RemoveDescriptionsConf;\nclass RemoveDescriptions {\n constructor() {\n this.conf = new RemoveDescriptionsConf();\n }\n getMetadata() {\n return {\n key: \"remove_descriptions\",\n title: \"Remove descriptions\",\n shortDescription: `Ensures you have no descriptions in metadata of methods, parameters, etc.\r\n\r\nClass descriptions are required, see rule description_empty.\r\n\r\nConsider using ABAP Doc for documentation.`,\n tags: [],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n // plan is omitting knowledge about descriptions in abaplint, so this rule must parse the XML\n const ddic = new ddic_1.DDIC(this.reg);\n if (obj instanceof Objects.Class) {\n let def;\n try {\n def = obj.getClassDefinition();\n }\n catch (_a) {\n return [];\n }\n if (def === undefined) {\n return [];\n }\n else if (this.conf.ignoreExceptions && ddic.isException(def, obj)) {\n return [];\n }\n else if (this.conf.ignoreWorkflow === true && def.interfaces.find(e => e.name.toUpperCase() === \"IF_WORKFLOW\")) {\n return [];\n }\n return this.checkClass(obj);\n }\n else if (obj instanceof Objects.Interface) {\n return this.checkInterface(obj);\n }\n return [];\n }\n //////////////\n checkInterface(obj) {\n const xml = obj.getXML();\n if (xml === undefined) {\n return [];\n }\n const file = obj.getXMLFile();\n if (file === undefined) {\n return [];\n }\n return this.checkXML(xml, file);\n }\n checkClass(obj) {\n const xml = obj.getXML();\n if (xml === undefined) {\n return [];\n }\n const file = obj.getXMLFile();\n if (file === undefined) {\n return [];\n }\n return this.checkXML(xml, file);\n }\n checkXML(xml, file) {\n const parsed = new fast_xml_parser_1.XMLParser({ parseTagValue: false, ignoreAttributes: true, trimValues: false }).parse(xml);\n if (parsed === undefined || parsed.abapGit[\"asx:abap\"][\"asx:values\"] === undefined) {\n return [];\n }\n const desc = parsed.abapGit[\"asx:abap\"][\"asx:values\"].DESCRIPTIONS;\n if (desc === undefined) {\n return [];\n }\n const reported = {}; // there might be multiple translations\n const ret = [];\n for (const d of (0, xml_utils_1.xmlToArray)(desc.SEOCOMPOTX)) {\n const message = \"Remove description for \" + d.CMPNAME;\n if (reported[d.CMPNAME] !== undefined) {\n continue;\n }\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(file, position, message, this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n reported[d.CMPNAME] = true;\n }\n return ret;\n }\n}\nexports.RemoveDescriptions = RemoveDescriptions;\n//# sourceMappingURL=remove_descriptions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/remove_descriptions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/rfc_error_handling.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/rfc_error_handling.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RFCErrorHandling = exports.RFCErrorHandlingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass RFCErrorHandlingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.RFCErrorHandlingConf = RFCErrorHandlingConf;\nclass RFCErrorHandling extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new RFCErrorHandlingConf();\n }\n getMetadata() {\n return {\n key: \"rfc_error_handling\",\n title: \"RFC error handling\",\n tags: [_irule_1.RuleTag.SingleFile],\n shortDescription: `Checks that exceptions 'system_failure' and 'communication_failure' are handled in RFC calls`,\n extendedInformation: `https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenrfc_exception.htm`,\n badExample: `\r\nCALL FUNCTION 'ZRFC'\r\n DESTINATION lv_rfc.`,\n goodExample: `\r\nCALL FUNCTION 'ZRFC'\r\n DESTINATION lv_rfc\r\n EXCEPTIONS\r\n system_failure = 1 MESSAGE msg\r\n communication_failure = 2 MESSAGE msg\r\n resource_failure = 3\r\n OTHERS = 4.`,\n };\n }\n getMessage() {\n return \"RFC error handling: At least one unhandled exception from SYSTEM_FAILURE, COMMUNICATION_FAILURE, RESOURCE_FAILURE\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const output = [];\n for (const stat of file.getStatements()) {\n const token = stat.getFirstToken();\n if (!(stat.get() instanceof Statements.CallFunction)) {\n continue;\n }\n if (!stat.findFirstExpression(Expressions.Destination)) {\n continue;\n }\n const list = stat.findFirstExpression(Expressions.ParameterListExceptions);\n if (list === undefined) {\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n output.push(issue);\n continue;\n }\n const parameters = list.findAllExpressions(Expressions.ParameterName);\n const names = [];\n for (const par of parameters) {\n names.push(par.getFirstToken().getStr().toUpperCase());\n }\n if (names.indexOf(\"SYSTEM_FAILURE\") < 0\n || names.indexOf(\"COMMUNICATION_FAILURE\") < 0\n || names.indexOf(\"RESOURCE_FAILURE\") < 0) {\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n output.push(issue);\n continue;\n }\n }\n return output;\n }\n}\nexports.RFCErrorHandling = RFCErrorHandling;\n//# sourceMappingURL=rfc_error_handling.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/rfc_error_handling.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/select_add_order_by.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/select_add_order_by.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectAddOrderBy = exports.SelectAddOrderByConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass SelectAddOrderByConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SelectAddOrderByConf = SelectAddOrderByConf;\nclass SelectAddOrderBy {\n constructor() {\n this.conf = new SelectAddOrderByConf();\n }\n getMetadata() {\n return {\n key: \"select_add_order_by\",\n title: \"SELECT add ORDER BY\",\n shortDescription: `SELECTs add ORDER BY clause`,\n extendedInformation: `\r\nThis will make sure that the SELECT statement returns results in the same sequence on different databases\r\n\r\nadd ORDER BY PRIMARY KEY if in doubt\r\n\r\nIf the target is a sorted/hashed table, no issue is reported`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n var _a;\n const issues = [];\n if (!(obj instanceof _abap_object_1.ABAPObject) || obj.getType() === \"INTF\") {\n return [];\n }\n const spaghetti = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti;\n for (const file of obj.getABAPFiles()) {\n const stru = file.getStructure();\n if (stru === undefined) {\n return issues;\n }\n const selects = stru.findAllStatements(Statements.Select);\n selects.push(...stru.findAllStatements(Statements.SelectLoop));\n for (const s of selects) {\n const c = s.concatTokens().toUpperCase();\n if (c.startsWith(\"SELECT SINGLE \")) {\n continue;\n }\n // skip COUNT(*)\n const list = s.findAllExpressions(Expressions.SQLField);\n if (list.length === 1 && ((_a = list[0].getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.SQLAggregation) {\n continue;\n }\n else if (s.findFirstExpression(Expressions.SQLOrderBy)) {\n continue;\n }\n if (this.isTargetSortedOrHashed(s, spaghetti, file)) {\n continue;\n }\n else if (s.findFirstExpression(Expressions.SQLJoin) && s.findFirstExpression(Expressions.SQLForAllEntries)) {\n // see https://github.com/abaplint/abaplint/issues/2957\n continue;\n }\n issues.push(issue_1.Issue.atStatement(file, s, \"Add ORDER BY\", this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n isTargetSortedOrHashed(s, spaghetti, file) {\n var _a, _b;\n const target = (_a = s.findFirstExpression(Expressions.SQLIntoTable)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(Expressions.Target);\n if (target) {\n const start = target.getFirstToken().getStart();\n const scope = spaghetti.lookupPosition(start, file.getFilename());\n let type = (_b = scope === null || scope === void 0 ? void 0 : scope.findWriteReference(start)) === null || _b === void 0 ? void 0 : _b.getType();\n const children = target.getChildren();\n if (type instanceof basic_1.StructureType && children.length >= 3 && children[1].concatTokens() === \"-\") {\n const found = type.getComponentByName(children[2].concatTokens());\n if (found === undefined) {\n return false;\n }\n type = found;\n }\n if (type instanceof basic_1.TableType\n && ((type === null || type === void 0 ? void 0 : type.getAccessType()) === basic_1.TableAccessType.sorted\n || (type === null || type === void 0 ? void 0 : type.getAccessType()) === basic_1.TableAccessType.hashed)) {\n return true;\n }\n }\n return false;\n }\n}\nexports.SelectAddOrderBy = SelectAddOrderBy;\n//# sourceMappingURL=select_add_order_by.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/select_add_order_by.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/select_performance.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/select_performance.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectPerformance = exports.SelectPerformanceConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst structure_type_1 = __webpack_require__(/*! ../abap/types/basic/structure_type */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/structure_type.js\");\nconst DEFAULT_COLUMNS = 10;\nclass SelectPerformanceConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Detects ENDSELECT */\n this.endSelect = true;\n /** Detects SELECT * */\n this.selectStar = true;\n /** \"SELECT\" * is considered okay if the table is less than X columns, the table must be known to the linter */\n this.starOkayIfFewColumns = DEFAULT_COLUMNS;\n }\n}\nexports.SelectPerformanceConf = SelectPerformanceConf;\nclass SelectPerformance {\n constructor() {\n this.conf = new SelectPerformanceConf();\n }\n getMetadata() {\n return {\n key: \"select_performance\",\n title: \"SELECT performance\",\n shortDescription: `Various checks regarding SELECT performance.`,\n extendedInformation: `ENDSELECT: not reported when the corresponding SELECT has PACKAGE SIZE\r\n\r\nSELECT *: not reported if using INTO/APPENDING CORRESPONDING FIELDS OF`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Performance],\n badExample: `SELECT field1, field2 FROM table\r\n INTO @DATA(structure) UP TO 1 ROWS ORDER BY field3 DESCENDING.\r\nENDSELECT.`,\n goodExample: `SELECT field1, field2 FROM table UP TO 1 ROWS\r\n INTO TABLE @DATA(table) ORDER BY field3 DESCENDING`,\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n if (this.conf.starOkayIfFewColumns === undefined) {\n this.conf.starOkayIfFewColumns = DEFAULT_COLUMNS;\n }\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const issues = [];\n for (const file of obj.getABAPFiles()) {\n const stru = file.getStructure();\n if (stru === undefined) {\n return issues;\n }\n if (this.conf.endSelect) {\n for (const s of stru.findAllStructures(Structures.Select) || []) {\n const select = s.findDirectStatement(Statements.SelectLoop);\n if (select === undefined || select.concatTokens().toUpperCase().includes(\"PACKAGE SIZE\")) {\n continue;\n }\n const message = \"Avoid use of ENDSELECT\";\n issues.push(issue_1.Issue.atStatement(file, select, message, this.getMetadata().key, this.conf.severity));\n }\n }\n if (this.conf.selectStar) {\n const spaghetti = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti;\n const selects = stru.findAllStatements(Statements.Select);\n selects.push(...stru.findAllStatements(Statements.SelectLoop));\n for (const s of selects) {\n const concat = s.concatTokens().toUpperCase();\n if (concat.startsWith(\"SELECT * \") === false\n && concat.startsWith(\"SELECT SINGLE * \") === false) {\n continue;\n }\n else if (concat.includes(\" INTO CORRESPONDING FIELDS OF \")\n || concat.includes(\" APPENDING CORRESPONDING FIELDS OF \")) {\n continue;\n }\n const columnCount = this.findNumberOfColumns(s, file, spaghetti);\n if (columnCount\n && columnCount <= this.getConfig().starOkayIfFewColumns) {\n continue;\n }\n const message = \"Avoid use of SELECT *\";\n issues.push(issue_1.Issue.atToken(file, s.getFirstToken(), message, this.getMetadata().key, this.conf.severity));\n }\n }\n }\n return issues;\n }\n findNumberOfColumns(s, file, spaghetti) {\n const dbnames = s.findAllExpressions(Expressions.DatabaseTable);\n if (dbnames.length === 1) {\n const start = dbnames[0].getFirstToken().getStart();\n const scope = spaghetti.lookupPosition(start, file.getFilename());\n const name = scope === null || scope === void 0 ? void 0 : scope.findTableReference(start);\n const tabl = this.reg.getObject(\"TABL\", name);\n const parsed = tabl === null || tabl === void 0 ? void 0 : tabl.parseType(this.reg);\n if (parsed instanceof structure_type_1.StructureType) {\n return parsed.getComponents().length;\n }\n }\n return undefined;\n }\n}\nexports.SelectPerformance = SelectPerformance;\n//# sourceMappingURL=select_performance.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/select_performance.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/select_single_full_key.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/select_single_full_key.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectSingleFullKey = exports.SelectSingleFullKeyConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst __1 = __webpack_require__(/*! .. */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass SelectSingleFullKeyConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.allowPseudo = true;\n }\n}\nexports.SelectSingleFullKeyConf = SelectSingleFullKeyConf;\nclass SelectSingleFullKey {\n constructor() {\n this.conf = new SelectSingleFullKeyConf();\n }\n getMetadata() {\n return {\n key: \"select_single_full_key\",\n title: \"Detect SELECT SINGLE which are possibily not unique\",\n shortDescription: `Detect SELECT SINGLE which are possibily not unique`,\n extendedInformation: `Table definitions must be known, ie. inside the errorNamespace\r\n\r\nIf the statement contains a JOIN it is not checked`,\n pseudoComment: \"EC CI_NOORDER\",\n tags: [],\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n if (this.conf === undefined) {\n this.conf = {\n allowPseudo: true,\n };\n }\n if (this.conf.allowPseudo === undefined) {\n this.conf.allowPseudo = true;\n }\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n var _a, _b;\n if (!(obj instanceof __1.ABAPObject)) {\n return [];\n }\n const syntax = new __1.SyntaxLogic(this.reg, obj).run();\n if (syntax.issues.length > 0) {\n return [];\n }\n const issues = [];\n const message = \"SELECT SINGLE possibily not unique\";\n for (const file of obj.getABAPFiles()) {\n const statements = file.getStatements();\n for (let i = 0; i < statements.length; i++) {\n const s = statements[i];\n if (!(s.get() instanceof __1.Statements.Select)) {\n continue;\n }\n else if (s.findFirstExpression(__1.Expressions.SQLJoin)) {\n continue;\n }\n else if (s.findTokenSequencePosition(\"SELECT\", \"SINGLE\") === undefined) {\n continue;\n }\n const databaseTable = s.findFirstExpression(__1.Expressions.DatabaseTable);\n if (databaseTable === undefined) {\n continue;\n }\n const next = statements[i + 1];\n if ((next === null || next === void 0 ? void 0 : next.get()) instanceof __1.Comment\n && next.concatTokens().includes(this.getMetadata().pseudoComment + \"\")) {\n if (this.getConfig().allowPseudo !== true) {\n issues.push(issue_1.Issue.atStatement(file, s, \"Pseudo comment not allowed\", this.getMetadata().key, this.getConfig().severity));\n }\n continue;\n }\n const tabl = this.findReference(databaseTable.getFirstToken().getStart(), syntax.spaghetti, file);\n const table = this.reg.getObject(\"TABL\", tabl);\n if (table === undefined) {\n continue;\n }\n const keys = table.listKeys(this.reg);\n const cond = s.findFirstExpression(__1.Expressions.SQLCond);\n const set = new Set();\n for (const key of keys) {\n if (key === \"MANDT\") {\n // todo, it should check for the correct type instead\n continue;\n }\n set.add(key);\n }\n for (const compare of (cond === null || cond === void 0 ? void 0 : cond.findAllExpressionsRecursive(__1.Expressions.SQLCompare)) || []) {\n if (compare.getChildren().length === 3) {\n const fname = (_a = compare.findDirectExpression(__1.Expressions.SQLFieldName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();\n const operator = (_b = compare.findDirectExpression(__1.Expressions.SQLCompareOperator)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase();\n if (fname && (operator === \"=\" || operator === \"EQ\")) {\n set.delete(fname);\n }\n }\n }\n if (set.size > 0) {\n issues.push(issue_1.Issue.atStatement(file, s, message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n return issues;\n }\n findReference(position, spaghetti, file) {\n const scope = spaghetti.lookupPosition(position, file.getFilename());\n return scope === null || scope === void 0 ? void 0 : scope.findTableReference(position);\n }\n}\nexports.SelectSingleFullKey = SelectSingleFullKey;\n//# sourceMappingURL=select_single_full_key.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/select_single_full_key.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/selection_screen_naming.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/selection_screen_naming.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SelectionScreenNaming = exports.SelectionScreenNamingConf = void 0;\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _naming_rule_config_1 = __webpack_require__(/*! ./_naming_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_naming_rule_config.js\");\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst name_validator_1 = __webpack_require__(/*! ../utils/name_validator */ \"./node_modules/@abaplint/core/build/src/utils/name_validator.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass SelectionScreenNamingConf extends _naming_rule_config_1.NamingRuleConfig {\n constructor() {\n super(...arguments);\n /** The pattern for selection-screen parameters */\n this.parameter = \"^P_.+$\";\n /** The pattern for selection-screen select-options */\n this.selectOption = \"^S_.+$\";\n /** The pattern for selection-screen screen elements */\n this.screenElement = \"^SC_.+$\";\n }\n}\nexports.SelectionScreenNamingConf = SelectionScreenNamingConf;\nclass SelectionScreenNaming extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SelectionScreenNamingConf();\n }\n getMetadata() {\n return {\n key: \"selection_screen_naming\",\n title: \"Selection screen naming conventions\",\n shortDescription: `Allows you to enforce a pattern, such as a prefix, for selection-screen variable names.`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile],\n };\n }\n getDescription(expected, actual) {\n return this.conf.patternKind === \"required\" ?\n `Selection-Screen variable name does not match pattern ${expected}: ${actual}` :\n `Selection-Screen variable name must not match pattern ${expected}: ${actual}`;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n if (this.conf.patternKind === undefined) {\n this.conf.patternKind = \"required\";\n }\n let parameterCheckDisabled = false;\n let selectOptionDisabled = false;\n let screenElementDisabled = false;\n if (this.conf.parameter === undefined || this.conf.parameter.length === 0) {\n parameterCheckDisabled = true;\n }\n if (this.conf.selectOption === undefined || this.conf.selectOption.length === 0) {\n selectOptionDisabled = true;\n }\n if (this.conf.screenElement === undefined || this.conf.screenElement.length === 0) {\n screenElementDisabled = true;\n }\n for (const stat of file.getStatements()) {\n if ((stat.get() instanceof statements_1.Parameter && !parameterCheckDisabled)\n || (stat.get() instanceof statements_1.SelectOption && !selectOptionDisabled)\n || (stat.get() instanceof statements_1.SelectionScreen && !screenElementDisabled)) {\n const fieldNode = this.getFieldForStatementNode(stat);\n const regex = new RegExp(this.getPatternForStatement(stat.get()), \"i\");\n if (fieldNode && name_validator_1.NameValidator.violatesRule(fieldNode.getFirstToken().getStr(), regex, this.conf)) {\n issues.push(issue_1.Issue.atToken(file, fieldNode.getFirstToken(), this.getDescription(this.getPatternForStatement(stat.get()), fieldNode.getFirstToken().getStr()), this.getMetadata().key, this.conf.severity));\n }\n }\n }\n return issues;\n }\n getPatternForStatement(statement) {\n let pattern = \"\";\n if (statement instanceof statements_1.Parameter) {\n pattern = this.conf.parameter;\n }\n else if (statement instanceof statements_1.SelectOption) {\n pattern = this.conf.selectOption;\n }\n else if (statement instanceof statements_1.SelectionScreen) {\n pattern = this.conf.screenElement;\n }\n return pattern;\n }\n getFieldForStatementNode(statNode) {\n if (statNode.get() instanceof statements_1.Parameter) {\n return statNode.findFirstExpression(expressions_1.FieldSub);\n }\n else if (statNode.get() instanceof statements_1.SelectOption) {\n return statNode.findFirstExpression(expressions_1.FieldSub);\n }\n else if (statNode.get() instanceof statements_1.SelectionScreen) {\n return statNode.findFirstExpression(expressions_1.InlineField);\n }\n else {\n return undefined;\n }\n }\n}\nexports.SelectionScreenNaming = SelectionScreenNaming;\n//# sourceMappingURL=selection_screen_naming.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/selection_screen_naming.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/sequential_blank.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/sequential_blank.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SequentialBlank = exports.SequentialBlankConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass SequentialBlankConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** An equal or higher number of sequential blank lines will trigger a violation.\n * Example: if lines = 3, a maximum of 2 is allowed.\n */\n this.lines = 4;\n }\n}\nexports.SequentialBlankConf = SequentialBlankConf;\nclass SequentialBlank extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SequentialBlankConf();\n }\n static isBlankOrWhitespace(line) {\n return /^\\s*$/.test(line);\n }\n getMetadata() {\n return {\n key: \"sequential_blank\",\n title: \"Sequential blank lines\",\n shortDescription: `Checks that code does not contain more than the configured number of blank lines in a row.`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Remove sequential blank lines\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const rows = file.getRawRows();\n let blanks = 0;\n for (let i = 0; i < rows.length; i++) {\n if (SequentialBlank.isBlankOrWhitespace(rows[i])) {\n blanks++;\n }\n else {\n blanks = 0;\n }\n if (blanks === this.conf.lines) {\n let blankCounter = 1;\n while (i + blankCounter < rows.length && SequentialBlank.isBlankOrWhitespace(rows[i + blankCounter])) {\n ++blankCounter;\n }\n const reportPos = new position_1.Position(i + 1, 1);\n // fix has to start at end of previous row for it to properly delete the first row\n const startPos = new position_1.Position(i, rows[i].length + 1);\n const endPos = new position_1.Position(i + blankCounter, rows[i + blankCounter - 1].length + 1);\n const fix = edit_helper_1.EditHelper.deleteRange(file, startPos, endPos);\n const issue = issue_1.Issue.atPosition(file, reportPos, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.SequentialBlank = SequentialBlank;\n//# sourceMappingURL=sequential_blank.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/sequential_blank.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/short_case.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/short_case.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ShortCase = exports.ShortCaseConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass ShortCaseConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** The smallest number of WHEN branches which will trigger a violation.\n * Example: if length = 1, at least 2 branches are required\n */\n this.length = 1;\n /** List of inputs for CASE which are allowed\n * @uniqueItems true\n */\n this.allow = [];\n }\n}\nexports.ShortCaseConf = ShortCaseConf;\nclass ShortCase extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new ShortCaseConf();\n }\n getMetadata() {\n return {\n key: \"short_case\",\n title: \"Short CASE\",\n shortDescription: `Checks for CASE statements which have fewer than the specified number of branches`,\n extendedInformation: `Short CASE constructs can be changed to IF`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: \"CASE moo.\\nWHEN 'X'.\\nENDCASE.\",\n goodExample: \"IF moo = 'X'.\\nENDIF.\",\n };\n }\n getMessage() {\n return \"CASE construct too short, it must have a minimum of \" + (this.conf.length + 1) + \" WHEN branches\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n for (const c of struc.findAllStructures(Structures.Case)) {\n const clist = c.findDirectStatements(Statements.Case);\n if (clist.length > 0 && this.conf.allow && this.conf.allow.find((e) => { return e === clist[0].getTokens()[1].getStr(); })) {\n continue;\n }\n if (c.findDirectStructures(Structures.When).length <= this.conf.length) {\n if (c.findAllExpressions(Expressions.Or).length > 0) {\n continue;\n }\n const issue = issue_1.Issue.atToken(file, c.getFirstToken(), this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.ShortCase = ShortCase;\n//# sourceMappingURL=short_case.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/short_case.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/sicf_consistency.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/sicf_consistency.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SICFConsistency = exports.SICFConsistencyConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass SICFConsistencyConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** skip specific names, case insensitive\n * @uniqueItems true\n */\n this.skipNames = [];\n }\n}\nexports.SICFConsistencyConf = SICFConsistencyConf;\nclass SICFConsistency {\n constructor() {\n this.conf = new SICFConsistencyConf();\n }\n getMetadata() {\n return {\n key: \"sicf_consistency\",\n title: \"SICF consistency\",\n shortDescription: `Checks the validity of ICF services`,\n extendedInformation: `* Class defined in handler must exist\r\n* Class must not have any syntax errors\r\n* Class must implement interface IF_HTTP_EXTENSION`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.skipNames === undefined) {\n this.conf.skipNames = [];\n }\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n const issues = [];\n if (!(obj instanceof objects_1.ICFService)) {\n return [];\n }\n const handlers = obj.getHandlerList();\n if (handlers === undefined) {\n return [];\n }\n for (const h of handlers) {\n const clas = this.reg.getObject(\"CLAS\", h);\n if (clas === undefined) {\n if (this.conf.skipNames && this.conf.skipNames.some((a) => a.toUpperCase() === h.toUpperCase())) {\n continue;\n }\n const pattern = new RegExp(this.reg.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n if (pattern.test(h) === true) {\n const message = \"Handler class \" + h + \" not found\";\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], new position_1.Position(1, 1), message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n continue;\n }\n const def = clas.getClassDefinition();\n if (def === undefined) {\n const message = \"Syntax error in class \" + h;\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], new position_1.Position(1, 1), message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n continue;\n }\n const implementing = this.findImplementing(def);\n if (implementing.findIndex((i) => { return i.name.toUpperCase() === \"IF_HTTP_EXTENSION\"; }) < 0) {\n const message = \"Handler class \" + h + \" must implement IF_HTTP_EXTENSION\";\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], new position_1.Position(1, 1), message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n continue;\n }\n }\n return issues;\n }\n ///////////////////////////\n findImplementing(def) {\n let ret = def.interfaces;\n let superName = def.superClassName;\n while (superName !== undefined) {\n const clas = this.reg.getObject(\"CLAS\", superName);\n if (clas === undefined) {\n break;\n }\n const superDef = clas.getClassDefinition();\n if (superDef === undefined) {\n break;\n }\n ret = ret.concat(superDef.interfaces);\n superName = superDef.superClassName;\n }\n return ret;\n }\n}\nexports.SICFConsistency = SICFConsistency;\n//# sourceMappingURL=sicf_consistency.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/sicf_consistency.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/slow_parameter_passing.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/slow_parameter_passing.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SlowParameterPassing = exports.SlowParameterPassingConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass SlowParameterPassingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SlowParameterPassingConf = SlowParameterPassingConf;\nclass SlowParameterPassing {\n constructor() {\n this.conf = new SlowParameterPassingConf();\n }\n getMetadata() {\n return {\n key: \"slow_parameter_passing\",\n title: \"Slow Parameter Passing\",\n shortDescription: `Detects slow pass by value passing for methods where parameter is not changed`,\n tags: [_irule_1.RuleTag.Performance],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n const issues = [];\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const top = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop();\n const methods = this.listMethodNodes(top);\n for (const m of methods) {\n const vars = m.getData().vars;\n for (const v in vars) {\n const id = vars[v];\n if (id.getMeta().includes(\"pass_by_value\" /* IdentifierMeta.PassByValue */) === false) {\n continue;\n }\n const writes = this.listWritePositions(m, id);\n if (writes.length === 0) {\n const message = \"Parameter \" + id.getName() + \" passed by VALUE but not changed\";\n if (this.reg.isFileDependency(id.getFilename()) === true) {\n continue;\n }\n issues.push(issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n }\n return issues;\n }\n listWritePositions(node, id) {\n var _a, _b;\n const ret = [];\n for (const v of node.getData().references) {\n if (v.referenceType === _reference_1.ReferenceType.DataWriteReference\n && ((_a = v.resolved) === null || _a === void 0 ? void 0 : _a.getFilename()) === id.getFilename()\n && ((_b = v.resolved) === null || _b === void 0 ? void 0 : _b.getStart().equals(id.getStart()))) {\n ret.push(v.position.getStart());\n }\n }\n return ret;\n }\n listMethodNodes(node) {\n const ret = [];\n if (node.getIdentifier().stype === _scope_type_1.ScopeType.Method) {\n ret.push(node);\n }\n else {\n for (const c of node.getChildren()) {\n ret.push(...this.listMethodNodes(c));\n }\n }\n return ret;\n }\n}\nexports.SlowParameterPassing = SlowParameterPassing;\n//# sourceMappingURL=slow_parameter_passing.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/slow_parameter_passing.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/smim_consistency.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/smim_consistency.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SMIMConsistency = exports.SMIMConsistencyConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass SMIMConsistencyConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SMIMConsistencyConf = SMIMConsistencyConf;\nclass SMIMConsistency {\n constructor() {\n this.conf = new SMIMConsistencyConf();\n }\n getMetadata() {\n return {\n key: \"smim_consistency\",\n title: \"SMIM consistency check\",\n shortDescription: `SMIM consistency check`,\n extendedInformation: \"Check folders exists\",\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n const issues = [];\n if (!(obj instanceof objects_1.MIMEObject)) {\n return [];\n }\n const base = this.base(obj.getURL() || \"\");\n if (base !== \"\" && this.findFolder(base) === false) {\n const message = `Parent folder \"${base}\" not found`;\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n return issues;\n }\n base(full) {\n const components = full.split(\"/\");\n components.pop();\n return components.join(\"/\");\n }\n findFolder(base) {\n for (const smim of this.reg.getObjectsByType(\"SMIM\")) {\n const mime = smim;\n if (base === mime.getURL() && mime.isFolder() === true) {\n return true;\n }\n }\n return false;\n }\n}\nexports.SMIMConsistency = SMIMConsistency;\n//# sourceMappingURL=smim_consistency.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/smim_consistency.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/space_before_colon.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/space_before_colon.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SpaceBeforeColon = exports.SpaceBeforeColonConf = void 0;\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass SpaceBeforeColonConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SpaceBeforeColonConf = SpaceBeforeColonConf;\nclass SpaceBeforeColon extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SpaceBeforeColonConf();\n }\n getMetadata() {\n return {\n key: \"space_before_colon\",\n title: \"Space before colon\",\n shortDescription: `Checks that there are no spaces in front of colons in chained statements.`,\n extendedInformation: `https://docs.abapopenchecks.org/checks/80/`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n badExample: `DATA : foo TYPE string.`,\n goodExample: `DATA: foo TYPE string.`,\n };\n }\n getMessage() {\n return \"Remove space before colon\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n let prev = file.getTokens()[0];\n for (const token of file.getTokens()) {\n if (token.getStr() === \":\" && !prev) {\n const issue = issue_1.Issue.atToken(file, token, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n else if (token.getStr() === \":\"\n && prev.getRow() === token.getRow()\n && prev.getCol() + prev.getStr().length < token.getCol()) {\n const start = new position_1.Position(token.getRow(), prev.getEnd().getCol());\n const end = new position_1.Position(token.getRow(), token.getStart().getCol());\n const fix = edit_helper_1.EditHelper.deleteRange(file, start, end);\n const issue = issue_1.Issue.atRowRange(file, start.getRow(), start.getCol(), end.getCol(), this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n prev = token;\n }\n return issues;\n }\n}\nexports.SpaceBeforeColon = SpaceBeforeColon;\n//# sourceMappingURL=space_before_colon.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/space_before_colon.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/space_before_dot.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/space_before_dot.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SpaceBeforeDot = exports.SpaceBeforeDotConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst tokens_1 = __webpack_require__(/*! ../abap/1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nclass SpaceBeforeDotConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n this.ignoreGlobalDefinition = true;\n this.ignoreExceptions = true;\n }\n}\nexports.SpaceBeforeDotConf = SpaceBeforeDotConf;\nclass SpaceBeforeDot extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SpaceBeforeDotConf();\n }\n getMetadata() {\n return {\n key: \"space_before_dot\",\n title: \"Space before dot\",\n shortDescription: `Checks for extra spaces before dots at the ends of statements`,\n extendedInformation: `\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#be-consistent\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#condense-your-code`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n badExample: `WRITE bar .`,\n goodExample: `WRITE bar.`,\n };\n }\n getMessage() {\n return \"Remove space before \\\",\\\" or \\\".\\\"\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n let prev = undefined;\n let startRow = 0;\n if (file.getStructure() === undefined) {\n // some parser error exists in file\n return [];\n }\n const ddic = new ddic_1.DDIC(this.reg);\n if (this.conf.ignoreGlobalDefinition) {\n const structure = file.getStructure();\n if (obj instanceof objects_1.Class && structure !== undefined) {\n const endclass = structure.findFirstStatement(Statements.EndClass);\n if (endclass !== undefined) {\n startRow = endclass.getFirstToken().getRow();\n }\n const definition = obj.getClassDefinition();\n if (definition !== undefined && this.conf.ignoreExceptions && ddic.isException(definition, obj)) {\n return [];\n }\n }\n else if (obj instanceof objects_1.Interface && structure !== undefined) {\n const endinterface = structure.findFirstStatement(Statements.EndInterface);\n if (endinterface !== undefined) {\n startRow = endinterface.getFirstToken().getRow();\n }\n }\n }\n for (const t of file.getTokens()) {\n if (t.getRow() < startRow) {\n continue;\n }\n if (prev !== undefined && t instanceof tokens_1.Punctuation && prev.getCol() + prev.getStr().length < t.getCol()) {\n const start = new position_1.Position(t.getStart().getRow(), prev.getEnd().getCol());\n const end = new position_1.Position(t.getStart().getRow(), t.getStart().getCol());\n const fix = edit_helper_1.EditHelper.deleteRange(file, start, end);\n const issue = issue_1.Issue.atRange(file, start, end, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n prev = t;\n }\n return issues;\n }\n}\nexports.SpaceBeforeDot = SpaceBeforeDot;\n//# sourceMappingURL=space_before_dot.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/space_before_dot.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/sql_escape_host_variables.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/sql_escape_host_variables.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLEscapeHostVariables = exports.SQLEscapeHostVariablesConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass SQLEscapeHostVariablesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SQLEscapeHostVariablesConf = SQLEscapeHostVariablesConf;\nclass SQLEscapeHostVariables extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SQLEscapeHostVariablesConf();\n }\n getMetadata() {\n return {\n key: \"sql_escape_host_variables\",\n title: \"Escape SQL host variables\",\n shortDescription: `Escape SQL host variables, from 740sp05`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-obsolete-language-elements`,\n tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.Syntax],\n badExample: `SELECT * FROM tab INTO TABLE res WHERE field = val.`,\n goodExample: `SELECT * FROM tab INTO TABLE @res WHERE field = @val.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n const type = obj.getType();\n if (type === \"INTF\" || type === \"TYPE\") {\n return [];\n }\n if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02\n && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {\n return [];\n }\n for (const s of file.getStatements()) {\n if (s.get() instanceof Statements.UpdateDatabase\n || s.get() instanceof Statements.ModifyDatabase\n || s.get() instanceof Statements.Select\n || s.get() instanceof Statements.SelectLoop\n || s.get() instanceof Statements.InsertDatabase\n || s.get() instanceof Statements.DeleteDatabase) {\n for (const o of s.findAllExpressionsMulti([Expressions.SQLSource, Expressions.SQLSourceSimple])) {\n const first = o.getFirstChild();\n if (((first === null || first === void 0 ? void 0 : first.get()) instanceof Expressions.Source && first.getChildren()[0].get() instanceof Expressions.FieldChain)\n || ((first === null || first === void 0 ? void 0 : first.get()) instanceof Expressions.SimpleSource3 && first.getChildren()[0].get() instanceof Expressions.FieldChain)) {\n const message = \"Escape SQL host variables\";\n const firstToken = o.getFirstChild().getFirstToken();\n const fix = edit_helper_1.EditHelper.replaceToken(file, firstToken, \"@\" + (firstToken === null || firstToken === void 0 ? void 0 : firstToken.getStr()));\n const issue = issue_1.Issue.atToken(file, first.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n break;\n }\n }\n for (const o of s.findAllExpressions(Expressions.SQLTarget)) {\n const escaped = o.findDirectTokenByText(\"@\");\n if (escaped !== undefined) {\n continue;\n }\n const message = \"Escape SQL host variables\";\n const firstToken = o.getFirstChild().getFirstToken();\n const fix = edit_helper_1.EditHelper.replaceToken(file, firstToken, \"@\" + (firstToken === null || firstToken === void 0 ? void 0 : firstToken.getStr()));\n const issue = issue_1.Issue.atToken(file, o.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n break;\n }\n }\n }\n return issues;\n }\n}\nexports.SQLEscapeHostVariables = SQLEscapeHostVariables;\n//# sourceMappingURL=sql_escape_host_variables.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/sql_escape_host_variables.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/sql_value_conversion.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/sql_value_conversion.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SQLValueConversion = exports.SQLValueConversionConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass SQLValueConversionConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SQLValueConversionConf = SQLValueConversionConf;\nclass SQLValueConversion {\n constructor() {\n this.conf = new SQLValueConversionConf();\n }\n getMetadata() {\n return {\n key: \"sql_value_conversion\",\n title: \"Implicit SQL Value Conversion\",\n shortDescription: `Ensure types match when selecting from database`,\n extendedInformation: `\r\n* Integer to CHAR conversion\r\n* Integer to NUMC conversion\r\n* NUMC to Integer conversion\r\n* CHAR to Integer conversion\r\n* Source field longer than database field, CHAR -> CHAR\r\n* Source field longer than database field, NUMC -> NUMC`,\n tags: [],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject) || obj instanceof objects_1.Interface) {\n return [];\n }\n // messages defined in sql_compare.ts\n const issues = this.traverse(new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop());\n return issues;\n }\n traverse(node) {\n const ret = [];\n for (const r of node.getData().sqlConversion) {\n const file = this.reg.getFileByName(node.getIdentifier().filename);\n if (file === undefined) {\n continue;\n }\n ret.push(issue_1.Issue.atToken(file, r.token, r.message, this.getMetadata().key, this.getConfig().severity));\n }\n for (const c of node.getChildren()) {\n ret.push(...this.traverse(c));\n }\n return ret;\n }\n}\nexports.SQLValueConversion = SQLValueConversion;\n//# sourceMappingURL=sql_value_conversion.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/sql_value_conversion.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/start_at_tab.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/start_at_tab.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StartAtTab = exports.StartAtTabConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass StartAtTabConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.StartAtTabConf = StartAtTabConf;\nclass StartAtTab extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new StartAtTabConf();\n }\n getMetadata() {\n return {\n key: \"start_at_tab\",\n title: \"Start at tab\",\n shortDescription: `Checks that statements start at tabstops.`,\n extendedInformation: `Reports max 100 issues per file\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#indent-and-snap-to-tab`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n badExample: ` WRITE a.`,\n goodExample: ` WRITE a.`,\n };\n }\n getMessage() {\n return \"Start statement at tab position\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n let inType = false;\n let previous = undefined;\n const raw = file.getRawRows();\n for (const statement of file.getStatements()) {\n if (statement.get() instanceof _statement_1.Comment) {\n continue;\n }\n else if (statement.get() instanceof statements_1.TypeBegin) {\n inType = true;\n }\n else if (statement.get() instanceof statements_1.TypeEnd) {\n inType = false;\n }\n else if (inType) {\n continue;\n }\n const pos = statement.getStart();\n if (previous !== undefined && pos.getRow() === previous.getRow()) {\n continue;\n }\n // just skip rows that contains tabs, this will be reported by the contains_tab rule\n if ((pos.getCol() - 1) % 2 !== 0 && raw[pos.getRow() - 1].includes(\"\\t\") === false) {\n const issue = issue_1.Issue.atPosition(file, pos, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n if (issues.length >= 100) {\n return issues; // only max 100 issues perfile\n }\n }\n previous = pos;\n }\n return issues;\n }\n}\nexports.StartAtTab = StartAtTab;\n//# sourceMappingURL=start_at_tab.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/start_at_tab.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StaticCallViaInstance = exports.StaticCallViaInstanceConf = void 0;\n/* eslint-disable max-len */\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nclass StaticCallViaInstanceConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Allow in test class includes */\n this.allowInTestclassIncludes = false;\n }\n}\nexports.StaticCallViaInstanceConf = StaticCallViaInstanceConf;\nclass StaticCallViaInstance extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new StaticCallViaInstanceConf();\n }\n getMetadata() {\n return {\n key: \"static_call_via_instance\",\n title: \"Static call via instance variable\",\n shortDescription: `Static method call via instance variable`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-call-static-methods-through-instance-variables`,\n tags: [_irule_1.RuleTag.Styleguide],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n if (this.getConfig().allowInTestclassIncludes === true && file.getFilename().includes(\".testclasses.\")) {\n return [];\n }\n const staticMethodCalls = this.listMethodCalls(file.getFilename(), new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop());\n const tokens = file.getTokens();\n for (let i = 0; i < tokens.length - 1; i++) {\n const token = tokens[i];\n if (token.getStr() !== \"->\") {\n continue;\n }\n const next = tokens[i + 1];\n for (const s of staticMethodCalls) {\n if (s.equals(next.getStart())) {\n const message = \"Avoid calling static method via instance\";\n issues.push(issue_1.Issue.atToken(file, token, message, this.getMetadata().key));\n break;\n }\n }\n }\n return issues;\n }\n listMethodCalls(filename, node) {\n const ret = [];\n for (const r of node.getData().references) {\n if (r.referenceType !== _reference_1.ReferenceType.MethodReference || r.position.getFilename() !== filename) {\n continue;\n }\n if (r.resolved instanceof types_1.MethodDefinition && r.resolved.isStatic() === true) {\n ret.push(r.position.getStart());\n }\n }\n for (const child of node.getChildren()) {\n ret.push(...this.listMethodCalls(filename, child));\n }\n return ret;\n }\n}\nexports.StaticCallViaInstance = StaticCallViaInstance;\n//# sourceMappingURL=static_call_via_instance.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/static_call_via_instance.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/strict_sql.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/strict_sql.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.StrictSQL = exports.StrictSQLConf = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass StrictSQLConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.StrictSQLConf = StrictSQLConf;\nclass StrictSQL extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new StrictSQLConf();\n }\n getMetadata() {\n return {\n key: \"strict_sql\",\n title: \"Strict SQL\",\n shortDescription: `Strict SQL`,\n extendedInformation: `https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapinto_clause.htm\r\n\r\nhttps://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abenopensql_strict_mode_750.htm\r\n\r\nAlso see separate rule sql_escape_host_variables\r\n\r\nActivates from v750 and up`,\n tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Quickfix],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n const type = obj.getType();\n if (type === \"INTF\" || type === \"TYPE\") {\n return [];\n }\n if (this.reg.getConfig().getVersion() < version_1.Version.v750\n && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {\n return [];\n }\n for (const s of file.getStatements()) {\n if (s.get() instanceof Statements.Select\n || s.get() instanceof Statements.SelectLoop) {\n const expr = s.findDirectExpression(Expressions.Select);\n const where = expr === null || expr === void 0 ? void 0 : expr.findDirectExpression(Expressions.SQLCond);\n const order = expr === null || expr === void 0 ? void 0 : expr.findDirectExpression(Expressions.SQLOrderBy);\n const into = (expr === null || expr === void 0 ? void 0 : expr.findDirectExpression(Expressions.SQLIntoStructure))\n || (expr === null || expr === void 0 ? void 0 : expr.findDirectExpression(Expressions.SQLIntoTable));\n if (into === undefined || where === undefined) {\n continue;\n }\n else if (where.getFirstToken().getStart().isBefore(into.getFirstToken().getStart())) {\n continue;\n }\n const fix1 = edit_helper_1.EditHelper.deleteRange(file, into.getFirstToken().getStart(), into.getLastToken().getEnd());\n let last = where.getLastToken();\n if (order && order.getLastToken().getEnd().isAfter(last.getEnd())) {\n last = order.getLastToken();\n }\n const fix2 = edit_helper_1.EditHelper.insertAt(file, last.getEnd(), \" \" + into.concatTokens());\n const fix = edit_helper_1.EditHelper.merge(fix2, fix1);\n const message = \"INTO/APPENDING must be last in strict SQL\";\n const issue = issue_1.Issue.atToken(file, s.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.StrictSQL = StrictSQL;\n//# sourceMappingURL=strict_sql.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/strict_sql.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/superclass_final.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/superclass_final.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SuperclassFinal = exports.SuperclassFinalConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass SuperclassFinalConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SuperclassFinalConf = SuperclassFinalConf;\nclass SuperclassFinal extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SuperclassFinalConf();\n }\n getMetadata() {\n return {\n key: \"superclass_final\",\n title: \"Super class final\",\n shortDescription: `Checks that classes which are inherited from are not declared as FINAL.`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getMessage() {\n return \"Superclasses cannot be FINAL\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const output = [];\n for (const definition of file.getInfo().listClassDefinitions()) {\n const sup = definition.superClassName;\n if (sup === undefined) {\n continue;\n }\n let localLookup = true;\n if (obj instanceof Objects.Class && file.getFilename().match(/\\.clas\\.abap$/)) {\n localLookup = false;\n }\n let found = undefined;\n if (localLookup) {\n for (const f of obj.getABAPFiles()) {\n found = f.getInfo().getClassDefinitionByName(sup);\n if (found !== undefined) {\n break;\n }\n }\n }\n if (found === undefined) {\n const clas = this.reg.getObject(\"CLAS\", sup);\n if (clas) {\n found = clas.getClassDefinition();\n }\n }\n if (found === undefined) {\n const message = \"Super class \\\"\" + sup + \"\\\" not found\";\n const issue = issue_1.Issue.atIdentifier(definition.identifier, message, this.getMetadata().key, this.conf.severity);\n output.push(issue);\n continue;\n }\n if (found.isFinal === true) {\n const issue = issue_1.Issue.atIdentifier(definition.identifier, this.getMessage(), this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n return output;\n }\n}\nexports.SuperclassFinal = SuperclassFinal;\n//# sourceMappingURL=superclass_final.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/superclass_final.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/superfluous_value.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/superfluous_value.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SuperfluousValue = exports.SuperfluousValueConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nclass SuperfluousValueConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SuperfluousValueConf = SuperfluousValueConf;\nclass SuperfluousValue extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SuperfluousValueConf();\n }\n getMetadata() {\n return {\n key: \"superfluous_value\",\n title: \"Superfluous VALUE\",\n shortDescription: `Find superfluous VALUE expressions`,\n extendedInformation: `Left hand side is inline, VALUE is inferred, value body is simple, from v740sp02 and up`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `DATA(message_entry) = VALUE #( message_table[ msgno = msgno ] ).`,\n goodExample: `DATA(message_entry) = message_table[ msgno = msgno ].`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a, _b;\n const output = [];\n if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02\n && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {\n return [];\n }\n const struc = file.getStructure();\n if (struc === undefined) {\n return []; // syntax error\n }\n for (const m of struc.findAllStatements(Statements.Move)) {\n if (((_a = m.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.InlineData)) === undefined) {\n continue;\n }\n const source = m.findDirectExpression(Expressions.Source);\n if (source === undefined) {\n continue;\n }\n const type = (_b = source.findDirectExpression(Expressions.TypeNameOrInfer)) === null || _b === void 0 ? void 0 : _b.concatTokens();\n if (type !== \"#\") {\n continue;\n }\n const body = source.findDirectExpression(Expressions.ValueBody);\n if (body === undefined) {\n continue;\n }\n if (body.getChildren().length === 1) {\n const message = \"Superfluous VALUE expression\";\n const issue = issue_1.Issue.atStatement(file, m, message, this.getMetadata().key, this.conf.severity);\n output.push(issue);\n }\n }\n return output;\n }\n}\nexports.SuperfluousValue = SuperfluousValue;\n//# sourceMappingURL=superfluous_value.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/superfluous_value.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/sy_modification.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/sy_modification.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SyModification = exports.SyModificationConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass SyModificationConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.SyModificationConf = SyModificationConf;\nclass SyModification extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new SyModificationConf();\n }\n getMetadata() {\n return {\n key: \"sy_modification\",\n title: \"Modification of SY fields\",\n shortDescription: `Finds modification of sy fields`,\n extendedInformation: `https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abensystem_fields.htm\r\n\r\nChanges to SY-TVAR* fields are not reported`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `sy-uname = 2.\r\nsy = sy.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n var _a;\n const issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n for (const t of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.Target)) || []) {\n const firstChild = t.getChildren()[0];\n if (firstChild.get() instanceof Expressions.TargetField\n && firstChild.getFirstToken().getStr().toUpperCase() === \"SY\") {\n if (t.concatTokens().toUpperCase().startsWith(\"SY-TVAR\")) {\n continue;\n }\n const message = \"Modification of SY field\";\n const issue = issue_1.Issue.atToken(file, firstChild.getFirstToken(), message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.SyModification = SyModification;\n//# sourceMappingURL=sy_modification.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/sy_modification.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/tabl_enhancement_category.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/tabl_enhancement_category.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TABLEnhancementCategory = exports.TABLEnhancementCategoryConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nclass TABLEnhancementCategoryConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.TABLEnhancementCategoryConf = TABLEnhancementCategoryConf;\nclass TABLEnhancementCategory {\n constructor() {\n this.conf = new TABLEnhancementCategoryConf();\n }\n getMetadata() {\n return {\n key: \"tabl_enhancement_category\",\n title: \"TABL enhancement category must be set\",\n shortDescription: `Checks that tables do not have the enhancement category 'not classified'.`,\n extendedInformation: `SAP note 3063227 changes the default to 'Cannot be enhanced'.\r\n\r\nYou may use standard report RS_DDIC_CLASSIFICATION_FINAL for adjustment.`,\n tags: [],\n };\n }\n getDescription(name) {\n return \"TABL enhancement category not classified in \" + name;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n if (!(obj instanceof objects_1.Table)) {\n return [];\n }\n if (obj.getEnhancementCategory() === objects_1.EnhancementCategory.NotClassified) {\n const position = new position_1.Position(1, 1);\n const issue = issue_1.Issue.atPosition(obj.getFiles()[0], position, this.getDescription(obj.getName()), this.getMetadata().key, this.conf.severity);\n return [issue];\n }\n return [];\n }\n}\nexports.TABLEnhancementCategory = TABLEnhancementCategory;\n//# sourceMappingURL=tabl_enhancement_category.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/tabl_enhancement_category.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/try_without_catch.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/try_without_catch.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TryWithoutCatch = exports.TryWithoutCatchConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst structures_1 = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass TryWithoutCatchConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.TryWithoutCatchConf = TryWithoutCatchConf;\nclass TryWithoutCatch extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new TryWithoutCatchConf();\n }\n getMetadata() {\n return {\n key: \"try_without_catch\",\n title: \"TRY without CATCH\",\n shortDescription: `Checks for TRY blocks without a CATCH and CLEANUP block`,\n badExample: `TRY.\\n WRITE 'hello world'.\\nENDTRY.`,\n tags: [_irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"A TRY block must have a corresponding CATCH or CLEANUP block.\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n const tries = stru.findAllStructures(structures_1.Try);\n for (const t of tries) {\n const clean = t.findDirectStructures(structures_1.Cleanup);\n const c = t.findDirectStructures(structures_1.Catch);\n if (c.length === 0 && clean.length === 0) {\n const issue = issue_1.Issue.atToken(file, t.getFirstToken(), this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.TryWithoutCatch = TryWithoutCatch;\n//# sourceMappingURL=try_without_catch.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/try_without_catch.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/type_form_parameters.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/type_form_parameters.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypeFormParameters = exports.TypeFormParametersConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass TypeFormParametersConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.TypeFormParametersConf = TypeFormParametersConf;\nclass TypeFormParameters extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new TypeFormParametersConf();\n }\n getMetadata() {\n return {\n key: \"type_form_parameters\",\n title: \"Type FORM parameters\",\n shortDescription: `Checks for untyped FORM parameters`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `FORM foo USING bar.\r\nENDFORM.`,\n goodExample: `FORM foo USING bar TYPE string.\r\nENDFORM.`,\n };\n }\n getDescription(parameterName) {\n return \"Add TYPE for FORM parameter \\\"\" + parameterName + \"\\\"\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const ret = [];\n const stru = file.getStructure();\n if (obj instanceof objects_1.Class || stru === undefined) {\n return ret;\n }\n for (const formparam of stru.findAllExpressions(Expressions.FormParam)) {\n if (formparam.findFirstExpression(Expressions.FormParamType) === undefined) {\n const token = formparam.getFirstToken();\n const issue = issue_1.Issue.atToken(file, token, this.getDescription(token.getStr()), this.getMetadata().key, this.conf.severity);\n ret.push(issue);\n }\n }\n return ret;\n }\n}\nexports.TypeFormParameters = TypeFormParameters;\n//# sourceMappingURL=type_form_parameters.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/type_form_parameters.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/types_naming.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/types_naming.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TypesNaming = exports.TypesNamingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nclass TypesNamingConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** The pattern for TYPES */\n this.pattern = \"^TY_.+$\";\n }\n}\nexports.TypesNamingConf = TypesNamingConf;\nclass TypesNaming extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new TypesNamingConf();\n }\n getMetadata() {\n return {\n key: \"types_naming\",\n title: \"TYPES naming conventions\",\n shortDescription: `Allows you to enforce a pattern for TYPES definitions`,\n extendedInformation: `Does not run for TYPE POOLS`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n const testRegex = new RegExp(this.conf.pattern, \"i\");\n let nesting = 0;\n if (obj instanceof objects_1.TypePool) {\n return [];\n }\n for (const stat of file.getStatements()) {\n let expr = undefined;\n if (stat.get() instanceof Statements.Type && nesting === 0) {\n expr = stat.findFirstExpression(Expressions.NamespaceSimpleName);\n }\n else if (stat.get() instanceof Statements.TypeBegin\n || stat.get() instanceof Statements.TypeEnumBegin) {\n if (nesting === 0) {\n expr = stat.findFirstExpression(Expressions.NamespaceSimpleName);\n }\n nesting = nesting + 1;\n }\n else if (stat.get() instanceof Statements.TypeEnd\n || stat.get() instanceof Statements.TypeEnumEnd) {\n nesting = nesting - 1;\n continue;\n }\n else {\n continue;\n }\n if (expr === undefined) {\n continue;\n }\n const token = expr.getFirstToken();\n if (testRegex.exec(token.getStr())) {\n continue;\n }\n else {\n const message = \"Bad TYPES naming, expected \\\"\" + this.conf.pattern + \"\\\", got \\\"\" + token.getStr() + \"\\\"\";\n const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.TypesNaming = TypesNaming;\n//# sourceMappingURL=types_naming.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/types_naming.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/uncaught_exception.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/uncaught_exception.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UncaughtException = exports.UncaughtExceptionConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst nodes_1 = __webpack_require__(/*! ../abap/nodes */ \"./node_modules/@abaplint/core/build/src/abap/nodes/index.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst ddic_1 = __webpack_require__(/*! ../ddic */ \"./node_modules/@abaplint/core/build/src/ddic.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst types_1 = __webpack_require__(/*! ../abap/types */ \"./node_modules/@abaplint/core/build/src/abap/types/index.js\");\nclass UncaughtExceptionConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UncaughtExceptionConf = UncaughtExceptionConf;\nclass UncaughtException extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UncaughtExceptionConf();\n this.issues = [];\n }\n getMetadata() {\n return {\n key: \"uncaught_exception\",\n title: \"Uncaught Exception\",\n shortDescription: `Checks for uncaught static exception`,\n extendedInformation: `Does not report any issues if the code contains syntax errors`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n initialize(reg) {\n super.initialize(reg);\n this.findGlobalExceptions();\n return this;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n if (obj.getType() === \"INTF\") { // nothing can be raised in interfaces\n return [];\n }\n if (obj instanceof objects_1.Program && obj.isInclude() === true) {\n return [];\n }\n const stru = file.getStructure();\n if (stru === undefined) {\n return [];\n }\n this.findLocalExceptions(obj);\n this.syntax = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (this.syntax.issues.length > 0) {\n return [];\n }\n this.issues = [];\n this.sinked = undefined;\n for (const c of stru.getChildren()) {\n this.traverse(c, file);\n }\n return this.issues;\n }\n traverse(n, file) {\n var _a;\n const get = n.get();\n if (get instanceof Structures.ClassDefinition\n || get instanceof Structures.Interface) {\n return; // to optimize performance\n }\n if (n instanceof nodes_1.StructureNode) {\n if (get instanceof Structures.Try) {\n // note that TRY-CATCH might be arbitrarily nested\n const previous = this.sinked ? this.sinked.slice() : undefined;\n this.addFromTryStructure(n);\n for (const c of n.getChildren()) {\n this.traverse(c, file);\n }\n this.sinked = previous;\n return;\n }\n else {\n for (const c of n.getChildren()) {\n this.traverse(c, file);\n }\n }\n }\n else if (n instanceof nodes_1.StatementNode) {\n if (get instanceof Statements.MethodImplementation) {\n this.setSinkedFromMethod(n, file);\n }\n else if (get instanceof Statements.EndMethod) {\n this.sinked = undefined; // back to top level\n }\n else if (get instanceof Statements.Form) {\n this.sinked = [];\n const raising = n.findDirectExpression(Expressions.FormRaising);\n for (const c of (raising === null || raising === void 0 ? void 0 : raising.findAllExpressions(Expressions.ClassName)) || []) {\n this.sinked.push(c.concatTokens().toUpperCase());\n }\n }\n else if (get instanceof Statements.EndForm) {\n this.sinked = undefined; // back to top level\n }\n else if (get instanceof Statements.Raise) {\n let name = undefined;\n const concat = n.concatTokens().toUpperCase();\n if (concat.startsWith(\"RAISE EXCEPTION TYPE \")) {\n name = (_a = n.findFirstExpression(Expressions.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr().toUpperCase();\n }\n this.check(name, n, file);\n }\n else if (get instanceof Statements.Perform) {\n // todo, PERFORM, or is this not statically checked?\n }\n else {\n this.checkForMethodCalls(n, file);\n }\n }\n }\n ////////////////////////////////\n check(name, n, file) {\n if (this.isSinked(name) === false) {\n const issue = issue_1.Issue.atStatement(file, n, \"Uncaught exception \" + name, this.getMetadata().key, this.getConfig().severity);\n this.issues.push(issue);\n }\n }\n checkForMethodCalls(n, file) {\n const start = n.getFirstToken().getStart();\n const end = n.getLastToken().getEnd();\n const scope = this.syntax.spaghetti.lookupPosition(start, file.getFilename());\n for (const r of (scope === null || scope === void 0 ? void 0 : scope.getData().references) || []) {\n if (r.referenceType === _reference_1.ReferenceType.MethodReference\n && r.position.getStart().isAfter(start)\n && r.position.getEnd().isBefore(end)\n && r.resolved instanceof types_1.MethodDefinition) {\n for (const name of r.resolved.getRaising()) {\n this.check(name, n, file);\n }\n }\n }\n }\n addFromTryStructure(s) {\n if (this.sinked === undefined) {\n return;\n }\n for (const structure of s.findDirectStructures(Structures.Catch)) {\n const c = structure.findDirectStatement(Statements.Catch);\n if (c === undefined) {\n continue;\n }\n for (const cn of c.findDirectExpressions(Expressions.ClassName)) {\n this.sinked.push(cn.concatTokens());\n }\n }\n }\n setSinkedFromMethod(s, file) {\n this.sinked = [];\n const scope = this.syntax.spaghetti.lookupPosition(s.getLastToken().getEnd(), file.getFilename());\n let def = undefined;\n for (const r of (scope === null || scope === void 0 ? void 0 : scope.getData().references) || []) {\n // there should be only one, so the first is okay\n if (r.referenceType === _reference_1.ReferenceType.MethodImplementationReference\n && r.resolved instanceof types_1.MethodDefinition) {\n def = r.resolved;\n break;\n }\n }\n if (def === undefined) {\n return; // this should not occur, so just report everything as errors\n }\n def.getRaising().forEach(r => { var _a; return (_a = this.sinked) === null || _a === void 0 ? void 0 : _a.push(r); });\n }\n isSinked(name) {\n if (this.sinked === undefined || name === undefined) {\n return true;\n }\n const sup = this.globalExceptions[name.toUpperCase()];\n if (sup === \"CX_DYNAMIC_CHECK\" || sup === \"CX_NO_CHECK\") {\n return true;\n }\n const lsup = this.localExceptions[name.toUpperCase()];\n if (lsup === \"CX_DYNAMIC_CHECK\" || lsup === \"CX_NO_CHECK\") {\n return true;\n }\n return this.sinked.some(a => a.toUpperCase() === name.toUpperCase())\n || (sup !== undefined && this.isSinked(sup) === true)\n || (lsup !== undefined && this.isSinked(lsup) === true);\n }\n findGlobalExceptions() {\n var _a, _b;\n this.globalExceptions = {};\n const ddic = new ddic_1.DDIC(this.reg);\n for (const o of this.reg.getObjects()) {\n if (!(o instanceof objects_1.Class)) {\n continue;\n }\n const def = (_a = o.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getInfo().getClassDefinitionByName(o.getName());\n if (def === undefined || ddic.isException(def, o) === false) {\n continue;\n }\n this.globalExceptions[o.getName().toUpperCase()] = (_b = def.superClassName) === null || _b === void 0 ? void 0 : _b.toUpperCase();\n }\n }\n findLocalExceptions(obj) {\n var _a;\n this.localExceptions = {};\n for (const file of obj.getABAPFiles()) {\n for (const def of file.getInfo().listClassDefinitions()) {\n if (def.isLocal === true && def.superClassName !== undefined) {\n this.localExceptions[def.name.toUpperCase()] = (_a = def.superClassName) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n }\n }\n }\n }\n}\nexports.UncaughtException = UncaughtException;\n//# sourceMappingURL=uncaught_exception.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/uncaught_exception.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unknown_types.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unknown_types.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnknownTypes = exports.UnknownTypesConf = void 0;\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst BasicTypes = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ \"./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst basic_1 = __webpack_require__(/*! ../abap/types/basic */ \"./node_modules/@abaplint/core/build/src/abap/types/basic/index.js\");\nclass UnknownTypesConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UnknownTypesConf = UnknownTypesConf;\nclass UnknownTypes {\n constructor() {\n this.conf = new UnknownTypesConf();\n }\n getMetadata() {\n return {\n key: \"unknown_types\",\n title: \"Unknown types\",\n shortDescription: `Enables check for unknown data types, respects errorNamespace`,\n tags: [_irule_1.RuleTag.Syntax],\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n const spaghetti = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti;\n const found = this.traverse(spaghetti.getTop());\n return this.removeDuplicates(found);\n }\n /////////////////////\n removeDuplicates(list) {\n const deduplicated = [];\n for (const result of list) {\n let cont = false;\n for (const d of deduplicated) {\n if (result.getStart().equals(d.getStart())) {\n cont = true;\n break;\n }\n }\n if (cont === true) {\n continue;\n }\n deduplicated.push(result);\n }\n return deduplicated;\n }\n traverse(node) {\n var _a;\n const ret = [];\n const nodeData = node.getData();\n for (const r of nodeData.references) {\n if (r.referenceType === _reference_1.ReferenceType.ObjectOrientedUnknownReference && ((_a = r.extra) === null || _a === void 0 ? void 0 : _a.ooName)) {\n const message = r.extra.ooName + \" unknown\";\n ret.push(issue_1.Issue.atIdentifier(r.position, message, this.getMetadata().key, this.conf.severity));\n }\n if (r.referenceType === _reference_1.ReferenceType.TypeReference\n && r.resolved instanceof _typed_identifier_1.TypedIdentifier\n && r.resolved.getType() instanceof basic_1.UnknownType) {\n const message = r.resolved.getType().getError();\n ret.push(issue_1.Issue.atIdentifier(r.position, message, this.getMetadata().key, this.conf.severity));\n }\n }\n if (node.getIdentifier().stype !== _scope_type_1.ScopeType.ClassImplementation) {\n const vars = nodeData.vars;\n for (const name in vars) {\n const identifier = vars[name];\n const found = this.containsUnknown(identifier.getType());\n if (found) {\n const message = \"Variable \\\"\" + name + \"\\\" contains unknown: \" + found;\n ret.push(issue_1.Issue.atIdentifier(identifier, message, this.getMetadata().key, this.conf.severity));\n }\n }\n const types = nodeData.types;\n for (const name in types) {\n const identifier = types[name];\n const found = this.containsUnknown(identifier.getType());\n if (found) {\n const message = \"Type \\\"\" + name + \"\\\" contains unknown: \" + found;\n ret.push(issue_1.Issue.atIdentifier(identifier, message, this.getMetadata().key, this.conf.severity));\n }\n }\n }\n for (const v of nodeData.idefs) {\n const found = this.checkParameters(v);\n if (found) {\n const message = \"Contains unknown, \" + found.found;\n ret.push(issue_1.Issue.atIdentifier(found.id, message, this.getMetadata().key, this.conf.severity));\n }\n }\n for (const name in nodeData.cdefs) {\n const v = nodeData.cdefs[name];\n const found = this.checkParameters(v);\n if (found) {\n const message = \"Contains unknown, \" + found.found;\n ret.push(issue_1.Issue.atIdentifier(found.id, message, this.getMetadata().key, this.conf.severity));\n }\n }\n for (const n of node.getChildren()) {\n ret.push(...this.traverse(n));\n }\n return ret;\n }\n checkParameters(idef) {\n var _a;\n for (const m of ((_a = idef.getMethodDefinitions()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {\n for (const p of m.getParameters().getAll()) {\n const found = this.containsUnknown(p.getType());\n if (found) {\n return { id: p, found };\n }\n }\n }\n for (const e of idef.getEvents() || []) {\n for (const p of e.getParameters()) {\n const found = this.containsUnknown(p.getType());\n if (found) {\n return { id: p, found };\n }\n }\n }\n return undefined;\n }\n containsUnknown(type) {\n if (type instanceof BasicTypes.UnknownType) {\n return type.getError();\n }\n else if (type instanceof BasicTypes.StructureType) {\n for (const c of type.getComponents()) {\n const found = this.containsUnknown(c.type instanceof _typed_identifier_1.TypedIdentifier ? c.type.getType() : c.type);\n if (found) {\n return found;\n }\n }\n }\n else if (type instanceof BasicTypes.TableType) {\n return this.containsUnknown(type.getRowType());\n }\n return undefined;\n }\n}\nexports.UnknownTypes = UnknownTypes;\n//# sourceMappingURL=unknown_types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unknown_types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unnecessary_chaining.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unnecessary_chaining.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnnecessaryChaining = exports.UnnecessaryChainingConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass UnnecessaryChainingConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UnnecessaryChainingConf = UnnecessaryChainingConf;\nclass UnnecessaryChaining extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UnnecessaryChainingConf();\n }\n getMetadata() {\n return {\n key: \"unnecessary_chaining\",\n title: \"Unnecessary Chaining\",\n shortDescription: `Find unnecessary chaining, all statements are checked`,\n extendedInformation: ``,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n badExample: `WRITE: bar.`,\n goodExample: `WRITE bar.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const statements = file.getStatements();\n for (let i = 0; i < statements.length; i++) {\n const colon = statements[i].getColon();\n if (colon === undefined) {\n continue;\n }\n let j = 1;\n let nextStatement = statements[i + j];\n while ((nextStatement === null || nextStatement === void 0 ? void 0 : nextStatement.get()) instanceof _statement_1.Comment) {\n j++;\n nextStatement = statements[i + j];\n }\n j = 1;\n let prevStatement = statements[i - j];\n while ((prevStatement === null || prevStatement === void 0 ? void 0 : prevStatement.get()) instanceof _statement_1.Comment) {\n j--;\n prevStatement = statements[i - j];\n }\n const next = nextStatement === null || nextStatement === void 0 ? void 0 : nextStatement.getColon();\n const prev = prevStatement === null || prevStatement === void 0 ? void 0 : prevStatement.getColon();\n if (next !== undefined && colon.getStart().equals(next.getStart())) {\n continue;\n }\n else if (prev !== undefined && colon.getStart().equals(prev.getStart())) {\n continue;\n }\n const fix = edit_helper_1.EditHelper.deleteRange(file, colon.getStart(), colon.getEnd());\n const message = \"Unnecessary chaining\";\n const issue = issue_1.Issue.atToken(file, colon, message, this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n return issues;\n }\n}\nexports.UnnecessaryChaining = UnnecessaryChaining;\n//# sourceMappingURL=unnecessary_chaining.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unnecessary_chaining.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unnecessary_pragma.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unnecessary_pragma.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnnecessaryPragma = exports.UnnecessaryPragmaConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass UnnecessaryPragmaConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** Allow NO_TEXT in global CLAS and INTF definitions,\n its added automatically by SE24 in some cases where it should not */\n this.allowNoTextGlobal = false;\n }\n}\nexports.UnnecessaryPragmaConf = UnnecessaryPragmaConf;\nclass UnnecessaryPragma extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UnnecessaryPragmaConf();\n }\n getMetadata() {\n return {\n key: \"unnecessary_pragma\",\n title: \"Unnecessary Pragma\",\n shortDescription: `Finds pragmas which can be removed`,\n extendedInformation: `* NO_HANDLER with handler\r\n\r\n* NEEDED without definition\r\n\r\n* NO_TEXT without texts\r\n\r\n* SUBRC_OK where sy-subrc is checked\r\n\r\nNO_HANDLER inside macros are not checked`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `TRY.\r\n ...\r\n CATCH zcx_abapgit_exception ##NO_HANDLER.\r\n RETURN. \" it has a handler\r\nENDTRY.\r\nMESSAGE w125(zbar) WITH c_foo INTO message ##NEEDED ##NO_TEXT.\r\nSELECT SINGLE * FROM tadir INTO @DATA(sdfs) ##SUBRC_OK.\r\nIF sy-subrc <> 0.\r\nENDIF.`,\n goodExample: `TRY.\r\n ...\r\n CATCH zcx_abapgit_exception.\r\n RETURN.\r\nENDTRY.\r\nMESSAGE w125(zbar) WITH c_foo INTO message.\r\nSELECT SINGLE * FROM tadir INTO @DATA(sdfs).\r\nIF sy-subrc <> 0.\r\nENDIF.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n let noHandler = false;\n let globalDefinition = false;\n const statements = file.getStatements();\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i];\n const nextStatement = statements[i + 1];\n if (statement.get() instanceof Statements.EndTry) {\n noHandler = false;\n }\n else if (statement.get() instanceof Statements.ClassDefinition\n || statement.get() instanceof Statements.Interface) {\n if (statement.findDirectExpression(Expressions.ClassGlobal)) {\n globalDefinition = true;\n }\n }\n else if (statement.get() instanceof Statements.EndClass\n || statement.get() instanceof Statements.EndInterface) {\n globalDefinition = false;\n }\n else if (statement.get() instanceof _statement_1.Comment) {\n continue;\n }\n else if (noHandler === true && !(statement.get() instanceof Statements.Catch)) {\n const message = \"NO_HANDLER pragma or pseudo comment can be removed\";\n const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n noHandler = false;\n }\n else {\n noHandler = this.containsNoHandler(statement, statements[i + 1]);\n }\n if (this.getConfig().allowNoTextGlobal === true && globalDefinition === true) {\n // skip\n }\n else {\n issues.push(...this.checkText(statement, file));\n }\n issues.push(...this.checkNeeded(statement, file));\n if (globalDefinition === false) {\n issues.push(...this.checkSubrc(statement, nextStatement, file));\n }\n }\n return issues;\n }\n checkText(statement, file) {\n const p = statement.getPragmas().find(t => t.getStr().toUpperCase() === \"##NO_TEXT\");\n if (p === undefined) {\n return [];\n }\n if (statement.findFirstExpression(Expressions.ConstantString) === undefined\n && statement.findFirstExpression(Expressions.StringTemplate) === undefined) {\n const message = \"There is no text, NO_TEXT can be removed\";\n return [issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.getConfig().severity)];\n }\n return [];\n }\n checkSubrc(statement, next, file) {\n const p = statement.getPragmas().find(t => t.getStr().toUpperCase() === \"##SUBRC_OK\");\n if (p === undefined) {\n return [];\n }\n const concat = next.concatTokens().toUpperCase();\n if (concat.includes(\" SY-SUBRC\")) {\n const message = \"SUBRC_OK can be removed as sy-subrc is checked\";\n return [issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.getConfig().severity)];\n }\n return [];\n }\n checkNeeded(statement, file) {\n const p = statement.getPragmas().find(t => t.getStr().toUpperCase() === \"##NEEDED\");\n if (p === undefined) {\n return [];\n }\n if (statement.findFirstExpression(Expressions.InlineData) === undefined\n && !(statement.get() instanceof Statements.Parameter)\n && !(statement.get() instanceof Statements.Data)\n && !(statement.get() instanceof Statements.DataEnd)\n && !(statement.get() instanceof Statements.Type)\n && !(statement.get() instanceof Statements.Form)\n && !(statement.get() instanceof Statements.Tables)\n && !(statement.get() instanceof Statements.TypeEnd)\n && !(statement.get() instanceof Statements.Constant)\n && !(statement.get() instanceof Statements.ConstantEnd)\n && !(statement.get() instanceof Statements.TypeEnum)\n && !(statement.get() instanceof Statements.TypeEnumEnd)\n && !(statement.get() instanceof Statements.MethodImplementation)\n && !(statement.get() instanceof Statements.MethodDef)\n && statement.findFirstExpression(Expressions.InlineFS) === undefined) {\n const message = \"There is no data definition, NEEDED can be removed\";\n return [issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.getConfig().severity)];\n }\n return [];\n }\n containsNoHandler(statement, next) {\n for (const t of statement.getPragmas()) {\n if (t.getStr().toUpperCase() === \"##NO_HANDLER\") {\n return true;\n }\n }\n if (next\n && next.get() instanceof _statement_1.Comment\n && !(statement.get() instanceof _statement_1.MacroContent)\n && next.concatTokens().toUpperCase().includes(\"#EC NO_HANDLER\")) {\n return true;\n }\n return false;\n }\n}\nexports.UnnecessaryPragma = UnnecessaryPragma;\n//# sourceMappingURL=unnecessary_pragma.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unnecessary_pragma.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unnecessary_return.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unnecessary_return.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnnecessaryReturn = exports.UnnecessaryReturnConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass UnnecessaryReturnConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UnnecessaryReturnConf = UnnecessaryReturnConf;\nclass UnnecessaryReturn extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UnnecessaryReturnConf();\n }\n getMetadata() {\n return {\n key: \"unnecessary_return\",\n title: \"Unnecessary Return\",\n shortDescription: `Finds unnecessary RETURN statements`,\n extendedInformation: `Finds unnecessary RETURN statements`,\n tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],\n badExample: `FORM hello1.\r\n WRITE 'world'.\r\n RETURN.\r\nENDFORM.\r\n\r\nFORM foo.\r\n IF 1 = 2.\r\n RETURN.\r\n ENDIF.\r\nENDFORM.`,\n goodExample: `FORM hello2.\r\n WRITE 'world'.\r\nENDFORM.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const structure = file.getStructure();\n if (structure === undefined) {\n return [];\n }\n const message = \"Unnecessary RETURN\";\n const statements = file.getStatements();\n for (let i = 0; i < statements.length; i++) {\n const node = statements[i];\n if (!(node.get() instanceof Statements.EndMethod\n || node.get() instanceof Statements.EndForm\n || node.get() instanceof Statements.EndFunction)) {\n continue;\n }\n const prev = statements[i - 1];\n if (prev && prev.get() instanceof Statements.Return) {\n const fix = edit_helper_1.EditHelper.deleteStatement(file, prev);\n issues.push(issue_1.Issue.atStatement(file, prev, message, this.getMetadata().key, this.getConfig().severity, fix));\n }\n // note: ENDTRY is not checked, it will usually just make it an empty catch handler, which is also bad\n const prevprev = statements[i - 2];\n if (prev && prevprev\n && prevprev.get() instanceof Statements.Return\n && prev.get() instanceof Statements.EndIf) {\n const fix = edit_helper_1.EditHelper.deleteStatement(file, prevprev);\n issues.push(issue_1.Issue.atStatement(file, prevprev, message, this.getMetadata().key, this.getConfig().severity, fix));\n }\n }\n return issues;\n }\n}\nexports.UnnecessaryReturn = UnnecessaryReturn;\n//# sourceMappingURL=unnecessary_return.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unnecessary_return.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unreachable_code.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unreachable_code.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnreachableCode = exports.UnreachableCodeConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass UnreachableCodeConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UnreachableCodeConf = UnreachableCodeConf;\nclass UnreachableCode extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UnreachableCodeConf();\n }\n getMetadata() {\n return {\n key: \"unreachable_code\",\n title: \"Unreachable code\",\n shortDescription: `Checks for unreachable code.`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `RETURN.\\nWRITE 'hello'.`,\n goodExample: `WRITE 'hello'.\\nRETURN.`,\n };\n }\n getMessage() {\n return \"Unreachable code\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const output = [];\n let exit = false;\n for (const node of file.getStatements()) {\n if (node.get() instanceof _statement_1.Comment\n || node.get() instanceof _statement_1.MacroContent\n || node.get() instanceof _statement_1.Empty) {\n continue;\n }\n else if (this.isExit(node)) {\n exit = true;\n continue;\n }\n else if (this.isStructure(node.get())) {\n exit = false;\n continue;\n }\n if (exit === true) {\n const issue = issue_1.Issue.atStatement(file, node, this.getMessage(), this.getMetadata().key, this.conf.severity);\n output.push(issue);\n exit = false;\n }\n }\n return output;\n }\n isExit(n) {\n const s = n.get();\n // todo, RESUMABLE exception\n if (s instanceof Statements.Submit && n.findFirstExpression(Expressions.AndReturn) === undefined) {\n return true;\n }\n else if (s instanceof Statements.Leave && n.findFirstExpression(Expressions.AndReturn) === undefined) {\n const concat = n.concatTokens();\n if (concat.includes(\" TO LIST-PROCESSING\")) {\n return false;\n }\n return true;\n }\n else if (s instanceof Statements.Return\n || s instanceof Statements.Continue\n || s instanceof Statements.Exit\n || s instanceof Statements.Raise) {\n return true;\n }\n return false;\n }\n isStructure(s) {\n if (s instanceof Statements.EndIf\n || s instanceof Statements.Else\n || s instanceof Statements.EndLoop\n || s instanceof Statements.EndTry\n || s instanceof Statements.EndMethod\n || s instanceof Statements.EndModule\n || s instanceof Statements.EndForm\n || s instanceof Statements.EndAt\n || s instanceof Statements.EndSelect\n || s instanceof Statements.AtSelectionScreen\n || s instanceof Statements.EndFunction\n || s instanceof Statements.EndCase\n || s instanceof Statements.EndWhile\n || s instanceof Statements.EndDo\n || s instanceof Statements.Cleanup\n || s instanceof Statements.When\n || s instanceof Statements.WhenOthers\n || s instanceof Statements.WhenType\n || s instanceof Statements.Catch\n || s instanceof Statements.ElseIf) {\n return true;\n }\n return false;\n }\n}\nexports.UnreachableCode = UnreachableCode;\n//# sourceMappingURL=unreachable_code.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unreachable_code.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unsecure_fae.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unsecure_fae.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnsecureFAE = exports.UnsecureFAEConf = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nclass UnsecureFAEConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UnsecureFAEConf = UnsecureFAEConf;\nclass UnsecureFAE {\n constructor() {\n this.conf = new UnsecureFAEConf();\n }\n getMetadata() {\n return {\n key: \"unsecure_fae\",\n title: \"Unsecure FAE\",\n shortDescription: `Checks for unsecure FAE`,\n extendedInformation: `Issues from rule check_syntax must be fixed before this rule takes effect`,\n tags: [_irule_1.RuleTag.Experimental, _irule_1.RuleTag.Performance],\n };\n }\n getConfig() {\n return this.conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n var _a;\n const issues = [];\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return issues;\n }\n const syntaxResult = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (syntaxResult.issues.length > 0) {\n return issues;\n }\n for (const f of obj.getABAPFiles()) {\n // todo\n for (const e of ((_a = f.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(Expressions.SQLForAllEntries)) || []) {\n const token = e.getFirstToken();\n const message = \"Unsecure FAE\";\n issues.push(issue_1.Issue.atToken(f, token, message, this.getMetadata().key, this.getConfig().severity));\n }\n }\n return issues;\n }\n}\nexports.UnsecureFAE = UnsecureFAE;\n//# sourceMappingURL=unsecure_fae.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unsecure_fae.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unused_ddic.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unused_ddic.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnusedDDIC = exports.UnusedDDICConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nclass UnusedDDICConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UnusedDDICConf = UnusedDDICConf;\nclass UnusedDDIC {\n constructor() {\n this.conf = new UnusedDDICConf();\n }\n getMetadata() {\n return {\n key: \"unused_ddic\",\n title: \"Unused DDIC\",\n shortDescription: `Checks the usage of DDIC objects`,\n extendedInformation: `Objects checked: DOMA + DTEL + TABL + TTYP + VIEW`,\n tags: [],\n };\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n run(obj) {\n if (obj instanceof Objects.Domain\n || obj instanceof Objects.TableType\n || obj instanceof Objects.View\n || obj instanceof Objects.Table\n || obj instanceof Objects.DataElement) {\n return this.check(obj);\n }\n return [];\n }\n check(obj) {\n const id = obj.getIdentifier();\n const refs = this.reg.getDDICReferences();\n const list = refs.listWhereUsed(obj);\n if (id && list.length === 0) {\n const message = obj.getType() + \" \" + obj.getName() + \" not statically referenced\";\n return [issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.conf.severity)];\n }\n return [];\n }\n}\nexports.UnusedDDIC = UnusedDDIC;\n//# sourceMappingURL=unused_ddic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unused_ddic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unused_methods.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unused_methods.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnusedMethods = exports.UnusedMethodsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst visibility_1 = __webpack_require__(/*! ../abap/4_file_information/visibility */ \"./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass UnusedMethodsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UnusedMethodsConf = UnusedMethodsConf;\nclass WorkArea {\n constructor() {\n this.list = [];\n this.list = [];\n }\n push(id) {\n this.list.push(id);\n }\n removeIfExists(id) {\n for (let i = 0; i < this.list.length; i++) {\n if (id.equals(this.list[i].identifier)) {\n this.list.splice(i, 1);\n return;\n }\n }\n }\n containsProteted() {\n for (const m of this.list) {\n if (m.visibility === visibility_1.Visibility.Protected) {\n return true;\n }\n }\n return false;\n }\n getLength() {\n return this.list.length;\n }\n get() {\n return this.list;\n }\n}\n// todo: add possibility to also search public methods\n// todo: for protected methods, also search subclasses\nclass UnusedMethods {\n constructor() {\n this.conf = new UnusedMethodsConf();\n }\n getMetadata() {\n return {\n key: \"unused_methods\",\n title: \"Unused methods\",\n shortDescription: `Checks for unused methods`,\n extendedInformation: `Checks private and protected methods.\r\n\r\nUnused methods are not reported if the object contains parser or syntax errors.\r\n\r\nSkips:\r\n* methods FOR TESTING\r\n* methods SETUP + TEARDOWN + CLASS_SETUP + CLASS_TEARDOWN in testclasses\r\n* class_constructor + constructor methods\r\n* event handlers\r\n* methods that are redefined\r\n* INCLUDEs\r\n`,\n tags: [],\n pragma: \"##CALLED\",\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n else if (obj instanceof objects_1.Interface) { // todo, how to handle interfaces?\n return [];\n }\n else if (obj instanceof objects_1.Program && obj.isInclude() === true) {\n return [];\n }\n for (const file of obj.getABAPFiles()) {\n for (const statement of file.getStatements()) {\n if (statement.get() instanceof _statement_1.Unknown) {\n return []; // contains parser errors\n }\n }\n }\n // dont report anything when there are syntax errors\n const syntax = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (syntax.issues.length > 0) {\n return [];\n }\n this.wa = new WorkArea();\n for (const file of obj.getABAPFiles()) {\n for (const def of file.getInfo().listClassDefinitions()) {\n for (const method of def.methods) {\n if (method.isForTesting === true\n || method.isRedefinition === true\n || method.isEventHandler === true) {\n continue;\n }\n else if (def.isForTesting === true\n && (method.name.toUpperCase() === \"SETUP\"\n || method.name.toUpperCase() === \"CLASS_SETUP\"\n || method.name.toUpperCase() === \"TEARDOWN\"\n || method.name.toUpperCase() === \"CLASS_TEARDOWN\")) {\n continue;\n }\n else if (method.name.toUpperCase() === \"CONSTRUCTOR\"\n || method.name.toUpperCase() === \"CLASS_CONSTRUCTOR\") {\n continue;\n }\n if (method.visibility === visibility_1.Visibility.Private\n || method.visibility === visibility_1.Visibility.Protected) {\n this.wa.push(method);\n }\n }\n }\n }\n this.traverse(syntax.spaghetti.getTop());\n this.searchGlobalSubclasses(obj);\n const issues = [];\n for (const i of this.wa.get()) {\n const file = obj.getABAPFileByName(i.identifier.getFilename());\n if (file === undefined) {\n continue;\n }\n const statement = edit_helper_1.EditHelper.findStatement(i.identifier.getToken(), file);\n if (statement === undefined) {\n continue;\n }\n if (statement.getPragmas().some(t => t.getStr() === this.getMetadata().pragma)) {\n continue;\n }\n const message = \"Method \\\"\" + i.identifier.getName() + \"\\\" not used\";\n issues.push(issue_1.Issue.atIdentifier(i.identifier, message, this.getMetadata().key, this.conf.severity));\n }\n return issues;\n }\n searchGlobalSubclasses(obj) {\n var _a, _b;\n if (this.wa.getLength() === 0\n || !(obj instanceof objects_1.Class)\n || this.wa.containsProteted() === false) {\n return;\n }\n const sup = obj.getDefinition();\n if (sup === undefined) {\n return;\n }\n for (const r of this.reg.getObjects()) {\n if (r instanceof objects_1.Class\n && ((_b = (_a = r.getDefinition()) === null || _a === void 0 ? void 0 : _a.getSuperClass()) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === sup.getName().toUpperCase()) {\n const syntax = new syntax_1.SyntaxLogic(this.reg, r).run();\n this.traverse(syntax.spaghetti.getTop());\n // recurse to sub-sub-* classes\n this.searchGlobalSubclasses(r);\n }\n }\n }\n traverse(node) {\n if (node.getIdentifier().stype !== _scope_type_1.ScopeType.BuiltIn) {\n this.checkNode(node);\n }\n for (const c of node.getChildren()) {\n this.traverse(c);\n }\n }\n checkNode(node) {\n for (const v of node.getData().references) {\n if (v.referenceType === _reference_1.ReferenceType.MethodReference && v.resolved) {\n this.wa.removeIfExists(v.resolved);\n }\n }\n }\n}\nexports.UnusedMethods = UnusedMethods;\n//# sourceMappingURL=unused_methods.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unused_methods.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unused_types.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unused_types.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnusedTypes = exports.UnusedTypesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass WorkArea {\n constructor() {\n this.workarea = [];\n }\n push(id) {\n for (const w of this.workarea) {\n if (id.equals(w)) {\n return;\n }\n }\n this.workarea.push(id);\n }\n removeIfExists(id) {\n for (let i = 0; i < this.workarea.length; i++) {\n if (id.equals(this.workarea[i])) {\n this.workarea.splice(i, 1);\n return;\n }\n }\n }\n get() {\n return this.workarea;\n }\n count() {\n return this.workarea.length;\n }\n}\nclass UnusedTypesConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** skip specific names, case insensitive\n * @uniqueItems true\n */\n this.skipNames = [];\n }\n}\nexports.UnusedTypesConf = UnusedTypesConf;\nclass UnusedTypes {\n constructor() {\n this.conf = new UnusedTypesConf();\n }\n getMetadata() {\n return {\n key: \"unused_types\",\n title: \"Unused types\",\n shortDescription: `Checks for unused TYPE definitions`,\n extendedInformation: `Unused types are not reported if the object contains parser or syntax errors.`,\n tags: [_irule_1.RuleTag.Quickfix],\n pragma: \"##NEEDED\",\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.skipNames === undefined) {\n this.conf.skipNames = [];\n }\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n for (const file of obj.getABAPFiles()) {\n for (const statement of file.getStatements()) {\n if (statement.get() instanceof _statement_1.Unknown) {\n return []; // contains parser errors\n }\n }\n }\n // dont report unused variables when there are syntax errors\n const syntax = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (syntax.issues.length > 0) {\n return [];\n }\n this.workarea = new WorkArea();\n this.traverse(syntax.spaghetti.getTop(), obj, true);\n this.traverse(syntax.spaghetti.getTop(), obj, false);\n if (this.workarea.count() === 0) {\n return []; // exit early if all types are used in the current object\n }\n for (const o of this.reg.getObjects()) {\n if (o === obj) {\n continue;\n }\n else if (o instanceof _abap_object_1.ABAPObject) {\n if (this.reg.isDependency(o)) {\n continue; // do not search in dependencies\n }\n const syntax = new syntax_1.SyntaxLogic(this.reg, o).run();\n this.traverse(syntax.spaghetti.getTop(), o, false);\n }\n if (this.workarea.count() === 0) {\n return []; // exit early if all types are used\n }\n }\n // what is left is unused\n const ret = [];\n for (const t of this.workarea.get()) {\n const message = \"Type \\\"\" + t.getName() + \"\\\" not used\";\n const file = obj.getABAPFileByName(t.getFilename());\n if (file === undefined) {\n continue;\n }\n const statement = edit_helper_1.EditHelper.findStatement(t.getToken(), file);\n if (statement === undefined) {\n continue;\n }\n if (statement.getPragmas().some(t => t.getStr() === this.getMetadata().pragma)) {\n continue;\n }\n const fix = this.buildFix(file, statement);\n ret.push(issue_1.Issue.atIdentifier(t, message, this.getMetadata().key, this.conf.severity, fix));\n }\n return ret;\n }\n ////////////////////////////\n traverse(node, obj, add) {\n if (node.getIdentifier().stype !== _scope_type_1.ScopeType.BuiltIn) {\n this.checkNode(node, obj, add);\n }\n for (const c of node.getChildren()) {\n this.traverse(c, obj, add);\n }\n }\n checkNode(node, obj, add) {\n const ret = [];\n if (add === true) {\n const types = node.getData().types;\n for (const name in types) {\n const identifier = types[name];\n if (obj.containsFile(identifier.getFilename()) === false) {\n continue;\n }\n else if (this.conf.skipNames\n && this.conf.skipNames.length > 0\n && this.conf.skipNames.some((a) => a.toUpperCase() === name)) {\n continue;\n }\n else if (name !== identifier.getName().toUpperCase()) {\n continue; // may have aliases via interfaces\n }\n this.workarea.push(identifier);\n }\n }\n for (const r of node.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.TypeReference && r.resolved) {\n this.workarea.removeIfExists(r.resolved);\n }\n }\n return ret;\n }\n buildFix(file, statement) {\n if (statement.concatTokens().toUpperCase().includes(\"BEGIN OF\")) {\n return undefined;\n }\n return edit_helper_1.EditHelper.deleteStatement(file, statement);\n }\n}\nexports.UnusedTypes = UnusedTypes;\n//# sourceMappingURL=unused_types.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unused_types.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/unused_variables.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/unused_variables.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnusedVariables = exports.UnusedVariablesConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\nclass UnusedVariablesConf extends _basic_rule_config_1.BasicRuleConfig {\n constructor() {\n super(...arguments);\n /** skip specific names, case insensitive\n * @uniqueItems true\n */\n this.skipNames = [];\n }\n}\nexports.UnusedVariablesConf = UnusedVariablesConf;\nclass WorkArea {\n constructor() {\n this.workarea = [];\n }\n push(id, count = 1) {\n for (const w of this.workarea) {\n if (id.equals(w.id)) {\n return;\n }\n }\n this.workarea.push({ id, count });\n }\n removeIfExists(id) {\n if (id === undefined) {\n return;\n }\n for (let i = 0; i < this.workarea.length; i++) {\n if (id.equals(this.workarea[i].id)) {\n this.workarea[i].count--;\n if (this.workarea[i].count === 0) {\n this.workarea.splice(i, 1);\n }\n return;\n }\n }\n }\n get() {\n return this.workarea;\n }\n count() {\n return this.workarea.length;\n }\n}\nclass UnusedVariables {\n constructor() {\n this.conf = new UnusedVariablesConf();\n }\n getMetadata() {\n return {\n key: \"unused_variables\",\n title: \"Unused variables\",\n shortDescription: `Checks for unused variables and constants`,\n extendedInformation: `Skips event parameters.\r\n\r\nNote that this currently does not work if the source code uses macros.\r\n\r\nUnused variables are not reported if the object contains parser or syntax errors.\r\n\r\nErrors found in INCLUDES are reported for the main program.`,\n tags: [_irule_1.RuleTag.Quickfix],\n pragma: \"##NEEDED\",\n pseudoComment: \"EC NEEDED\",\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n if (this.conf.skipNames === undefined) {\n this.conf.skipNames = [];\n }\n }\n initialize(reg) {\n this.reg = reg;\n return this;\n }\n run(obj) {\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n else if (obj instanceof objects_1.Interface) { // todo, how to handle interfaces?\n return [];\n }\n for (const file of obj.getABAPFiles()) {\n for (const statement of file.getStatements()) {\n if (statement.get() instanceof _statement_1.Unknown) {\n return []; // contains parser errors\n }\n }\n }\n // dont report unused variables when there are syntax errors\n const syntax = new syntax_1.SyntaxLogic(this.reg, obj).run();\n if (syntax.issues.length > 0) {\n return []; // contains syntax errors\n }\n this.workarea = new WorkArea();\n const top = syntax.spaghetti.getTop();\n this.buildWorkarea(top, obj);\n if (this.workarea.count() === 0) {\n return this.buildIssues(obj); // exit early if all variables are used\n }\n this.findUses(top, obj);\n for (const o of this.reg.getObjects()) {\n if (o === obj) {\n continue;\n }\n else if (o instanceof _abap_object_1.ABAPObject) {\n if (this.reg.isDependency(o)) {\n continue; // do not search in dependencies\n }\n const syntax = new syntax_1.SyntaxLogic(this.reg, o).run();\n this.findUses(syntax.spaghetti.getTop(), o);\n if (this.workarea.count() === 0) {\n return this.buildIssues(obj); // exit early if all variables are used\n }\n }\n }\n return this.buildIssues(obj);\n }\n findUses(node, obj) {\n for (const r of node.getData().references) {\n if (r.referenceType === _reference_1.ReferenceType.DataReadReference\n || r.referenceType === _reference_1.ReferenceType.DataWriteReference\n || r.referenceType === _reference_1.ReferenceType.TypeReference) {\n this.workarea.removeIfExists(r.resolved);\n }\n }\n for (const c of node.getChildren()) {\n this.findUses(c, obj);\n }\n }\n buildWorkarea(node, obj) {\n const stype = node.getIdentifier().stype;\n if (stype === _scope_type_1.ScopeType.OpenSQL) {\n return;\n }\n for (const c of node.getChildren()) {\n this.buildWorkarea(c, obj);\n }\n if (stype !== _scope_type_1.ScopeType.BuiltIn) {\n const vars = node.getData().vars;\n for (const name in vars) {\n const meta = vars[name].getMeta();\n if (this.conf.skipNames\n && this.conf.skipNames.length > 0\n && this.conf.skipNames.some((a) => a.toUpperCase() === name)) {\n continue;\n }\n else if (name === \"ME\"\n || name === \"SUPER\"\n || meta.includes(\"selection_screen_tab\" /* IdentifierMeta.SelectionScreenTab */)\n || meta.includes(\"event_parameter\" /* IdentifierMeta.EventParameter */)) {\n // todo, workaround for \"me\" and \"super\", these should somehow be typed to built-in\n continue;\n }\n const isInline = meta.includes(\"inline\" /* IdentifierMeta.InlineDefinition */);\n this.workarea.push(vars[name], isInline ? 2 : 1);\n }\n }\n }\n buildIssues(obj) {\n const ret = [];\n for (const w of this.workarea.get()) {\n const filename = w.id.getFilename();\n if (this.reg.isFileDependency(filename) === true) {\n continue;\n }\n else if (obj instanceof objects_1.Program === false && obj.containsFile(filename) === false) {\n continue;\n }\n const statement = this.findStatement(w.id);\n if (statement === null || statement === void 0 ? void 0 : statement.getPragmas().map(t => t.getStr()).includes(this.getMetadata().pragma + \"\")) {\n continue;\n }\n else if (this.suppressedbyPseudo(statement, w.id, obj)) {\n continue;\n }\n const name = w.id.getName();\n const message = \"Variable \\\"\" + name.toLowerCase() + \"\\\" not used\";\n const fix = this.buildFix(w.id, obj);\n ret.push(issue_1.Issue.atIdentifier(w.id, message, this.getMetadata().key, this.conf.severity, fix));\n }\n return ret;\n }\n suppressedbyPseudo(statement, v, obj) {\n if (statement === undefined) {\n return false;\n }\n const file = obj.getABAPFileByName(v.getFilename());\n if (file === undefined) {\n return false;\n }\n let next = false;\n for (const s of file.getStatements()) {\n if (next === true && s.get() instanceof _statement_1.Comment) {\n return s.concatTokens().includes(this.getMetadata().pseudoComment + \"\");\n }\n if (s === statement) {\n next = true;\n }\n }\n return false;\n }\n findStatement(v) {\n const file = this.reg.getFileByName(v.getFilename());\n if (file === undefined) {\n return undefined;\n }\n const object = this.reg.findObjectForFile(file);\n if (!(object instanceof _abap_object_1.ABAPObject)) {\n return undefined;\n }\n const abapfile = object.getABAPFileByName(v.getFilename());\n if (abapfile === undefined) {\n return undefined;\n }\n const statement = edit_helper_1.EditHelper.findStatement(v.getToken(), abapfile);\n return statement;\n }\n buildFix(v, obj) {\n const file = obj.getABAPFileByName(v.getFilename());\n if (file === undefined) {\n return undefined;\n }\n const statement = edit_helper_1.EditHelper.findStatement(v.getToken(), file);\n if (statement === undefined) {\n return undefined;\n }\n else if (statement.get() instanceof Statements.Data) {\n return edit_helper_1.EditHelper.deleteStatement(file, statement);\n }\n return undefined;\n }\n}\nexports.UnusedVariables = UnusedVariables;\n//# sourceMappingURL=unused_variables.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/unused_variables.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/use_bool_expression.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/use_bool_expression.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UseBoolExpression = exports.UseBoolExpressionConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\n// note this rule assumes abap_true and abap_false is used for boolean variables\n// some other rule will in the future find assignments to abap_bool that are not abap_true/abap_false/abap_undefined\nclass UseBoolExpressionConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UseBoolExpressionConf = UseBoolExpressionConf;\nclass UseBoolExpression extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UseBoolExpressionConf();\n }\n getMetadata() {\n return {\n key: \"use_bool_expression\",\n title: \"Use boolean expression\",\n shortDescription: `Use boolean expression, xsdbool from 740sp08 and up, boolc from 702 and up`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-xsdbool-to-set-boolean-variables`,\n tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n badExample: `IF line IS INITIAL.\r\n has_entries = abap_false.\r\nELSE.\r\n has_entries = abap_true.\r\nENDIF.\r\n\r\nDATA(fsdf) = COND #( WHEN foo <> bar THEN abap_true ELSE abap_false ).`,\n goodExample: `DATA(has_entries) = xsdbool( line IS NOT INITIAL ).\r\n\r\nDATA(fsdf) = xsdbool( foo <> bar ).`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const issues = [];\n const stru = file.getStructure();\n const version = this.reg.getConfig().getVersion();\n if (stru === undefined || (version < version_1.Version.v702 && version !== version_1.Version.Cloud)) {\n return [];\n }\n for (const i of stru.findAllStructures(Structures.If)) {\n if (i.findDirectStructure(Structures.ElseIf) !== undefined) {\n continue;\n }\n const bodyNodes = (_a = i.findDirectStructure(Structures.Body)) === null || _a === void 0 ? void 0 : _a.findAllStatementNodes();\n if (bodyNodes === undefined || bodyNodes.length !== 1) {\n continue;\n }\n const bodyStatement = bodyNodes[0];\n if (!(bodyStatement.get() instanceof Statements.Move)) {\n continue;\n }\n const elseNodes = (_c = (_b = i.findDirectStructure(Structures.Else)) === null || _b === void 0 ? void 0 : _b.findDirectStructure(Structures.Body)) === null || _c === void 0 ? void 0 : _c.findAllStatementNodes();\n if (elseNodes === undefined || elseNodes.length !== 1) {\n continue;\n }\n const elseStatement = elseNodes[0];\n if (!(elseStatement.get() instanceof Statements.Move)) {\n continue;\n }\n let bodyTarget = (_d = bodyStatement.findFirstExpression(Expressions.Target)) === null || _d === void 0 ? void 0 : _d.concatTokens();\n if (bodyTarget === null || bodyTarget === void 0 ? void 0 : bodyTarget.startsWith(\"DATA(\")) {\n bodyTarget = bodyTarget.substr(5, bodyTarget.length - 6);\n }\n const elseTarget = (_e = elseStatement.findFirstExpression(Expressions.Target)) === null || _e === void 0 ? void 0 : _e.concatTokens();\n if (bodyTarget === undefined\n || elseTarget === undefined\n || bodyTarget.toUpperCase() !== elseTarget.toUpperCase()) {\n continue;\n }\n const bodySource = (_f = bodyStatement.findFirstExpression(Expressions.Source)) === null || _f === void 0 ? void 0 : _f.concatTokens().toUpperCase();\n const elseSource = (_g = elseStatement.findFirstExpression(Expressions.Source)) === null || _g === void 0 ? void 0 : _g.concatTokens().toUpperCase();\n if ((bodySource === \"ABAP_TRUE\" && elseSource === \"ABAP_FALSE\")\n || (bodySource === \"ABAP_FALSE\" && elseSource === \"ABAP_TRUE\")) {\n const func = (this.reg.getConfig().getVersion() >= version_1.Version.v740sp08\n || this.reg.getConfig().getVersion() === version_1.Version.Cloud) ? \"xsdbool\" : \"boolc\";\n const negate = bodySource === \"ABAP_FALSE\";\n const message = `Use ${func} instead of IF` + (negate ? \", negate expression\" : \"\");\n const start = i.getFirstToken().getStart();\n const end = i.getLastToken().getEnd();\n const statement = bodyTarget + \" = \" + func + \"( \" +\n (negate ? \"NOT ( \" : \"\") +\n ((_j = (_h = i.findFirstStatement(Statements.If)) === null || _h === void 0 ? void 0 : _h.findFirstExpression(Expressions.Cond)) === null || _j === void 0 ? void 0 : _j.concatTokens()) +\n (negate ? \" )\" : \"\") +\n \" ).\";\n const fix = edit_helper_1.EditHelper.replaceRange(file, start, end, statement);\n issues.push(issue_1.Issue.atRange(file, start, end, message, this.getMetadata().key, this.conf.severity, fix));\n }\n }\n if (version >= version_1.Version.v740sp08 || version === version_1.Version.Cloud) {\n for (const b of stru.findAllExpressions(Expressions.CondBody)) {\n const concat = b.concatTokens().toUpperCase();\n if (concat.endsWith(\" THEN ABAP_TRUE ELSE ABAP_FALSE\")\n || concat.endsWith(\" THEN ABAP_TRUE\")\n || concat.endsWith(\" THEN ABAP_FALSE ELSE ABAP_TRUE\")) {\n const message = \"Use xsdbool\";\n // eslint-disable-next-line max-len\n issues.push(issue_1.Issue.atRange(file, b.getFirstToken().getStart(), b.getLastToken().getEnd(), message, this.getMetadata().key, this.conf.severity));\n }\n }\n }\n return issues;\n }\n}\nexports.UseBoolExpression = UseBoolExpression;\n//# sourceMappingURL=use_bool_expression.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/use_bool_expression.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/use_class_based_exceptions.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/use_class_based_exceptions.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UseClassBasedExceptions = exports.UseClassBasedExceptionsConf = void 0;\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nclass UseClassBasedExceptionsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UseClassBasedExceptionsConf = UseClassBasedExceptionsConf;\nclass UseClassBasedExceptions extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UseClassBasedExceptionsConf();\n }\n getMetadata() {\n return {\n key: \"use_class_based_exceptions\",\n title: \"Use class based exceptions\",\n shortDescription: `Use class based exceptions, checks interface and class definitions`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-class-based-exceptions`,\n tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Use class based exceptions\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n var _a;\n const issues = [];\n for (const s of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllStatements(Statements.MethodDef)) || []) {\n if (s.findDirectExpression(Expressions.MethodDefExceptions)) {\n issues.push(issue_1.Issue.atStatement(file, s, this.getMessage(), this.getMetadata().key));\n }\n }\n return issues;\n }\n}\nexports.UseClassBasedExceptions = UseClassBasedExceptions;\n//# sourceMappingURL=use_class_based_exceptions.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/use_class_based_exceptions.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/use_line_exists.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/use_line_exists.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UseLineExists = exports.UseLineExistsConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass UseLineExistsConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UseLineExistsConf = UseLineExistsConf;\nclass UseLineExists extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UseLineExistsConf();\n }\n getMetadata() {\n return {\n key: \"use_line_exists\",\n title: \"Use line_exists\",\n shortDescription: `Use line_exists, from 740sp02 and up`,\n extendedInformation: `\r\nhttps://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-line_exists-to-read-table-or-loop-at\r\n\r\nNot reported if the READ TABLE statement contains BINARY SEARCH.`,\n tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],\n badExample: `READ TABLE my_table TRANSPORTING NO FIELDS WITH KEY key = 'A'.\r\nIF sy-subrc = 0.\r\nENDIF.`,\n goodExample: `IF line_exists( my_table[ key = 'A' ] ).\r\nENDIF.`,\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n const issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n const vers = this.reg.getConfig().getVersion();\n if (vers === version_1.Version.OpenABAP) {\n return [];\n }\n else if (vers < version_1.Version.v740sp02 && vers !== version_1.Version.Cloud) {\n return [];\n }\n const statements = file.getStatements();\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i];\n if (!(statement.get() instanceof Statements.ReadTable)) {\n continue;\n }\n const concat = statement.concatTokens().toUpperCase();\n if (concat.includes(\" TRANSPORTING NO FIELDS\") === true\n && concat.includes(\" BINARY SEARCH\") === false\n && this.checksSubrc(i, statements) === true\n && this.usesTabix(i, statements) === false) {\n issues.push(issue_1.Issue.atStatement(file, statement, \"Use line_exists\", this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n ///////////////////////\n checksSubrc(index, statements) {\n for (let i = index + 1; i < statements.length; i++) {\n const statement = statements[i];\n if (statement.get() instanceof _statement_1.Comment) {\n continue;\n }\n for (const c of statement.findAllExpressions(Expressions.Cond)) {\n for (const s of c.findAllExpressions(Expressions.Source)) {\n if (s.concatTokens().toUpperCase() === \"SY-SUBRC\") {\n return true;\n }\n }\n }\n return false;\n }\n return false;\n }\n // this is a heuristic, data flow analysis is required to get the correct result\n usesTabix(index, statements) {\n for (let i = index + 1; i < index + 5; i++) {\n const statement = statements[i];\n if (statement === undefined) {\n break;\n }\n else if (statement.get() instanceof _statement_1.Comment) {\n continue;\n }\n else if (statement.concatTokens().toUpperCase().includes(\" SY-TABIX\")) {\n return true;\n }\n }\n return false;\n }\n}\nexports.UseLineExists = UseLineExists;\n//# sourceMappingURL=use_line_exists.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/use_line_exists.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/use_new.js": +/*!****************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/use_new.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UseNew = exports.UseNewConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst version_1 = __webpack_require__(/*! ../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nclass UseNewConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.UseNewConf = UseNewConf;\nclass UseNew extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new UseNewConf();\n }\n getMetadata() {\n return {\n key: \"use_new\",\n title: \"Use NEW\",\n shortDescription: `Checks for deprecated CREATE OBJECT statements.`,\n extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-new-to-create-object\r\n\r\nIf the target variable is referenced in the CREATE OBJECT statement, no errors are issued\r\n\r\nApplicable from v740sp02 and up`,\n badExample: `CREATE OBJECT ref.`,\n goodExample: `ref = NEW #( ).`,\n tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Use NEW #( ) to instantiate object.\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file, obj) {\n var _a;\n const issues = [];\n if (obj.getType() === \"INTF\") {\n return [];\n }\n if (this.reg.getConfig().getVersion() < version_1.Version.v740sp02 && this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {\n return [];\n }\n for (const statement of file.getStatements()) {\n if (statement.get() instanceof Statements.CreateObject) {\n if (statement.findFirstExpression(expressions_1.Dynamic)) {\n continue;\n }\n else if (statement.findDirectExpression(expressions_1.ParameterListExceptions)) {\n continue;\n }\n else if (statement.findDirectTokenByText(\"AREA\")) {\n continue;\n }\n const target = ((_a = statement.findDirectExpression(expressions_1.Target)) === null || _a === void 0 ? void 0 : _a.concatTokens()) + \"->\";\n if (statement.concatTokens().includes(target)) {\n continue;\n }\n const fix = this.buildFix(file, statement);\n const issue = issue_1.Issue.atPosition(file, statement.getStart(), this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n return issues;\n }\n buildFix(file, statement) {\n var _a, _b;\n const target = (_a = statement.findDirectExpression(Expressions.Target)) === null || _a === void 0 ? void 0 : _a.concatTokens();\n if (target === undefined) {\n return undefined;\n }\n const parameters = statement.findDirectExpression(Expressions.ParameterListS);\n const param = parameters ? parameters.concatTokens() + \" \" : \"\";\n let type = (_b = statement.findDirectExpression(Expressions.ClassName)) === null || _b === void 0 ? void 0 : _b.getFirstToken().getStr();\n if (type === undefined) {\n type = \"#\";\n }\n const string = `${target} = NEW ${type}( ${param}).`;\n return edit_helper_1.EditHelper.replaceRange(file, statement.getStart(), statement.getEnd(), string);\n }\n}\nexports.UseNew = UseNew;\n//# sourceMappingURL=use_new.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/use_new.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/when_others_last.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/when_others_last.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WhenOthersLast = exports.WhenOthersLastConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass WhenOthersLastConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.WhenOthersLastConf = WhenOthersLastConf;\nclass WhenOthersLast extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new WhenOthersLastConf();\n }\n getMetadata() {\n return {\n key: \"when_others_last\",\n title: \"WHEN OTHERS last\",\n shortDescription: `Checks that WHEN OTHERS is placed the last within a CASE statement.`,\n tags: [_irule_1.RuleTag.SingleFile],\n badExample: `CASE bar.\r\n WHEN OTHERS.\r\n WHEN 2.\r\nENDCASE.`,\n goodExample: `CASE bar.\r\n WHEN 2.\r\n WHEN OTHERS.\r\nENDCASE.`,\n };\n }\n getMessage() {\n return \"WHEN OTHERS should be the last branch in a CASE statement.\";\n }\n runParsed(file) {\n const issues = [];\n const struc = file.getStructure();\n if (struc === undefined) {\n return [];\n }\n const cases = struc.findAllStructures(Structures.Case);\n for (const c of cases) {\n const whentop = c.findDirectStructures(Structures.When);\n for (let i = 0; i < whentop.length - 1; i++) {\n const whens = whentop[i].findDirectStatements(Statements.When).concat(whentop[i].findDirectStatements(Statements.WhenOthers));\n for (const when of whens) {\n if (when.get() instanceof Statements.WhenOthers) {\n const start = when.getFirstToken().getStart();\n const issue = issue_1.Issue.atPosition(file, start, this.getMessage(), this.getMetadata().key, this.conf.severity);\n issues.push(issue);\n }\n }\n }\n }\n return issues;\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n}\nexports.WhenOthersLast = WhenOthersLast;\n//# sourceMappingURL=when_others_last.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/when_others_last.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/whitespace_end.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/whitespace_end.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WhitespaceEnd = exports.WhitespaceEndConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ \"./node_modules/@abaplint/core/build/src/rules/_abap_rule.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst edit_helper_1 = __webpack_require__(/*! ../edit_helper */ \"./node_modules/@abaplint/core/build/src/edit_helper.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nclass WhitespaceEndConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.WhitespaceEndConf = WhitespaceEndConf;\nclass WhitespaceEnd extends _abap_rule_1.ABAPRule {\n constructor() {\n super(...arguments);\n this.conf = new WhitespaceEndConf();\n }\n getMetadata() {\n return {\n key: \"whitespace_end\",\n title: \"Whitespace at end of line\",\n shortDescription: `Checks for redundant whitespace at the end of each line.`,\n tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],\n };\n }\n getMessage() {\n return \"Remove whitespace at end of line\";\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n runParsed(file) {\n const issues = [];\n const rows = file.getRawRows();\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].endsWith(\" \") || rows[i].endsWith(\" \\r\")) {\n const match = / +\\r?$/.exec(rows[i]);\n const start = new position_1.Position(i + 1, match.index + 1);\n const end = new position_1.Position(i + 1, rows[i].length + 1);\n const fix = edit_helper_1.EditHelper.deleteRange(file, start, end);\n const issue = issue_1.Issue.atRange(file, start, end, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);\n issues.push(issue);\n }\n }\n return issues;\n }\n}\nexports.WhitespaceEnd = WhitespaceEnd;\n//# sourceMappingURL=whitespace_end.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/whitespace_end.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules/xml_consistency.js": +/*!************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules/xml_consistency.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.XMLConsistency = exports.XMLConsistencyConf = void 0;\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\nconst Objects = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\nconst fast_xml_parser_1 = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\nclass XMLConsistencyConf extends _basic_rule_config_1.BasicRuleConfig {\n}\nexports.XMLConsistencyConf = XMLConsistencyConf;\nclass XMLConsistency {\n constructor() {\n this.conf = new XMLConsistencyConf();\n }\n getMetadata() {\n return {\n key: \"xml_consistency\",\n title: \"XML consistency\",\n shortDescription: `Checks the consistency of main XML files, eg. naming for CLAS and INTF objects`,\n tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.Syntax],\n };\n }\n getConfig() {\n return this.conf;\n }\n setConfig(conf) {\n this.conf = conf;\n }\n initialize(_reg) {\n return this;\n }\n run(obj) {\n var _a, _b;\n const issues = [];\n const file = obj.getXMLFile();\n if (file === undefined) {\n return issues;\n }\n const xml = obj.getXML();\n if (xml) {\n const res = fast_xml_parser_1.XMLValidator.validate(xml);\n if (res !== true) {\n issues.push(issue_1.Issue.atRow(file, 1, \"XML parser error: \" + res.err.msg, this.getMetadata().key, this.conf.severity));\n }\n }\n // todo, have some XML validation in each object?\n if (obj instanceof Objects.Class) {\n const name = obj.getNameFromXML();\n if (name === undefined) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Name undefined in XML\", this.getMetadata().key, this.conf.severity));\n }\n else if (obj.getDescription() && obj.getDescription().length > 60) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Description too long\", this.getMetadata().key, this.conf.severity));\n }\n else if (name !== obj.getName().toUpperCase()) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Name in XML does not match object\", this.getMetadata().key, this.conf.severity));\n }\n else if (((_a = obj.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getStructure()) !== undefined && obj.getClassDefinition() === undefined) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Class matching XML name not found in ABAP file\", this.getMetadata().key, this.conf.severity));\n }\n }\n if (obj instanceof Objects.Interface) {\n const name = obj.getNameFromXML();\n if (name === undefined) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Name undefined in XML\", this.getMetadata().key, this.conf.severity));\n }\n else if (obj.getDescription() && obj.getDescription().length > 60) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Description too long\", this.getMetadata().key, this.conf.severity));\n }\n else if (name !== obj.getName().toUpperCase()) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Name in XML does not match object\", this.getMetadata().key, this.conf.severity));\n }\n else if (obj.getDefinition() !== undefined && ((_b = obj.getDefinition()) === null || _b === void 0 ? void 0 : _b.getName().toUpperCase()) !== name.toUpperCase()) {\n issues.push(issue_1.Issue.atRow(file, 1, \"Interface matching XML name not found in ABAP file\", this.getMetadata().key, this.conf.severity));\n }\n }\n return issues;\n }\n}\nexports.XMLConsistency = XMLConsistency;\n//# sourceMappingURL=xml_consistency.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules/xml_consistency.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/rules_runner.js": +/*!***************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/rules_runner.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RulesRunner = void 0;\nconst syntax_1 = __webpack_require__(/*! ./abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\nconst artifacts_rules_1 = __webpack_require__(/*! ./artifacts_rules */ \"./node_modules/@abaplint/core/build/src/artifacts_rules.js\");\nconst _abap_object_1 = __webpack_require__(/*! ./objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst skip_logic_1 = __webpack_require__(/*! ./skip_logic */ \"./node_modules/@abaplint/core/build/src/skip_logic.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nclass RulesRunner {\n constructor(reg) {\n this.reg = reg;\n }\n objectsToCheck(objects) {\n const check = [];\n const skipLogic = new skip_logic_1.SkipLogic(this.reg);\n for (const obj of objects) {\n if (skipLogic.skip(obj) || this.reg.isDependency(obj)) {\n continue;\n }\n check.push(obj);\n }\n return check;\n }\n runRules(objects, input) {\n var _a, _b, _c, _d, _e, _f;\n const rulePerformance = {};\n const issues = [];\n const rules = this.reg.getConfig().getEnabledRules();\n const check = this.objectsToCheck(objects);\n // note: SyntaxLogic is cached, logic is run as first step in order\n // not to penalize the performance of the first rule using SyntaxLogic information\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(check.length, \"Run Syntax\");\n for (const obj of check) {\n (_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Run Syntax - \" + obj.getName());\n if (obj instanceof _abap_object_1.ABAPObject) {\n new syntax_1.SyntaxLogic(this.reg, obj).run();\n }\n }\n (_c = input === null || input === void 0 ? void 0 : input.progress) === null || _c === void 0 ? void 0 : _c.set(rules.length, \"Initialize Rules\");\n for (const rule of rules) {\n (_d = input === null || input === void 0 ? void 0 : input.progress) === null || _d === void 0 ? void 0 : _d.tick(\"Initialize Rules - \" + rule.getMetadata().key);\n if (rule.initialize === undefined) {\n throw new Error(rule.getMetadata().key + \" missing initialize method\");\n }\n rule.initialize(this.reg);\n rulePerformance[rule.getMetadata().key] = 0;\n }\n (_e = input === null || input === void 0 ? void 0 : input.progress) === null || _e === void 0 ? void 0 : _e.set(check.length, \"Finding Issues\");\n for (const obj of check) {\n (_f = input === null || input === void 0 ? void 0 : input.progress) === null || _f === void 0 ? void 0 : _f.tick(\"Finding Issues - \" + obj.getType() + \" \" + obj.getName());\n for (const rule of rules) {\n const before = Date.now();\n issues.push(...rule.run(obj));\n const runtime = Date.now() - before;\n rulePerformance[rule.getMetadata().key] = rulePerformance[rule.getMetadata().key] + runtime;\n }\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n const perf = [];\n for (const p in rulePerformance) {\n if (rulePerformance[p] > 100) { // ignore rules if it takes less than 100ms\n perf.push({ name: p, time: rulePerformance[p] });\n }\n }\n perf.sort((a, b) => { return b.time - a.time; });\n for (const p of perf) {\n process.stderr.write(\"\\t\" + p.time + \"ms\\t\" + p.name + \"\\n\");\n }\n }\n return this.excludeIssues(issues);\n }\n excludeIssues(issues) {\n var _a;\n const ret = issues;\n const globalNoIssues = this.reg.getConfig().getGlobal().noIssues || [];\n const globalNoIssuesPatterns = globalNoIssues.map(x => new RegExp(x, \"i\"));\n if (globalNoIssuesPatterns.length > 0) {\n for (let i = ret.length - 1; i >= 0; i--) {\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, globalNoIssuesPatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n // exclude issues, as now we know both the filename and issue key\n for (const rule of artifacts_rules_1.ArtifactsRules.getRules()) {\n const key = rule.getMetadata().key;\n const ruleExclude = (_a = this.reg.getConfig().readByKey(key, \"exclude\")) !== null && _a !== void 0 ? _a : [];\n if (ruleExclude.length === 0) {\n continue;\n }\n const ruleExcludePatterns = ruleExclude.map(x => new RegExp(x, \"i\"));\n for (let i = ret.length - 1; i >= 0; i--) {\n if (ret[i].getKey() !== key) {\n continue;\n }\n const filename = ret[i].getFilename();\n if (excludeHelper_1.ExcludeHelper.isExcluded(filename, ruleExcludePatterns)) {\n ret.splice(i, 1);\n }\n }\n }\n return ret;\n }\n}\nexports.RulesRunner = RulesRunner;\n//# sourceMappingURL=rules_runner.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/rules_runner.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/severity.js": +/*!***********************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/severity.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Severity = void 0;\nvar Severity;\n(function (Severity) {\n Severity[\"Error\"] = \"Error\";\n Severity[\"Warning\"] = \"Warning\";\n Severity[\"Info\"] = \"Info\";\n})(Severity || (exports.Severity = Severity = {}));\n//# sourceMappingURL=severity.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/severity.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/skip_logic.js": +/*!*************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/skip_logic.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SkipLogic = void 0;\nconst objects_1 = __webpack_require__(/*! ./objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst include_graph_1 = __webpack_require__(/*! ./utils/include_graph */ \"./node_modules/@abaplint/core/build/src/utils/include_graph.js\");\nclass SkipLogic {\n constructor(reg) {\n this.reg = reg;\n this.tobj = undefined;\n }\n skip(obj) {\n const global = this.reg.getConfig().getGlobal();\n if (global.skipGeneratedGatewayClasses === true\n && obj instanceof objects_1.Class\n && this.isGeneratedGatewayClass(obj)) {\n return true;\n }\n else if (global.skipIncludesWithoutMain === true\n && obj instanceof objects_1.Program\n && obj.isInclude() === true) {\n const ig = new include_graph_1.IncludeGraph(this.reg);\n const file = obj.getMainABAPFile();\n if (file && ig.listMainForInclude(file.getFilename()).length === 0) {\n return true;\n }\n }\n else if (global.skipGeneratedPersistentClasses === true\n && obj instanceof objects_1.Class\n && this.isGeneratedPersistentClass(obj)) {\n return true;\n }\n else if (global.skipGeneratedFunctionGroups === true\n && obj instanceof objects_1.FunctionGroup\n && this.isGeneratedFunctionGroup(obj)) {\n return true;\n }\n else if (global.skipGeneratedProxyClasses === true\n && obj instanceof objects_1.Class\n && this.isGeneratedProxyClass(obj)) {\n return true;\n }\n else if (global.skipGeneratedProxyInterfaces === true\n && obj instanceof objects_1.Interface\n && this.isGeneratedProxyInterface(obj)) {\n return true;\n }\n else if (global.skipGeneratedBOPFInterfaces === true\n && obj instanceof objects_1.Interface\n && this.isGeneratedBOPFInterface(obj)) {\n return true;\n }\n return false;\n }\n ///////////////////////////\n isGeneratedBOPFInterface(obj) {\n var _a;\n const implementing = (_a = obj.getDefinition()) === null || _a === void 0 ? void 0 : _a.getImplementing();\n if (implementing === undefined) {\n return false;\n }\n for (const i of implementing) {\n if (i.name.toUpperCase() === \"/BOBF/IF_LIB_CONSTANTS\") {\n return true;\n }\n }\n return false;\n }\n isGeneratedProxyInterface(obj) {\n const xml = obj.getXML();\n if (!xml) {\n return false;\n }\n const result = xml.match(/(.)<\\/CLSPROXY>/);\n if (result) {\n return true;\n }\n else {\n return false;\n }\n }\n isGeneratedProxyClass(obj) {\n const xml = obj.getXML();\n if (!xml) {\n return false;\n }\n const result = xml.match(/(.)<\\/CLSPROXY>/);\n if (result) {\n return true;\n }\n else {\n return false;\n }\n }\n isGeneratedFunctionGroup(group) {\n var _a;\n if (this.tobj === undefined) {\n this.tobj = {};\n for (const obj of this.reg.getObjects()) {\n if (obj.getType() !== \"TOBJ\") {\n continue;\n }\n const tobj = obj;\n const area = (_a = tobj.getArea()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (area) {\n this.tobj[area] = true;\n }\n }\n }\n return this.tobj[group.getName().toUpperCase()];\n }\n isGeneratedGatewayClass(obj) {\n var _a;\n let sup = undefined;\n const definition = obj.getClassDefinition();\n if (definition) {\n sup = (_a = definition.superClassName) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n }\n if (obj.getName().match(/_MPC$/i) && sup === \"/IWBEP/CL_MGW_PUSH_ABS_MODEL\") {\n return true;\n }\n else if (obj.getName().match(/_DPC$/i) && sup === \"/IWBEP/CL_MGW_PUSH_ABS_DATA\") {\n return true;\n }\n else if (sup === \"CL_SADL_GTK_EXPOSURE_MPC\") {\n return true;\n }\n return false;\n }\n isGeneratedPersistentClass(obj) {\n if (obj.getCategory() === objects_1.ClassCategory.Persistent) {\n return true;\n }\n else if (obj.getCategory() === objects_1.ClassCategory.PersistentFactory) {\n return true;\n }\n const main = obj.getClassDefinition();\n if (main) {\n const sup = main.superClassName;\n if (sup) {\n const sclass = this.reg.getObject(\"CLAS\", sup.toUpperCase());\n if (sclass && sclass.getCategory() === objects_1.ClassCategory.PersistentFactory) {\n return true;\n }\n }\n }\n return false;\n }\n}\nexports.SkipLogic = SkipLogic;\n//# sourceMappingURL=skip_logic.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/skip_logic.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/utils/cyclomatic_complexity_stats.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/utils/cyclomatic_complexity_stats.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CyclomaticComplexityStats = void 0;\nconst Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst Structures = __webpack_require__(/*! ../abap/3_structures/structures */ \"./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nclass CyclomaticComplexityStats {\n static run(obj) {\n var _a, _b, _c;\n const res = [];\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n for (const file of obj.getABAPFiles()) {\n for (const m of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllStructures(Structures.Method)) || []) {\n let count = 0;\n for (const s of m.findAllStatementNodes()) {\n const type = s.get();\n if (type instanceof Statements.Assert\n || type instanceof Statements.Check\n || type instanceof Statements.ElseIf\n || type instanceof Statements.If\n || type instanceof Statements.While\n || type instanceof Statements.Case\n || type instanceof Statements.SelectLoop\n || type instanceof Statements.Catch\n || type instanceof Statements.Cleanup\n || type instanceof Statements.EndAt\n || type instanceof Statements.Loop) {\n count += 1;\n }\n }\n const name = (_c = (_b = m.findDirectStatement(Statements.MethodImplementation)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.MethodName)) === null || _c === void 0 ? void 0 : _c.getFirstToken().getStr();\n res.push({\n file,\n pos: m.getFirstToken().getStart(),\n name: name ? name : \"Error!\",\n count,\n });\n }\n }\n return res;\n }\n}\nexports.CyclomaticComplexityStats = CyclomaticComplexityStats;\n//# sourceMappingURL=cyclomatic_complexity_stats.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/utils/cyclomatic_complexity_stats.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/utils/excludeHelper.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/utils/excludeHelper.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExcludeHelper = void 0;\nclass ExcludeHelper {\n static isExcluded(filename, excludePatterns) {\n for (const exclude of excludePatterns) {\n if (exclude.exec(filename)) {\n return true;\n }\n }\n return false;\n }\n}\nexports.ExcludeHelper = ExcludeHelper;\n//# sourceMappingURL=excludeHelper.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/utils/excludeHelper.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/utils/form_length_stats.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/utils/form_length_stats.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.FormLengthStats = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass FormLengthStats {\n static run(obj) {\n const res = [];\n let pos = undefined;\n let name = \"\";\n let count = 0;\n let form = false;\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n for (const file of obj.getABAPFiles()) {\n for (const stat of file.getStatements()) {\n const type = stat.get();\n if (type instanceof Statements.Form) {\n pos = stat.getFirstToken().getStart();\n name = this.findName(stat);\n form = true;\n count = 0;\n }\n else if (type instanceof Statements.EndForm) {\n if (pos) {\n res.push({ name, count, file, pos });\n }\n else {\n continue;\n }\n form = false;\n }\n else if (form === true\n && !(type instanceof _statement_1.Comment)\n && !(type instanceof _statement_1.Empty)) {\n count = count + 1;\n }\n }\n }\n return res;\n }\n static findName(stat) {\n let name = \"\";\n const nameExpr = stat.findFirstExpression(expressions_1.FormName);\n if (nameExpr) {\n name = nameExpr.getFirstToken().getStr();\n }\n else {\n throw new Error(\"FormLength, findName, expected FormName\");\n }\n return name;\n }\n}\nexports.FormLengthStats = FormLengthStats;\n//# sourceMappingURL=form_length_stats.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/utils/form_length_stats.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/utils/include_graph.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/utils/include_graph.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IncludeGraph = void 0;\nconst statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst objects_1 = __webpack_require__(/*! ../objects */ \"./node_modules/@abaplint/core/build/src/objects/index.js\");\nconst check_include_1 = __webpack_require__(/*! ../rules/check_include */ \"./node_modules/@abaplint/core/build/src/rules/check_include.js\");\nconst position_1 = __webpack_require__(/*! ../position */ \"./node_modules/@abaplint/core/build/src/position.js\");\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst severity_1 = __webpack_require__(/*! ../severity */ \"./node_modules/@abaplint/core/build/src/severity.js\");\n// todo, check for cycles/circular dependencies, method findTop\n// todo, add configurable error for multiple use includes\nfunction getABAPObjects(reg) {\n const ret = [];\n for (const o of reg.getObjects()) {\n if (o instanceof _abap_object_1.ABAPObject) {\n ret.push(o);\n }\n }\n return ret;\n}\nclass Graph {\n constructor() {\n this.vertices = [];\n this.edges = [];\n }\n addVertex(vertex) {\n this.vertices.push(vertex);\n }\n findInclude(includeName) {\n for (const v of this.vertices) {\n if (v.includeName.toUpperCase() === includeName.toUpperCase()) {\n return v;\n }\n }\n return undefined;\n }\n findVertex(filename) {\n for (const v of this.vertices) {\n if (v.filename.toUpperCase() === filename.toUpperCase()) {\n return v;\n }\n }\n return undefined;\n }\n addEdge(from, toFilename) {\n this.edges.push({ from: from.filename, to: toFilename });\n }\n findTop(filename) {\n const ret = [];\n for (const e of this.edges) {\n if (e.from === filename) {\n ret.push(...this.findTop(e.to));\n }\n }\n if (ret.length === 0) {\n const found = this.findVertex(filename);\n if (found !== undefined) {\n ret.push(found);\n }\n }\n return ret;\n }\n}\nclass IncludeGraph {\n constructor(reg) {\n this.reg = reg;\n this.issues = [];\n this.graph = new Graph();\n this.build();\n }\n getIssues() {\n return this.issues;\n }\n listMainForInclude(filename) {\n const ret = [];\n if (filename === undefined) {\n return [];\n }\n for (const f of this.graph.findTop(filename)) {\n if (f.include === false) {\n ret.push(f.filename);\n }\n }\n return ret;\n }\n getIssuesFile(file) {\n const ret = [];\n for (const i of this.issues) {\n if (i.getFilename() === file.getFilename()) {\n ret.push(i);\n }\n }\n return ret;\n }\n ///////////////////////////////\n build() {\n this.addVertices();\n for (const o of getABAPObjects(this.reg)) {\n for (const f of o.getABAPFiles()) {\n for (const s of f.getStatements()) {\n if (s.get() instanceof statements_1.Include) {\n const ifFound = s.concatTokens().toUpperCase().includes(\"IF FOUND\");\n const iexp = s.findFirstExpression(expressions_1.IncludeName);\n if (iexp === undefined) {\n throw new Error(\"unexpected Include node\");\n }\n const name = iexp.getFirstToken().getStr().toUpperCase();\n if (name.match(/^(\\/\\w+\\/)?L.+XX$/)) { // function module XX includes, possibily namespaced\n continue;\n }\n const found = this.graph.findInclude(name);\n if (found === undefined) {\n if (ifFound === false) {\n const issue = issue_1.Issue.atStatement(f, s, \"Include \" + name + \" not found\", new check_include_1.CheckInclude().getMetadata().key, severity_1.Severity.Error);\n this.issues.push(issue);\n }\n }\n else if (found.include === false) {\n const issue = issue_1.Issue.atStatement(f, s, \"Not possible to INCLUDE a main program\", new check_include_1.CheckInclude().getMetadata().key, severity_1.Severity.Error);\n this.issues.push(issue);\n }\n else {\n this.graph.addEdge(found, f.getFilename());\n }\n }\n }\n }\n }\n this.findUnusedIncludes();\n }\n findUnusedIncludes() {\n for (const v of this.graph.vertices) {\n if (v.include === true) {\n if (this.listMainForInclude(v.filename).length === 0) {\n const f = this.reg.getFileByName(v.filename);\n if (f === undefined) {\n throw new Error(\"findUnusedIncludes internal error\");\n }\n const issue = issue_1.Issue.atPosition(f, new position_1.Position(1, 1), \"INCLUDE not used anywhere\", new check_include_1.CheckInclude().getMetadata().key, severity_1.Severity.Error);\n this.issues.push(issue);\n }\n }\n }\n }\n addVertices() {\n for (const o of getABAPObjects(this.reg)) {\n if (o instanceof objects_1.Program) {\n const file = o.getMainABAPFile();\n if (file) {\n this.graph.addVertex({\n filename: file.getFilename(),\n includeName: o.getName(),\n include: o.isInclude()\n });\n }\n }\n else if (o instanceof objects_1.TypePool) {\n const file = o.getMainABAPFile();\n if (file) {\n this.graph.addVertex({\n filename: file.getFilename(),\n includeName: o.getName(),\n include: false\n });\n }\n }\n else if (o instanceof objects_1.Class) {\n for (const f of o.getSequencedFiles()) {\n this.graph.addVertex({\n filename: f.getFilename(),\n includeName: o.getName(),\n include: false\n });\n }\n }\n else if (o instanceof objects_1.FunctionGroup) {\n for (const i of o.getIncludeFiles()) {\n this.graph.addVertex({\n filename: i.file.getFilename(),\n includeName: i.name,\n include: true\n });\n }\n const file = o.getMainABAPFile();\n if (file) {\n this.graph.addVertex({\n filename: file.getFilename(),\n includeName: o.getName(),\n include: false\n });\n }\n }\n }\n }\n}\nexports.IncludeGraph = IncludeGraph;\n//# sourceMappingURL=include_graph.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/utils/include_graph.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/utils/method_length_stats.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/utils/method_length_stats.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MethodLengthStats = void 0;\nconst Statements = __webpack_require__(/*! ../abap/2_statements/statements */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js\");\nconst expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\nconst _statement_1 = __webpack_require__(/*! ../abap/2_statements/statements/_statement */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/statements/_statement.js\");\nclass MethodLengthStats {\n static run(obj) {\n const res = [];\n let pos = undefined;\n let name = \"\";\n let count = 0;\n let method = false;\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\n return [];\n }\n for (const file of obj.getABAPFiles()) {\n for (const stat of file.getStatements()) {\n const type = stat.get();\n if (type instanceof Statements.MethodImplementation) {\n pos = stat.getFirstToken().getStart();\n name = this.findName(stat);\n method = true;\n count = 0;\n }\n else if (type instanceof Statements.EndMethod) {\n if (pos) {\n res.push({ name, count, file, pos });\n }\n else {\n continue;\n }\n method = false;\n }\n else if (method === true\n && !(type instanceof _statement_1.Comment)\n && !(type instanceof _statement_1.Empty)) {\n count = count + 1;\n }\n }\n }\n return res;\n }\n static findName(stat) {\n let name = \"\";\n const nameExpr = stat.findFirstExpression(expressions_1.MethodName);\n if (nameExpr) {\n name = nameExpr.getFirstToken().getStr();\n }\n else {\n throw new Error(\"MethodLength, findName, expected MethodName\");\n }\n return name;\n }\n}\nexports.MethodLengthStats = MethodLengthStats;\n//# sourceMappingURL=method_length_stats.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/utils/method_length_stats.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/utils/name_validator.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/utils/name_validator.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NameValidator = void 0;\nclass NameValidator {\n static violatesRule(name, pattern, params) {\n if (params.ignoreNames && params.ignoreNames.indexOf(name.toUpperCase()) >= 0) {\n return false;\n }\n for (const ignored of params.ignorePatterns || []) {\n if (new RegExp(ignored, \"i\").test(name)) {\n return false;\n }\n }\n return !params.patternKind || params.patternKind === \"required\" ?\n pattern.test(name) === false :\n pattern.test(name) === true;\n }\n}\nexports.NameValidator = NameValidator;\n//# sourceMappingURL=name_validator.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/utils/name_validator.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/version.js": +/*!**********************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/version.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getPreviousVersion = exports.defaultVersion = exports.Version = void 0;\nvar Version;\n(function (Version) {\n Version[\"OpenABAP\"] = \"open-abap\";\n Version[\"v700\"] = \"v700\";\n Version[\"v702\"] = \"v702\";\n Version[\"v740sp02\"] = \"v740sp02\";\n Version[\"v740sp05\"] = \"v740sp05\";\n Version[\"v740sp08\"] = \"v740sp08\";\n Version[\"v750\"] = \"v750\";\n Version[\"v751\"] = \"v751\";\n Version[\"v752\"] = \"v752\";\n Version[\"v753\"] = \"v753\";\n Version[\"v754\"] = \"v754\";\n Version[\"v755\"] = \"v755\";\n Version[\"v756\"] = \"v756\";\n Version[\"v757\"] = \"v757\";\n Version[\"Cloud\"] = \"Cloud\";\n})(Version || (exports.Version = Version = {}));\nexports.defaultVersion = Version.v757;\nfunction getPreviousVersion(v) {\n if (v === Version.OpenABAP) {\n return Version.v702;\n }\n const all = Object.values(Version);\n const found = all.indexOf(v);\n if (found < 0) {\n throw \"Unknown version: \" + v;\n }\n else if (found === 0) {\n throw \"Nothing lower: \" + v;\n }\n return all[found - 1];\n}\nexports.getPreviousVersion = getPreviousVersion;\n//# sourceMappingURL=version.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/version.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/core/build/src/xml_utils.js": +/*!************************************************************!*\ + !*** ./node_modules/@abaplint/core/build/src/xml_utils.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.unescape = exports.xmlToArray = void 0;\nfunction xmlToArray(data) {\n if (data === undefined) {\n return [];\n }\n else if (data.length) { // input data is an Array\n return data;\n }\n else {\n return [data];\n }\n}\nexports.xmlToArray = xmlToArray;\nfunction unescape(str) {\n if (str === undefined) {\n return \"\";\n }\n str = str.replace(/&/g, \"&\");\n str = str.replace(/>/g, \">\");\n str = str.replace(/</g, \"<\");\n str = str.replace(/"/g, \"\\\"\");\n str = str.replace(/'/g, \"'\");\n return str;\n}\nexports.unescape = unescape;\n//# sourceMappingURL=xml_utils.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/core/build/src/xml_utils.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_code_action_provider.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_code_action_provider.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPCodeActionProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPCodeActionProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideCodeActions(model, range, context, token) {\n const ls = new core_1.LanguageServer(this.reg);\n const r = {\n start: { line: range.startLineNumber - 1, character: range.startColumn - 1 },\n end: { line: range.endLineNumber - 1, character: range.endColumn - 1 }\n };\n const param = {\n textDocument: { uri: model.uri.toString() },\n range: r,\n context: { diagnostics: [] },\n };\n const found = ls.codeActions(param);\n const actions = [];\n for (const f of found) {\n if (f.edit === undefined) {\n continue;\n }\n actions.push({\n title: f.title,\n kind: f.kind,\n diagnostics: this.mapDiagnostics(f.diagnostics),\n edit: this.map(f.edit)\n });\n }\n const list = {\n actions: actions,\n dispose: () => { return; }\n };\n return list;\n }\n mapDiagnostics(input) {\n if (input === undefined) {\n return [];\n }\n const ret = [];\n for (const diagnostic of input) {\n ret.push({\n severity: monaco.MarkerSeverity.Error,\n message: diagnostic.message,\n startLineNumber: diagnostic.range.start.line + 1,\n startColumn: diagnostic.range.start.character + 1,\n endLineNumber: diagnostic.range.end.line + 1,\n endColumn: diagnostic.range.end.character + 1,\n });\n }\n return [];\n }\n map(input) {\n const edits = [];\n for (const filename in input.changes) {\n for (const c of input.changes[filename]) {\n edits.push({\n resource: monaco.Uri.parse(filename),\n versionId: undefined,\n textEdit: this.mapText(c)\n });\n }\n }\n return { edits };\n }\n mapText(input) {\n const i = input;\n return { range: new monaco.Range(i.range.start.line + 1, i.range.start.character + 1, i.range.end.line + 1, i.range.end.character + 1),\n text: i.newText };\n }\n}\nexports.ABAPCodeActionProvider = ABAPCodeActionProvider;\n//# sourceMappingURL=abap_code_action_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_code_action_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_definition_provider.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_definition_provider.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPDefinitionProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPDefinitionProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideDefinition(model, position, token) {\n const ls = new core_1.LanguageServer(this.reg);\n const def = ls.gotoDefinition({\n textDocument: { uri: model.uri.toString() },\n position: { line: position.lineNumber - 1, character: position.column - 1 }\n });\n if (def) {\n return {\n uri: monaco.Uri.parse(def.uri),\n range: new monaco.Range(def.range.start.line + 1, def.range.start.character + 1, def.range.end.line + 1, def.range.end.character + 1),\n };\n }\n else {\n return undefined;\n }\n }\n}\nexports.ABAPDefinitionProvider = ABAPDefinitionProvider;\n//# sourceMappingURL=abap_definition_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_definition_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_document_highlight_provider.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_document_highlight_provider.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPDocumentHighlightProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPDocumentHighlightProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideDocumentHighlights(model, position, token) {\n const ls = new core_1.LanguageServer(this.reg);\n const pos = {\n textDocument: { uri: model.uri.toString() },\n position: { line: position.lineNumber - 1, character: position.column - 1 }\n };\n const ret = [];\n for (const found of ls.documentHighlight(pos)) {\n ret.push({ range: new monaco.Range(found.range.start.line + 1, found.range.start.character + 1, found.range.end.line + 1, found.range.end.character + 1),\n });\n }\n return ret;\n }\n}\nexports.ABAPDocumentHighlightProvider = ABAPDocumentHighlightProvider;\n//# sourceMappingURL=abap_document_highlight_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_document_highlight_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_formatting_provider.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_formatting_provider.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPFormattingProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPFormattingProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideDocumentFormattingEdits(model, options, token) {\n const ls = new core_1.LanguageServer(this.reg);\n const edit = ls.documentFormatting({\n textDocument: { uri: model.uri.toString() },\n });\n if (edit && edit.length === 1) {\n return [{\n range: {\n startLineNumber: edit[0].range.start.line,\n startColumn: edit[0].range.start.character,\n endLineNumber: edit[0].range.end.line,\n endColumn: edit[0].range.end.character,\n },\n text: edit[0].newText,\n }];\n }\n else {\n return undefined;\n }\n }\n}\nexports.ABAPFormattingProvider = ABAPFormattingProvider;\n//# sourceMappingURL=abap_formatting_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_formatting_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_hover_provider.js": +/*!********************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_hover_provider.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPHoverProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPHoverProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideHover(model, position) {\n const ls = new core_1.LanguageServer(this.reg);\n const hov = ls.hover({\n textDocument: { uri: model.uri.toString() },\n position: { line: position.lineNumber - 1, character: position.column - 1 }\n });\n if (hov) {\n return {\n range: new monaco.Range(position.lineNumber, position.column, position.lineNumber, position.column),\n contents: [{ value: hov.contents.value }],\n };\n }\n else {\n return undefined;\n }\n }\n}\nexports.ABAPHoverProvider = ABAPHoverProvider;\n//# sourceMappingURL=abap_hover_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_hover_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_implementation_provider.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_implementation_provider.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPImplementationProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPImplementationProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideImplementation(model, position, _token) {\n const ls = new core_1.LanguageServer(this.reg);\n const pos = {\n textDocument: { uri: model.uri.toString() },\n position: { line: position.lineNumber - 1, character: position.column - 1 }\n };\n const ret = [];\n for (const found of ls.implementation(pos)) {\n ret.push({\n uri: monaco.Uri.parse(found.uri),\n range: new monaco.Range(found.range.start.line + 1, found.range.start.character + 1, found.range.end.line + 1, found.range.end.character + 1),\n });\n }\n return ret;\n }\n}\nexports.ABAPImplementationProvider = ABAPImplementationProvider;\n//# sourceMappingURL=abap_implementation_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_implementation_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_references_provider.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_references_provider.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPReferencesProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPReferencesProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideReferences(model, position, context, token) {\n const ls = new core_1.LanguageServer(this.reg);\n const pos = {\n textDocument: { uri: model.uri.toString() },\n position: { line: position.lineNumber - 1, character: position.column - 1 }\n };\n const ret = [];\n for (const found of ls.references(pos)) {\n ret.push({\n uri: monaco.Uri.parse(found.uri),\n range: new monaco.Range(found.range.start.line + 1, found.range.start.character + 1, found.range.end.line + 1, found.range.end.character + 1),\n });\n }\n return ret;\n }\n}\nexports.ABAPReferencesProvider = ABAPReferencesProvider;\n//# sourceMappingURL=abap_references_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_references_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_rename_provider.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_rename_provider.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPRenameProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst vscode_languageserver_types_1 = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nclass ABAPRenameProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideRenameEdits(model, position, newName, token) {\n const rename = new core_1.LanguageServer(this.reg).rename({\n textDocument: { uri: model.uri.toString() },\n position: { line: position.lineNumber - 1, character: position.column - 1 },\n newName\n });\n const edit = { edits: [] };\n for (const r of (rename === null || rename === void 0 ? void 0 : rename.documentChanges) || []) {\n if (vscode_languageserver_types_1.TextDocumentEdit.is(r)) {\n for (const e of r.edits) {\n const textedit = { range: new monaco.Range(e.range.start.line + 1, e.range.start.character + 1, e.range.end.line + 1, e.range.end.character + 1), text: newName };\n const wte = {\n resource: model.uri,\n versionId: undefined,\n textEdit: textedit\n };\n edit.edits.push(wte);\n }\n }\n }\n return edit;\n }\n resolveRenameLocation(model, position, token) {\n const rename = new core_1.LanguageServer(this.reg).prepareRename({\n textDocument: { uri: model.uri.toString() },\n position: { line: position.lineNumber - 1, character: position.column - 1 }\n });\n if (rename) {\n return {\n range: new monaco.Range(rename.range.start.line + 1, rename.range.start.character + 1, rename.range.end.line + 1, rename.range.end.character + 1),\n text: rename.placeholder,\n };\n }\n throw new Error(\"Cannot be renamed\");\n }\n}\nexports.ABAPRenameProvider = ABAPRenameProvider;\n//# sourceMappingURL=abap_rename_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_rename_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_semantic_tokens_delta_provider.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_semantic_tokens_delta_provider.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPSemanticTokensDeltaProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPSemanticTokensDeltaProvider {\n constructor(reg) {\n this.reg = reg;\n }\n getLegend() {\n return core_1.LanguageServer.semanticTokensLegend();\n }\n provideDocumentRangeSemanticTokens(model, range, token) {\n const result = new core_1.LanguageServer(this.reg).semanticTokensRange({\n textDocument: { uri: model.uri.toString() },\n start: { line: range.startLineNumber, character: range.startColumn },\n end: { line: range.endLineNumber, character: range.endColumn },\n });\n const data = Uint32Array.from(result.data);\n return { data };\n }\n}\nexports.ABAPSemanticTokensDeltaProvider = ABAPSemanticTokensDeltaProvider;\n//# sourceMappingURL=abap_semantic_tokens_delta_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_semantic_tokens_delta_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_snippet_provider.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_snippet_provider.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPSnippetProvider = void 0;\nclass ABAPSnippetProvider {\n provideCompletionItems(model, position, context, token) {\n const suggestions = [\n {\n label: \"method\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Empty method implementation\",\n insertText: \"METHOD ${1:method_name}.\\r\\n\\t$0\\r\\nENDMETHOD.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"tbo\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Type definition (types begin of)\",\n insertText: \"TYPES BEGIN OF ${1:type_name},\\r\\n\\tcomponent TYPE string,\\r\\nEND OF ${1:type_name}.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"bool\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"abap_bool\",\n insertText: \"abap_bool\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"true\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"abap_true\",\n insertText: \"abap_true\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"false\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"abap_false\",\n insertText: \"abap_false\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"imp\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"importing parameter\",\n insertText: \"IMPORTING\\r\\n\\t$0\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"exp\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"exporting parameter\",\n insertText: \"EXPORTING\\r\\n\\t$0\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"cha\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"changing parameter\",\n insertText: \"CHANGING\\r\\n\\t$0\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"ret\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"returning parameter\",\n insertText: \"RETURNING VALUE(${1:name}) TYPE $0.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"trycatch\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Try/Catch block\",\n insertText: \"TRY.\\r\\n\\t${TM_SELECTED_TEXT}$0\\r\\n\\tCATCH cx_root INTO DATA(cx).\\r\\n\\t\\\" handle error\\r\\nENDTRY.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"alias\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Interface method alias\",\n insertText: \"${1:method_name} FOR ${2:if_name}~${1:method_name},\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"trt\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Type ref to\",\n insertText: \"TYPE REF TO $0\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"tt\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"General table snippet\",\n insertText: \"TYPE ${1|STANDARD,SORTED,HASHED|} TABLE OF ${2:type} WITH ${3|UNIQUE,NON-UNIQUE|} KEY ${4:table_line}.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"ttt\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Standard table definition\",\n insertText: \"TYPE STANDARD TABLE OF ${1:type} WITH KEY ${2:table_line}.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"tst\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Sorted table definition\",\n insertText: \"TYPE SORTED TABLE OF ${1:type} WITH UNIQUE KEY ${2:table_line}.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"tht\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Hashed table definition\",\n insertText: \"TYPE HASHED TABLE OF ${1:type} WITH UNIQUE KEY ${2:table_line}.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"ii\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Is initial\",\n insertText: \"IS INITIAL\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"ini\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Is not initial\",\n insertText: \"IS NOT INITIAL\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"ib\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Is bound\",\n insertText: \"IS BOUND\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"inb\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Is not bound\",\n insertText: \"IS NOT BOUND\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"loop\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Loop into data\",\n insertText: \"LOOP AT ${1:itab} INTO DATA(x).\\r\\n\\t$0\\r\\nENDLOOP.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"loopfs\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Loop into field symbol\",\n insertText: \"LOOP AT ${1:itab} ASSIGNING FIELD-SYMBOL().\\r\\n\\t$0\\r\\nENDLOOP.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"assert\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Assert (ABAP Unit)\",\n insertText: \"cl_abap_unit_assert=>$0\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"if\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"IF block\",\n insertText: \"IF ${1:log_exp}.\\r\\n\\t${TM_SELECTED_TEXT}$0\\r\\nENDIF.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"cond\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"COND expression\",\n insertText: \"COND #( WHEN ${1:log_exp}\\r\\n\\tTHEN ${2:abap_true}\\r\\n\\tELSE ${3:abap_false} )\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"forw\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"FOR expression with where clause\",\n insertText: \"FOR x IN ${1:itab} WHERE ( ${2:cond} )\\r\\n\\t( x$0 )\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"for\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"FOR expression\",\n insertText: \"FOR x IN ${1:itab}\\r\\n\\t( x$0 )\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"value\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"VALUE expression\",\n insertText: \"VALUE ${1:#}( $0 )\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"var\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Variable declaration (inline data style)\",\n insertText: \"DATA(${1:x}) = $0.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"data\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Variable declaration (legacy style)\",\n insertText: \"DATA: ${1:x} $0\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"class\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Class declaration\",\n insertText: `CLASS $\\{1:class_name\\} DEFINITION PUBLIC FINAL.\r\n\\tPUBLIC SECTION.\r\n\\t$0\r\nENDCLASS.\r\n\r\nCLASS $\\{1:class_name\\} IMPLEMENTATION.\r\nENDCLASS.\r\n `,\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"case\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Case block\",\n insertText: `CASE $\\{1:var_name\\}.\r\n\\tWHEN $\\{2:value\\}.\r\n\\t\\t$\\{TM_SELECTED_TEXT\\}$0\r\n\\tWHEN OTHERS.\r\nENDCASE.`,\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"throw\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Raise exception new\",\n insertText: \"RAISE EXCEPTION NEW ${1:cx_type}( $2 ).\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"ro\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Read-only\",\n insertText: \"READ-ONLY.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"this\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"me->\",\n insertText: \"me->\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"self\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"me->\",\n insertText: \"me->\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"gwt\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Test method template (given-when-then)\",\n insertText: `METHOD test.\r\n\\t\" given\r\n\\t$0\r\n\\t\" when\r\n\\t\" then\r\nENDMETHOD.`,\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"ctor\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Constructor definition\",\n insertText: \"METHODS constructor.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"cctor\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Class constructor definition\",\n insertText: \"CLASS-METHODS class_constructor.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: \"enum\",\n kind: monaco.languages.CompletionItemKind.Snippet,\n documentation: \"Enum definition\",\n insertText: \"TYPES:\\r\\n\\tBEGIN OF ENUM ${1:enum_name},\\r\\n\\t\\t${2:value},\\r\\n\\tEND OF ENUM ${1:enum_name}.\",\n insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n ];\n return {\n suggestions: suggestions,\n };\n }\n}\nexports.ABAPSnippetProvider = ABAPSnippetProvider;\n//# sourceMappingURL=abap_snippet_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_snippet_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/abap_symbol_provider.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/abap_symbol_provider.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ABAPSymbolProvider = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nclass ABAPSymbolProvider {\n constructor(reg) {\n this.reg = reg;\n }\n provideDocumentSymbols(model, token) {\n const ls = new core_1.LanguageServer(this.reg);\n const symbols = ls.documentSymbol({\n textDocument: { uri: model.uri.toString() },\n });\n const ret = [];\n for (const symbol of symbols) {\n ret.push({\n range: {\n startLineNumber: symbol.range.start.line + 1,\n startColumn: symbol.range.start.character + 1,\n endLineNumber: symbol.range.end.line + 1,\n endColumn: symbol.range.end.character + 1,\n },\n name: symbol.name,\n kind: symbol.kind,\n detail: symbol.detail ? symbol.detail : \"\",\n tags: [],\n selectionRange: {\n startLineNumber: symbol.selectionRange.start.line + 1,\n startColumn: symbol.selectionRange.start.character + 1,\n endLineNumber: symbol.selectionRange.end.line + 1,\n endColumn: symbol.selectionRange.end.character + 1,\n },\n });\n }\n return ret;\n }\n}\nexports.ABAPSymbolProvider = ABAPSymbolProvider;\n//# sourceMappingURL=abap_symbol_provider.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/abap_symbol_provider.js?"); + +/***/ }), + +/***/ "./node_modules/@abaplint/monaco/build/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@abaplint/monaco/build/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.updateMarkers = exports.registerABAP = void 0;\nconst core_1 = __webpack_require__(/*! @abaplint/core */ \"./node_modules/@abaplint/core/build/src/index.js\");\nconst abap_snippet_provider_1 = __webpack_require__(/*! ./abap_snippet_provider */ \"./node_modules/@abaplint/monaco/build/abap_snippet_provider.js\");\nconst abap_rename_provider_1 = __webpack_require__(/*! ./abap_rename_provider */ \"./node_modules/@abaplint/monaco/build/abap_rename_provider.js\");\nconst abap_hover_provider_1 = __webpack_require__(/*! ./abap_hover_provider */ \"./node_modules/@abaplint/monaco/build/abap_hover_provider.js\");\nconst abap_formatting_provider_1 = __webpack_require__(/*! ./abap_formatting_provider */ \"./node_modules/@abaplint/monaco/build/abap_formatting_provider.js\");\nconst abap_symbol_provider_1 = __webpack_require__(/*! ./abap_symbol_provider */ \"./node_modules/@abaplint/monaco/build/abap_symbol_provider.js\");\nconst abap_definition_provider_1 = __webpack_require__(/*! ./abap_definition_provider */ \"./node_modules/@abaplint/monaco/build/abap_definition_provider.js\");\nconst abap_document_highlight_provider_1 = __webpack_require__(/*! ./abap_document_highlight_provider */ \"./node_modules/@abaplint/monaco/build/abap_document_highlight_provider.js\");\nconst abap_code_action_provider_1 = __webpack_require__(/*! ./abap_code_action_provider */ \"./node_modules/@abaplint/monaco/build/abap_code_action_provider.js\");\nconst abap_implementation_provider_1 = __webpack_require__(/*! ./abap_implementation_provider */ \"./node_modules/@abaplint/monaco/build/abap_implementation_provider.js\");\nconst abap_references_provider_1 = __webpack_require__(/*! ./abap_references_provider */ \"./node_modules/@abaplint/monaco/build/abap_references_provider.js\");\nconst abap_semantic_tokens_delta_provider_1 = __webpack_require__(/*! ./abap_semantic_tokens_delta_provider */ \"./node_modules/@abaplint/monaco/build/abap_semantic_tokens_delta_provider.js\");\nconst vscode_languageserver_types_1 = __webpack_require__(/*! vscode-languageserver-types */ \"./node_modules/vscode-languageserver-types/lib/esm/main.js\");\nfunction registerABAP(reg) {\n monaco.languages.registerCompletionItemProvider(\"abap\", new abap_snippet_provider_1.ABAPSnippetProvider());\n monaco.languages.registerHoverProvider(\"abap\", new abap_hover_provider_1.ABAPHoverProvider(reg));\n monaco.languages.registerDocumentFormattingEditProvider(\"abap\", new abap_formatting_provider_1.ABAPFormattingProvider(reg));\n monaco.languages.registerDocumentSymbolProvider(\"abap\", new abap_symbol_provider_1.ABAPSymbolProvider(reg));\n monaco.languages.registerDefinitionProvider(\"abap\", new abap_definition_provider_1.ABAPDefinitionProvider(reg));\n monaco.languages.registerRenameProvider(\"abap\", new abap_rename_provider_1.ABAPRenameProvider(reg));\n monaco.languages.registerDocumentHighlightProvider(\"abap\", new abap_document_highlight_provider_1.ABAPDocumentHighlightProvider(reg));\n monaco.languages.registerCodeActionProvider(\"abap\", new abap_code_action_provider_1.ABAPCodeActionProvider(reg));\n monaco.languages.registerImplementationProvider(\"abap\", new abap_implementation_provider_1.ABAPImplementationProvider(reg));\n monaco.languages.registerReferenceProvider(\"abap\", new abap_references_provider_1.ABAPReferencesProvider(reg));\n monaco.languages.registerDocumentRangeSemanticTokensProvider(\"abap\", new abap_semantic_tokens_delta_provider_1.ABAPSemanticTokensDeltaProvider(reg));\n}\nexports.registerABAP = registerABAP;\nfunction updateMarkers(reg, model) {\n var _a;\n // see https://github.com/microsoft/monaco-editor/issues/1604\n reg.parse();\n const ls = new core_1.LanguageServer(reg);\n const diagnostics = ls.diagnostics({ uri: model.uri.toString() });\n const markers = [];\n for (const diagnostic of diagnostics) {\n let codeValue = diagnostic.code || \"\";\n if (typeof codeValue === \"number\") {\n codeValue = \"\";\n }\n const codeTarget = monaco.Uri.parse(((_a = diagnostic.codeDescription) === null || _a === void 0 ? void 0 : _a.href) || \"\");\n let severity = monaco.MarkerSeverity.Error;\n if (diagnostic.severity === vscode_languageserver_types_1.DiagnosticSeverity.Warning) {\n severity = monaco.MarkerSeverity.Warning;\n }\n else if (diagnostic.severity === vscode_languageserver_types_1.DiagnosticSeverity.Information) {\n severity = monaco.MarkerSeverity.Info;\n }\n markers.push({\n severity: severity,\n message: diagnostic.message,\n code: {\n value: codeValue,\n target: codeTarget,\n },\n startLineNumber: diagnostic.range.start.line + 1,\n startColumn: diagnostic.range.start.character + 1,\n endLineNumber: diagnostic.range.end.line + 1,\n endColumn: diagnostic.range.end.character + 1,\n });\n }\n monaco.editor.setModelMarkers(model, \"abaplint\", markers);\n}\nexports.updateMarkers = updateMarkers;\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@abaplint/monaco/build/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/array.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/array.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/**\r\n * The namespace for array-specific algorithms.\r\n */\r\nvar ArrayExt;\r\n(function (ArrayExt) {\r\n /**\r\n * Find the index of the first occurrence of a value in an array.\r\n *\r\n * @param array - The array-like object to search.\r\n *\r\n * @param value - The value to locate in the array. Values are\r\n * compared using strict `===` equality.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the first occurrence of the value, or `-1`\r\n * if the value is not found.\r\n *\r\n * #### Notes\r\n * If `stop < start` the search will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = ['one', 'two', 'three', 'four', 'one'];\r\n * ArrayExt.firstIndexOf(data, 'red'); // -1\r\n * ArrayExt.firstIndexOf(data, 'one'); // 0\r\n * ArrayExt.firstIndexOf(data, 'one', 1); // 4\r\n * ArrayExt.firstIndexOf(data, 'two', 2); // -1\r\n * ArrayExt.firstIndexOf(data, 'two', 2, 1); // 1\r\n * ```\r\n */\r\n function firstIndexOf(array, value, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return -1;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var span;\r\n if (stop < start) {\r\n span = (stop + 1) + (n - start);\r\n }\r\n else {\r\n span = stop - start + 1;\r\n }\r\n for (var i = 0; i < span; ++i) {\r\n var j = (start + i) % n;\r\n if (array[j] === value) {\r\n return j;\r\n }\r\n }\r\n return -1;\r\n }\r\n ArrayExt.firstIndexOf = firstIndexOf;\r\n /**\r\n * Find the index of the last occurrence of a value in an array.\r\n *\r\n * @param array - The array-like object to search.\r\n *\r\n * @param value - The value to locate in the array. Values are\r\n * compared using strict `===` equality.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the last occurrence of the value, or `-1`\r\n * if the value is not found.\r\n *\r\n * #### Notes\r\n * If `start < stop` the search will wrap at the front of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = ['one', 'two', 'three', 'four', 'one'];\r\n * ArrayExt.lastIndexOf(data, 'red'); // -1\r\n * ArrayExt.lastIndexOf(data, 'one'); // 4\r\n * ArrayExt.lastIndexOf(data, 'one', 1); // 0\r\n * ArrayExt.lastIndexOf(data, 'two', 0); // -1\r\n * ArrayExt.lastIndexOf(data, 'two', 0, 1); // 1\r\n * ```\r\n */\r\n function lastIndexOf(array, value, start, stop) {\r\n if (start === void 0) { start = -1; }\r\n if (stop === void 0) { stop = 0; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return -1;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var span;\r\n if (start < stop) {\r\n span = (start + 1) + (n - stop);\r\n }\r\n else {\r\n span = start - stop + 1;\r\n }\r\n for (var i = 0; i < span; ++i) {\r\n var j = (start - i + n) % n;\r\n if (array[j] === value) {\r\n return j;\r\n }\r\n }\r\n return -1;\r\n }\r\n ArrayExt.lastIndexOf = lastIndexOf;\r\n /**\r\n * Find the index of the first value which matches a predicate.\r\n *\r\n * @param array - The array-like object to search.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the first matching value, or `-1` if no\r\n * matching value is found.\r\n *\r\n * #### Notes\r\n * If `stop < start` the search will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * Modifying the length of the array while searching.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function isEven(value: number): boolean {\r\n * return value % 2 === 0;\r\n * }\r\n *\r\n * let data = [1, 2, 3, 4, 3, 2, 1];\r\n * ArrayExt.findFirstIndex(data, isEven); // 1\r\n * ArrayExt.findFirstIndex(data, isEven, 4); // 5\r\n * ArrayExt.findFirstIndex(data, isEven, 6); // -1\r\n * ArrayExt.findFirstIndex(data, isEven, 6, 5); // 1\r\n * ```\r\n */\r\n function findFirstIndex(array, fn, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return -1;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var span;\r\n if (stop < start) {\r\n span = (stop + 1) + (n - start);\r\n }\r\n else {\r\n span = stop - start + 1;\r\n }\r\n for (var i = 0; i < span; ++i) {\r\n var j = (start + i) % n;\r\n if (fn(array[j], j)) {\r\n return j;\r\n }\r\n }\r\n return -1;\r\n }\r\n ArrayExt.findFirstIndex = findFirstIndex;\r\n /**\r\n * Find the index of the last value which matches a predicate.\r\n *\r\n * @param object - The array-like object to search.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the last matching value, or `-1` if no\r\n * matching value is found.\r\n *\r\n * #### Notes\r\n * If `start < stop` the search will wrap at the front of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * Modifying the length of the array while searching.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function isEven(value: number): boolean {\r\n * return value % 2 === 0;\r\n * }\r\n *\r\n * let data = [1, 2, 3, 4, 3, 2, 1];\r\n * ArrayExt.findLastIndex(data, isEven); // 5\r\n * ArrayExt.findLastIndex(data, isEven, 4); // 3\r\n * ArrayExt.findLastIndex(data, isEven, 0); // -1\r\n * ArrayExt.findLastIndex(data, isEven, 0, 1); // 5\r\n * ```\r\n */\r\n function findLastIndex(array, fn, start, stop) {\r\n if (start === void 0) { start = -1; }\r\n if (stop === void 0) { stop = 0; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return -1;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var d;\r\n if (start < stop) {\r\n d = (start + 1) + (n - stop);\r\n }\r\n else {\r\n d = start - stop + 1;\r\n }\r\n for (var i = 0; i < d; ++i) {\r\n var j = (start - i + n) % n;\r\n if (fn(array[j], j)) {\r\n return j;\r\n }\r\n }\r\n return -1;\r\n }\r\n ArrayExt.findLastIndex = findLastIndex;\r\n /**\r\n * Find the first value which matches a predicate.\r\n *\r\n * @param array - The array-like object to search.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The first matching value, or `undefined` if no matching\r\n * value is found.\r\n *\r\n * #### Notes\r\n * If `stop < start` the search will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * Modifying the length of the array while searching.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function isEven(value: number): boolean {\r\n * return value % 2 === 0;\r\n * }\r\n *\r\n * let data = [1, 2, 3, 4, 3, 2, 1];\r\n * ArrayExt.findFirstValue(data, isEven); // 2\r\n * ArrayExt.findFirstValue(data, isEven, 2); // 4\r\n * ArrayExt.findFirstValue(data, isEven, 6); // undefined\r\n * ArrayExt.findFirstValue(data, isEven, 6, 5); // 2\r\n * ```\r\n */\r\n function findFirstValue(array, fn, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var index = findFirstIndex(array, fn, start, stop);\r\n return index !== -1 ? array[index] : undefined;\r\n }\r\n ArrayExt.findFirstValue = findFirstValue;\r\n /**\r\n * Find the last value which matches a predicate.\r\n *\r\n * @param object - The array-like object to search.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The last matching value, or `undefined` if no matching\r\n * value is found.\r\n *\r\n * #### Notes\r\n * If `start < stop` the search will wrap at the front of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * Modifying the length of the array while searching.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function isEven(value: number): boolean {\r\n * return value % 2 === 0;\r\n * }\r\n *\r\n * let data = [1, 2, 3, 4, 3, 2, 1];\r\n * ArrayExt.findLastValue(data, isEven); // 2\r\n * ArrayExt.findLastValue(data, isEven, 4); // 4\r\n * ArrayExt.findLastValue(data, isEven, 0); // undefined\r\n * ArrayExt.findLastValue(data, isEven, 0, 1); // 2\r\n * ```\r\n */\r\n function findLastValue(array, fn, start, stop) {\r\n if (start === void 0) { start = -1; }\r\n if (stop === void 0) { stop = 0; }\r\n var index = findLastIndex(array, fn, start, stop);\r\n return index !== -1 ? array[index] : undefined;\r\n }\r\n ArrayExt.findLastValue = findLastValue;\r\n /**\r\n * Find the index of the first element which compares `>=` to a value.\r\n *\r\n * @param array - The sorted array-like object to search.\r\n *\r\n * @param value - The value to locate in the array.\r\n *\r\n * @param fn - The 3-way comparison function to apply to the values.\r\n * It should return `< 0` if an element is less than a value, `0` if\r\n * an element is equal to a value, or `> 0` if an element is greater\r\n * than a value.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the first element which compares `>=` to the\r\n * value, or `length` if there is no such element. If the computed\r\n * index for `stop` is less than `start`, then the computed index\r\n * for `start` is returned.\r\n *\r\n * #### Notes\r\n * The array must already be sorted in ascending order according to\r\n * the comparison function.\r\n *\r\n * #### Complexity\r\n * Logarithmic.\r\n *\r\n * #### Undefined Behavior\r\n * Searching a range which is not sorted in ascending order.\r\n *\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * Modifying the length of the array while searching.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function numberCmp(a: number, b: number): number {\r\n * return a - b;\r\n * }\r\n *\r\n * let data = [0, 3, 4, 7, 7, 9];\r\n * ArrayExt.lowerBound(data, 0, numberCmp); // 0\r\n * ArrayExt.lowerBound(data, 6, numberCmp); // 3\r\n * ArrayExt.lowerBound(data, 7, numberCmp); // 3\r\n * ArrayExt.lowerBound(data, -1, numberCmp); // 0\r\n * ArrayExt.lowerBound(data, 10, numberCmp); // 6\r\n * ```\r\n */\r\n function lowerBound(array, value, fn, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return 0;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var begin = start;\r\n var span = stop - start + 1;\r\n while (span > 0) {\r\n var half = span >> 1;\r\n var middle = begin + half;\r\n if (fn(array[middle], value) < 0) {\r\n begin = middle + 1;\r\n span -= half + 1;\r\n }\r\n else {\r\n span = half;\r\n }\r\n }\r\n return begin;\r\n }\r\n ArrayExt.lowerBound = lowerBound;\r\n /**\r\n * Find the index of the first element which compares `>` than a value.\r\n *\r\n * @param array - The sorted array-like object to search.\r\n *\r\n * @param value - The value to locate in the array.\r\n *\r\n * @param fn - The 3-way comparison function to apply to the values.\r\n * It should return `< 0` if an element is less than a value, `0` if\r\n * an element is equal to a value, or `> 0` if an element is greater\r\n * than a value.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the first element which compares `>` than the\r\n * value, or `length` if there is no such element. If the computed\r\n * index for `stop` is less than `start`, then the computed index\r\n * for `start` is returned.\r\n *\r\n * #### Notes\r\n * The array must already be sorted in ascending order according to\r\n * the comparison function.\r\n *\r\n * #### Complexity\r\n * Logarithmic.\r\n *\r\n * #### Undefined Behavior\r\n * Searching a range which is not sorted in ascending order.\r\n *\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * Modifying the length of the array while searching.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function numberCmp(a: number, b: number): number {\r\n * return a - b;\r\n * }\r\n *\r\n * let data = [0, 3, 4, 7, 7, 9];\r\n * ArrayExt.upperBound(data, 0, numberCmp); // 1\r\n * ArrayExt.upperBound(data, 6, numberCmp); // 3\r\n * ArrayExt.upperBound(data, 7, numberCmp); // 5\r\n * ArrayExt.upperBound(data, -1, numberCmp); // 0\r\n * ArrayExt.upperBound(data, 10, numberCmp); // 6\r\n * ```\r\n */\r\n function upperBound(array, value, fn, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return 0;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var begin = start;\r\n var span = stop - start + 1;\r\n while (span > 0) {\r\n var half = span >> 1;\r\n var middle = begin + half;\r\n if (fn(array[middle], value) > 0) {\r\n span = half;\r\n }\r\n else {\r\n begin = middle + 1;\r\n span -= half + 1;\r\n }\r\n }\r\n return begin;\r\n }\r\n ArrayExt.upperBound = upperBound;\r\n /**\r\n * Test whether two arrays are shallowly equal.\r\n *\r\n * @param a - The first array-like object to compare.\r\n *\r\n * @param b - The second array-like object to compare.\r\n *\r\n * @param fn - The comparison function to apply to the elements. It\r\n * should return `true` if the elements are \"equal\". The default\r\n * compares elements using strict `===` equality.\r\n *\r\n * @returns Whether the two arrays are shallowly equal.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * Modifying the length of the arrays while comparing.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let d1 = [0, 3, 4, 7, 7, 9];\r\n * let d2 = [0, 3, 4, 7, 7, 9];\r\n * let d3 = [42];\r\n * ArrayExt.shallowEqual(d1, d2); // true\r\n * ArrayExt.shallowEqual(d2, d3); // false\r\n * ```\r\n */\r\n function shallowEqual(a, b, fn) {\r\n // Check for object identity first.\r\n if (a === b) {\r\n return true;\r\n }\r\n // Bail early if the lengths are different.\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n // Compare each element for equality.\r\n for (var i = 0, n = a.length; i < n; ++i) {\r\n if (fn ? !fn(a[i], b[i]) : a[i] !== b[i]) {\r\n return false;\r\n }\r\n }\r\n // The array are shallowly equal.\r\n return true;\r\n }\r\n ArrayExt.shallowEqual = shallowEqual;\r\n /**\r\n * Create a slice of an array subject to an optional step.\r\n *\r\n * @param array - The array-like object of interest.\r\n *\r\n * @param options - The options for configuring the slice.\r\n *\r\n * @returns A new array with the specified values.\r\n *\r\n * @throws An exception if the slice `step` is `0`.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start`, `stop`, or `step` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 3, 4, 7, 7, 9];\r\n * ArrayExt.slice(data); // [0, 3, 4, 7, 7, 9]\r\n * ArrayExt.slice(data, { start: 2 }); // [4, 7, 7, 9]\r\n * ArrayExt.slice(data, { start: 0, stop: 4 }); // [0, 3, 4, 7]\r\n * ArrayExt.slice(data, { step: 2 }); // [0, 4, 7]\r\n * ArrayExt.slice(data, { step: -1 }); // [9, 7, 7, 4, 3, 0]\r\n * ```\r\n */\r\n function slice(array, options) {\r\n if (options === void 0) { options = {}; }\r\n // Extract the options.\r\n var start = options.start, stop = options.stop, step = options.step;\r\n // Set up the `step` value.\r\n if (step === undefined) {\r\n step = 1;\r\n }\r\n // Validate the step size.\r\n if (step === 0) {\r\n throw new Error('Slice `step` cannot be zero.');\r\n }\r\n // Look up the length of the array.\r\n var n = array.length;\r\n // Set up the `start` value.\r\n if (start === undefined) {\r\n start = step < 0 ? n - 1 : 0;\r\n }\r\n else if (start < 0) {\r\n start = Math.max(start + n, step < 0 ? -1 : 0);\r\n }\r\n else if (start >= n) {\r\n start = step < 0 ? n - 1 : n;\r\n }\r\n // Set up the `stop` value.\r\n if (stop === undefined) {\r\n stop = step < 0 ? -1 : n;\r\n }\r\n else if (stop < 0) {\r\n stop = Math.max(stop + n, step < 0 ? -1 : 0);\r\n }\r\n else if (stop >= n) {\r\n stop = step < 0 ? n - 1 : n;\r\n }\r\n // Compute the slice length.\r\n var length;\r\n if ((step < 0 && stop >= start) || (step > 0 && start >= stop)) {\r\n length = 0;\r\n }\r\n else if (step < 0) {\r\n length = Math.floor((stop - start + 1) / step + 1);\r\n }\r\n else {\r\n length = Math.floor((stop - start - 1) / step + 1);\r\n }\r\n // Compute the sliced result.\r\n var result = [];\r\n for (var i = 0; i < length; ++i) {\r\n result[i] = array[start + i * step];\r\n }\r\n // Return the result.\r\n return result;\r\n }\r\n ArrayExt.slice = slice;\r\n /**\r\n * Move an element in an array from one index to another.\r\n *\r\n * @param array - The mutable array-like object of interest.\r\n *\r\n * @param fromIndex - The index of the element to move. Negative\r\n * values are taken as an offset from the end of the array.\r\n *\r\n * @param toIndex - The target index of the element. Negative\r\n * values are taken as an offset from the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `fromIndex` or `toIndex` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 1, 2, 3, 4];\r\n * ArrayExt.move(data, 1, 2); // [0, 2, 1, 3, 4]\r\n * ArrayExt.move(data, 4, 2); // [0, 2, 4, 1, 3]\r\n * ```\r\n */\r\n function move(array, fromIndex, toIndex) {\r\n var n = array.length;\r\n if (n <= 1) {\r\n return;\r\n }\r\n if (fromIndex < 0) {\r\n fromIndex = Math.max(0, fromIndex + n);\r\n }\r\n else {\r\n fromIndex = Math.min(fromIndex, n - 1);\r\n }\r\n if (toIndex < 0) {\r\n toIndex = Math.max(0, toIndex + n);\r\n }\r\n else {\r\n toIndex = Math.min(toIndex, n - 1);\r\n }\r\n if (fromIndex === toIndex) {\r\n return;\r\n }\r\n var value = array[fromIndex];\r\n var d = fromIndex < toIndex ? 1 : -1;\r\n for (var i = fromIndex; i !== toIndex; i += d) {\r\n array[i] = array[i + d];\r\n }\r\n array[toIndex] = value;\r\n }\r\n ArrayExt.move = move;\r\n /**\r\n * Reverse an array in-place.\r\n *\r\n * @param array - The mutable array-like object of interest.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * reversed, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * reversed, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` index which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 1, 2, 3, 4];\r\n * ArrayExt.reverse(data, 1, 3); // [0, 3, 2, 1, 4]\r\n * ArrayExt.reverse(data, 3); // [0, 3, 2, 4, 1]\r\n * ArrayExt.reverse(data); // [1, 4, 2, 3, 0]\r\n * ```\r\n */\r\n function reverse(array, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n <= 1) {\r\n return;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n while (start < stop) {\r\n var a = array[start];\r\n var b = array[stop];\r\n array[start++] = b;\r\n array[stop--] = a;\r\n }\r\n }\r\n ArrayExt.reverse = reverse;\r\n /**\r\n * Rotate the elements of an array in-place.\r\n *\r\n * @param array - The mutable array-like object of interest.\r\n *\r\n * @param delta - The amount of rotation to apply to the elements. A\r\n * positive value will rotate the elements to the left. A negative\r\n * value will rotate the elements to the right.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * rotated, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * rotated, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `delta`, `start`, or `stop` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 1, 2, 3, 4];\r\n * ArrayExt.rotate(data, 2); // [2, 3, 4, 0, 1]\r\n * ArrayExt.rotate(data, -2); // [0, 1, 2, 3, 4]\r\n * ArrayExt.rotate(data, 10); // [0, 1, 2, 3, 4]\r\n * ArrayExt.rotate(data, 9); // [4, 0, 1, 2, 3]\r\n * ArrayExt.rotate(data, 2, 1, 3); // [4, 2, 0, 1, 3]\r\n * ```\r\n */\r\n function rotate(array, delta, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n <= 1) {\r\n return;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n if (start >= stop) {\r\n return;\r\n }\r\n var length = stop - start + 1;\r\n if (delta > 0) {\r\n delta = delta % length;\r\n }\r\n else if (delta < 0) {\r\n delta = ((delta % length) + length) % length;\r\n }\r\n if (delta === 0) {\r\n return;\r\n }\r\n var pivot = start + delta;\r\n reverse(array, start, pivot - 1);\r\n reverse(array, pivot, stop);\r\n reverse(array, start, stop);\r\n }\r\n ArrayExt.rotate = rotate;\r\n /**\r\n * Fill an array with a static value.\r\n *\r\n * @param array - The mutable array-like object to fill.\r\n *\r\n * @param value - The static value to use to fill the array.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * filled, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * filled, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * #### Notes\r\n * If `stop < start` the fill will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * A `start` or `stop` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = ['one', 'two', 'three', 'four'];\r\n * ArrayExt.fill(data, 'r'); // ['r', 'r', 'r', 'r']\r\n * ArrayExt.fill(data, 'g', 1); // ['r', 'g', 'g', 'g']\r\n * ArrayExt.fill(data, 'b', 2, 3); // ['r', 'g', 'b', 'b']\r\n * ArrayExt.fill(data, 'z', 3, 1); // ['z', 'z', 'b', 'z']\r\n * ```\r\n */\r\n function fill(array, value, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var span;\r\n if (stop < start) {\r\n span = (stop + 1) + (n - start);\r\n }\r\n else {\r\n span = stop - start + 1;\r\n }\r\n for (var i = 0; i < span; ++i) {\r\n array[(start + i) % n] = value;\r\n }\r\n }\r\n ArrayExt.fill = fill;\r\n /**\r\n * Insert a value into an array at a specific index.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param index - The index at which to insert the value. Negative\r\n * values are taken as an offset from the end of the array.\r\n *\r\n * @param value - The value to set at the specified index.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * An `index` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 1, 2];\r\n * ArrayExt.insert(data, 0, -1); // [-1, 0, 1, 2]\r\n * ArrayExt.insert(data, 2, 12); // [-1, 0, 12, 1, 2]\r\n * ArrayExt.insert(data, -1, 7); // [-1, 0, 12, 1, 7, 2]\r\n * ArrayExt.insert(data, 6, 19); // [-1, 0, 12, 1, 7, 2, 19]\r\n * ```\r\n */\r\n function insert(array, index, value) {\r\n var n = array.length;\r\n if (index < 0) {\r\n index = Math.max(0, index + n);\r\n }\r\n else {\r\n index = Math.min(index, n);\r\n }\r\n for (var i = n; i > index; --i) {\r\n array[i] = array[i - 1];\r\n }\r\n array[index] = value;\r\n }\r\n ArrayExt.insert = insert;\r\n /**\r\n * Remove and return a value at a specific index in an array.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param index - The index of the value to remove. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The value at the specified index, or `undefined` if the\r\n * index is out of range.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Undefined Behavior\r\n * An `index` which is non-integral.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 12, 23, 39, 14, 12, 75];\r\n * ArrayExt.removeAt(data, 2); // 23\r\n * ArrayExt.removeAt(data, -2); // 12\r\n * ArrayExt.removeAt(data, 10); // undefined;\r\n * ```\r\n */\r\n function removeAt(array, index) {\r\n var n = array.length;\r\n if (index < 0) {\r\n index += n;\r\n }\r\n if (index < 0 || index >= n) {\r\n return undefined;\r\n }\r\n var value = array[index];\r\n for (var i = index + 1; i < n; ++i) {\r\n array[i - 1] = array[i];\r\n }\r\n array.length = n - 1;\r\n return value;\r\n }\r\n ArrayExt.removeAt = removeAt;\r\n /**\r\n * Remove the first occurrence of a value from an array.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param value - The value to remove from the array. Values are\r\n * compared using strict `===` equality.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the removed value, or `-1` if the value\r\n * is not contained in the array.\r\n *\r\n * #### Notes\r\n * If `stop < start` the search will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 12, 23, 39, 14, 12, 75];\r\n * ArrayExt.removeFirstOf(data, 12); // 1\r\n * ArrayExt.removeFirstOf(data, 17); // -1\r\n * ArrayExt.removeFirstOf(data, 39, 3); // -1\r\n * ArrayExt.removeFirstOf(data, 39, 3, 2); // 2\r\n * ```\r\n */\r\n function removeFirstOf(array, value, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var index = firstIndexOf(array, value, start, stop);\r\n if (index !== -1) {\r\n removeAt(array, index);\r\n }\r\n return index;\r\n }\r\n ArrayExt.removeFirstOf = removeFirstOf;\r\n /**\r\n * Remove the last occurrence of a value from an array.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param value - The value to remove from the array. Values are\r\n * compared using strict `===` equality.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The index of the removed value, or `-1` if the value\r\n * is not contained in the array.\r\n *\r\n * #### Notes\r\n * If `start < stop` the search will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [0, 12, 23, 39, 14, 12, 75];\r\n * ArrayExt.removeLastOf(data, 12); // 5\r\n * ArrayExt.removeLastOf(data, 17); // -1\r\n * ArrayExt.removeLastOf(data, 39, 2); // -1\r\n * ArrayExt.removeLastOf(data, 39, 2, 3); // 3\r\n * ```\r\n */\r\n function removeLastOf(array, value, start, stop) {\r\n if (start === void 0) { start = -1; }\r\n if (stop === void 0) { stop = 0; }\r\n var index = lastIndexOf(array, value, start, stop);\r\n if (index !== -1) {\r\n removeAt(array, index);\r\n }\r\n return index;\r\n }\r\n ArrayExt.removeLastOf = removeLastOf;\r\n /**\r\n * Remove all occurrences of a value from an array.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param value - The value to remove from the array. Values are\r\n * compared using strict `===` equality.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The number of elements removed from the array.\r\n *\r\n * #### Notes\r\n * If `stop < start` the search will conceptually wrap at the end of\r\n * the array, however the array will be traversed front-to-back.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * let data = [14, 12, 23, 39, 14, 12, 19, 14];\r\n * ArrayExt.removeAllOf(data, 12); // 2\r\n * ArrayExt.removeAllOf(data, 17); // 0\r\n * ArrayExt.removeAllOf(data, 14, 1, 4); // 1\r\n * ```\r\n */\r\n function removeAllOf(array, value, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return 0;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var count = 0;\r\n for (var i = 0; i < n; ++i) {\r\n if (start <= stop && (i >= start && i <= stop) && array[i] === value) {\r\n count++;\r\n }\r\n else if (stop < start && (i <= stop || i >= start) && array[i] === value) {\r\n count++;\r\n }\r\n else if (count > 0) {\r\n array[i - count] = array[i];\r\n }\r\n }\r\n if (count > 0) {\r\n array.length = n - count;\r\n }\r\n return count;\r\n }\r\n ArrayExt.removeAllOf = removeAllOf;\r\n /**\r\n * Remove the first occurrence of a value which matches a predicate.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The removed `{ index, value }`, which will be `-1` and\r\n * `undefined` if the value is not contained in the array.\r\n *\r\n * #### Notes\r\n * If `stop < start` the search will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function isEven(value: number): boolean {\r\n * return value % 2 === 0;\r\n * }\r\n *\r\n * let data = [0, 12, 23, 39, 14, 12, 75];\r\n * ArrayExt.removeFirstWhere(data, isEven); // { index: 0, value: 0 }\r\n * ArrayExt.removeFirstWhere(data, isEven, 2); // { index: 3, value: 14 }\r\n * ArrayExt.removeFirstWhere(data, isEven, 4); // { index: -1, value: undefined }\r\n * ```\r\n */\r\n function removeFirstWhere(array, fn, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var value;\r\n var index = findFirstIndex(array, fn, start, stop);\r\n if (index !== -1) {\r\n value = removeAt(array, index);\r\n }\r\n return { index: index, value: value };\r\n }\r\n ArrayExt.removeFirstWhere = removeFirstWhere;\r\n /**\r\n * Remove the last occurrence of a value which matches a predicate.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The removed `{ index, value }`, which will be `-1` and\r\n * `undefined` if the value is not contained in the array.\r\n *\r\n * #### Notes\r\n * If `start < stop` the search will wrap at the end of the array.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function isEven(value: number): boolean {\r\n * return value % 2 === 0;\r\n * }\r\n *\r\n * let data = [0, 12, 23, 39, 14, 12, 75];\r\n * ArrayExt.removeLastWhere(data, isEven); // { index: 5, value: 12 }\r\n * ArrayExt.removeLastWhere(data, isEven, 2); // { index: 1, value: 12 }\r\n * ArrayExt.removeLastWhere(data, isEven, 2, 1); // { index: -1, value: undefined }\r\n * ```\r\n */\r\n function removeLastWhere(array, fn, start, stop) {\r\n if (start === void 0) { start = -1; }\r\n if (stop === void 0) { stop = 0; }\r\n var value;\r\n var index = findLastIndex(array, fn, start, stop);\r\n if (index !== -1) {\r\n value = removeAt(array, index);\r\n }\r\n return { index: index, value: value };\r\n }\r\n ArrayExt.removeLastWhere = removeLastWhere;\r\n /**\r\n * Remove all occurrences of values which match a predicate.\r\n *\r\n * @param array - The array of interest.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @param start - The index of the first element in the range to be\r\n * searched, inclusive. The default value is `0`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @param stop - The index of the last element in the range to be\r\n * searched, inclusive. The default value is `-1`. Negative values\r\n * are taken as an offset from the end of the array.\r\n *\r\n * @returns The number of elements removed from the array.\r\n *\r\n * #### Notes\r\n * If `stop < start` the search will conceptually wrap at the end of\r\n * the array, however the array will be traversed front-to-back.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { ArrayExt } from '@phosphor/algorithm';\r\n *\r\n * function isEven(value: number): boolean {\r\n * return value % 2 === 0;\r\n * }\r\n *\r\n * function isNegative(value: number): boolean {\r\n * return value < 0;\r\n * }\r\n *\r\n * let data = [0, 12, -13, -9, 23, 39, 14, -15, 12, 75];\r\n * ArrayExt.removeAllWhere(data, isEven); // 4\r\n * ArrayExt.removeAllWhere(data, isNegative, 0, 3); // 2\r\n * ```\r\n */\r\n function removeAllWhere(array, fn, start, stop) {\r\n if (start === void 0) { start = 0; }\r\n if (stop === void 0) { stop = -1; }\r\n var n = array.length;\r\n if (n === 0) {\r\n return 0;\r\n }\r\n if (start < 0) {\r\n start = Math.max(0, start + n);\r\n }\r\n else {\r\n start = Math.min(start, n - 1);\r\n }\r\n if (stop < 0) {\r\n stop = Math.max(0, stop + n);\r\n }\r\n else {\r\n stop = Math.min(stop, n - 1);\r\n }\r\n var count = 0;\r\n for (var i = 0; i < n; ++i) {\r\n if (start <= stop && (i >= start && i <= stop) && fn(array[i], i)) {\r\n count++;\r\n }\r\n else if (stop < start && (i <= stop || i >= start) && fn(array[i], i)) {\r\n count++;\r\n }\r\n else if (count > 0) {\r\n array[i - count] = array[i];\r\n }\r\n }\r\n if (count > 0) {\r\n array.length = n - count;\r\n }\r\n return count;\r\n }\r\n ArrayExt.removeAllWhere = removeAllWhere;\r\n})(ArrayExt = exports.ArrayExt || (exports.ArrayExt = {}));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/array.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/chain.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/chain.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Chain together several iterables.\r\n *\r\n * @param objects - The iterable or array-like objects of interest.\r\n *\r\n * @returns An iterator which yields the values of the iterables\r\n * in the order in which they are supplied.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { chain, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data1 = [1, 2, 3];\r\n * let data2 = [4, 5, 6];\r\n *\r\n * let stream = chain(data1, data2);\r\n *\r\n * toArray(stream); // [1, 2, 3, 4, 5, 6]\r\n * ```\r\n */\r\nfunction chain() {\r\n var objects = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n objects[_i] = arguments[_i];\r\n }\r\n return new ChainIterator(iter_1.iter(objects.map(iter_1.iter)));\r\n}\r\nexports.chain = chain;\r\n/**\r\n * An iterator which chains together several iterators.\r\n */\r\nvar ChainIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new chain iterator.\r\n *\r\n * @param source - The iterator of iterators of interest.\r\n */\r\n function ChainIterator(source) {\r\n this._cloned = false;\r\n this._source = source;\r\n this._active = undefined;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ChainIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ChainIterator.prototype.clone = function () {\r\n var result = new ChainIterator(this._source.clone());\r\n result._active = this._active && this._active.clone();\r\n result._cloned = true;\r\n this._cloned = true;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ChainIterator.prototype.next = function () {\r\n if (this._active === undefined) {\r\n var active = this._source.next();\r\n if (active === undefined) {\r\n return undefined;\r\n }\r\n this._active = this._cloned ? active.clone() : active;\r\n }\r\n var value = this._active.next();\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n this._active = undefined;\r\n return this.next();\r\n };\r\n return ChainIterator;\r\n}());\r\nexports.ChainIterator = ChainIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/chain.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/empty.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/empty.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/**\r\n * Create an empty iterator.\r\n *\r\n * @returns A new iterator which yields nothing.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { empty, toArray } from '@phosphor/algorithm';\r\n *\r\n * let stream = empty();\r\n *\r\n * toArray(stream); // []\r\n * ```\r\n */\r\nfunction empty() {\r\n return new EmptyIterator();\r\n}\r\nexports.empty = empty;\r\n/**\r\n * An iterator which is always empty.\r\n */\r\nvar EmptyIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new empty iterator.\r\n */\r\n function EmptyIterator() {\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n EmptyIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n EmptyIterator.prototype.clone = function () {\r\n return new EmptyIterator();\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n EmptyIterator.prototype.next = function () {\r\n return undefined;\r\n };\r\n return EmptyIterator;\r\n}());\r\nexports.EmptyIterator = EmptyIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/empty.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/enumerate.js": +/*!***********************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/enumerate.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Enumerate an iterable object.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param start - The starting enum value. The default is `0`.\r\n *\r\n * @returns An iterator which yields the enumerated values.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { enumerate, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data = ['foo', 'bar', 'baz'];\r\n *\r\n * let stream = enumerate(data, 1);\r\n *\r\n * toArray(stream); // [[1, 'foo'], [2, 'bar'], [3, 'baz']]\r\n * ```\r\n */\r\nfunction enumerate(object, start) {\r\n if (start === void 0) { start = 0; }\r\n return new EnumerateIterator(iter_1.iter(object), start);\r\n}\r\nexports.enumerate = enumerate;\r\n/**\r\n * An iterator which enumerates the source values.\r\n */\r\nvar EnumerateIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new enumerate iterator.\r\n *\r\n * @param source - The iterator of values of interest.\r\n *\r\n * @param start - The starting enum value.\r\n */\r\n function EnumerateIterator(source, start) {\r\n this._source = source;\r\n this._index = start;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n EnumerateIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n EnumerateIterator.prototype.clone = function () {\r\n return new EnumerateIterator(this._source.clone(), this._index);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n EnumerateIterator.prototype.next = function () {\r\n var value = this._source.next();\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return [this._index++, value];\r\n };\r\n return EnumerateIterator;\r\n}());\r\nexports.EnumerateIterator = EnumerateIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/enumerate.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/filter.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/filter.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Filter an iterable for values which pass a test.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param fn - The predicate function to invoke for each value.\r\n *\r\n * @returns An iterator which yields the values which pass the test.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { filter, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data = [1, 2, 3, 4, 5, 6];\r\n *\r\n * let stream = filter(data, value => value % 2 === 0);\r\n *\r\n * toArray(stream); // [2, 4, 6]\r\n * ```\r\n */\r\nfunction filter(object, fn) {\r\n return new FilterIterator(iter_1.iter(object), fn);\r\n}\r\nexports.filter = filter;\r\n/**\r\n * An iterator which yields values which pass a test.\r\n */\r\nvar FilterIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new filter iterator.\r\n *\r\n * @param source - The iterator of values of interest.\r\n *\r\n * @param fn - The predicate function to invoke for each value.\r\n */\r\n function FilterIterator(source, fn) {\r\n this._index = 0;\r\n this._source = source;\r\n this._fn = fn;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n FilterIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n FilterIterator.prototype.clone = function () {\r\n var result = new FilterIterator(this._source.clone(), this._fn);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n FilterIterator.prototype.next = function () {\r\n var fn = this._fn;\r\n var it = this._source;\r\n var value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, this._index++)) {\r\n return value;\r\n }\r\n }\r\n return undefined;\r\n };\r\n return FilterIterator;\r\n}());\r\nexports.FilterIterator = FilterIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/filter.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/find.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/find.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Find the first value in an iterable which matches a predicate.\r\n *\r\n * @param object - The iterable or array-like object to search.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @returns The first matching value, or `undefined` if no matching\r\n * value is found.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { find } from '@phosphor/algorithm';\r\n *\r\n * interface IAnimal { species: string, name: string };\r\n *\r\n * function isCat(value: IAnimal): boolean {\r\n * return value.species === 'cat';\r\n * }\r\n *\r\n * let data: IAnimal[] = [\r\n * { species: 'dog', name: 'spot' },\r\n * { species: 'cat', name: 'fluffy' },\r\n * { species: 'alligator', name: 'pocho' }\r\n * ];\r\n *\r\n * find(data, isCat).name; // 'fluffy'\r\n * ```\r\n */\r\nfunction find(object, fn) {\r\n var index = 0;\r\n var it = iter_1.iter(object);\r\n var value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, index++)) {\r\n return value;\r\n }\r\n }\r\n return undefined;\r\n}\r\nexports.find = find;\r\n/**\r\n * Find the index of the first value which matches a predicate.\r\n *\r\n * @param object - The iterable or array-like object to search.\r\n *\r\n * @param fn - The predicate function to apply to the values.\r\n *\r\n * @returns The index of the first matching value, or `-1` if no\r\n * matching value is found.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { findIndex } from '@phosphor/algorithm';\r\n *\r\n * interface IAnimal { species: string, name: string };\r\n *\r\n * function isCat(value: IAnimal): boolean {\r\n * return value.species === 'cat';\r\n * }\r\n *\r\n * let data: IAnimal[] = [\r\n * { species: 'dog', name: 'spot' },\r\n * { species: 'cat', name: 'fluffy' },\r\n * { species: 'alligator', name: 'pocho' }\r\n * ];\r\n *\r\n * findIndex(data, isCat); // 1\r\n * ```\r\n */\r\nfunction findIndex(object, fn) {\r\n var index = 0;\r\n var it = iter_1.iter(object);\r\n var value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, index++)) {\r\n return index - 1;\r\n }\r\n }\r\n return -1;\r\n}\r\nexports.findIndex = findIndex;\r\n/**\r\n * Find the minimum value in an iterable.\r\n *\r\n * @param object - The iterable or array-like object to search.\r\n *\r\n * @param fn - The 3-way comparison function to apply to the values.\r\n * It should return `< 0` if the first value is less than the second.\r\n * `0` if the values are equivalent, or `> 0` if the first value is\r\n * greater than the second.\r\n *\r\n * @returns The minimum value in the iterable. If multiple values are\r\n * equivalent to the minimum, the left-most value is returned. If\r\n * the iterable is empty, this returns `undefined`.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { min } from '@phosphor/algorithm';\r\n *\r\n * function numberCmp(a: number, b: number): number {\r\n * return a - b;\r\n * }\r\n *\r\n * min([7, 4, 0, 3, 9, 4], numberCmp); // 0\r\n * ```\r\n */\r\nfunction min(object, fn) {\r\n var it = iter_1.iter(object);\r\n var value = it.next();\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n var result = value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, result) < 0) {\r\n result = value;\r\n }\r\n }\r\n return result;\r\n}\r\nexports.min = min;\r\n/**\r\n * Find the maximum value in an iterable.\r\n *\r\n * @param object - The iterable or array-like object to search.\r\n *\r\n * @param fn - The 3-way comparison function to apply to the values.\r\n * It should return `< 0` if the first value is less than the second.\r\n * `0` if the values are equivalent, or `> 0` if the first value is\r\n * greater than the second.\r\n *\r\n * @returns The maximum value in the iterable. If multiple values are\r\n * equivalent to the maximum, the left-most value is returned. If\r\n * the iterable is empty, this returns `undefined`.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { max } from '@phosphor/algorithm';\r\n *\r\n * function numberCmp(a: number, b: number): number {\r\n * return a - b;\r\n * }\r\n *\r\n * max([7, 4, 0, 3, 9, 4], numberCmp); // 9\r\n * ```\r\n */\r\nfunction max(object, fn) {\r\n var it = iter_1.iter(object);\r\n var value = it.next();\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n var result = value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, result) > 0) {\r\n result = value;\r\n }\r\n }\r\n return result;\r\n}\r\nexports.max = max;\r\n/**\r\n * Find the minimum and maximum values in an iterable.\r\n *\r\n * @param object - The iterable or array-like object to search.\r\n *\r\n * @param fn - The 3-way comparison function to apply to the values.\r\n * It should return `< 0` if the first value is less than the second.\r\n * `0` if the values are equivalent, or `> 0` if the first value is\r\n * greater than the second.\r\n *\r\n * @returns A 2-tuple of the `[min, max]` values in the iterable. If\r\n * multiple values are equivalent, the left-most values are returned.\r\n * If the iterable is empty, this returns `undefined`.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { minmax } from '@phosphor/algorithm';\r\n *\r\n * function numberCmp(a: number, b: number): number {\r\n * return a - b;\r\n * }\r\n *\r\n * minmax([7, 4, 0, 3, 9, 4], numberCmp); // [0, 9]\r\n * ```\r\n */\r\nfunction minmax(object, fn) {\r\n var it = iter_1.iter(object);\r\n var value = it.next();\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n var vmin = value;\r\n var vmax = value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, vmin) < 0) {\r\n vmin = value;\r\n }\r\n else if (fn(value, vmax) > 0) {\r\n vmax = value;\r\n }\r\n }\r\n return [vmin, vmax];\r\n}\r\nexports.minmax = minmax;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/find.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\n__export(__webpack_require__(/*! ./array */ \"./node_modules/@phosphor/algorithm/lib/array.js\"));\r\n__export(__webpack_require__(/*! ./chain */ \"./node_modules/@phosphor/algorithm/lib/chain.js\"));\r\n__export(__webpack_require__(/*! ./empty */ \"./node_modules/@phosphor/algorithm/lib/empty.js\"));\r\n__export(__webpack_require__(/*! ./enumerate */ \"./node_modules/@phosphor/algorithm/lib/enumerate.js\"));\r\n__export(__webpack_require__(/*! ./filter */ \"./node_modules/@phosphor/algorithm/lib/filter.js\"));\r\n__export(__webpack_require__(/*! ./find */ \"./node_modules/@phosphor/algorithm/lib/find.js\"));\r\n__export(__webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\"));\r\n__export(__webpack_require__(/*! ./map */ \"./node_modules/@phosphor/algorithm/lib/map.js\"));\r\n__export(__webpack_require__(/*! ./range */ \"./node_modules/@phosphor/algorithm/lib/range.js\"));\r\n__export(__webpack_require__(/*! ./reduce */ \"./node_modules/@phosphor/algorithm/lib/reduce.js\"));\r\n__export(__webpack_require__(/*! ./repeat */ \"./node_modules/@phosphor/algorithm/lib/repeat.js\"));\r\n__export(__webpack_require__(/*! ./retro */ \"./node_modules/@phosphor/algorithm/lib/retro.js\"));\r\n__export(__webpack_require__(/*! ./sort */ \"./node_modules/@phosphor/algorithm/lib/sort.js\"));\r\n__export(__webpack_require__(/*! ./stride */ \"./node_modules/@phosphor/algorithm/lib/stride.js\"));\r\n__export(__webpack_require__(/*! ./string */ \"./node_modules/@phosphor/algorithm/lib/string.js\"));\r\n__export(__webpack_require__(/*! ./take */ \"./node_modules/@phosphor/algorithm/lib/take.js\"));\r\n__export(__webpack_require__(/*! ./zip */ \"./node_modules/@phosphor/algorithm/lib/zip.js\"));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/iter.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/iter.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/**\r\n * Create an iterator for an iterable object.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @returns A new iterator for the given object.\r\n *\r\n * #### Notes\r\n * This function allows iteration algorithms to operate on user-defined\r\n * iterable types and builtin array-like objects in a uniform fashion.\r\n */\r\nfunction iter(object) {\r\n var it;\r\n if (typeof object.iter === 'function') {\r\n it = object.iter();\r\n }\r\n else {\r\n it = new ArrayIterator(object);\r\n }\r\n return it;\r\n}\r\nexports.iter = iter;\r\n/**\r\n * Create an iterator for the keys in an object.\r\n *\r\n * @param object - The object of interest.\r\n *\r\n * @returns A new iterator for the keys in the given object.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { each, keys } from '@phosphor/algorithm';\r\n *\r\n * let data = { one: 1, two: 2, three: 3 };\r\n *\r\n * each(keys(data), key => { console.log(key); }); // 'one', 'two', 'three'\r\n * ```\r\n */\r\nfunction iterKeys(object) {\r\n return new KeyIterator(object);\r\n}\r\nexports.iterKeys = iterKeys;\r\n/**\r\n * Create an iterator for the values in an object.\r\n *\r\n * @param object - The object of interest.\r\n *\r\n * @returns A new iterator for the values in the given object.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { each, values } from '@phosphor/algorithm';\r\n *\r\n * let data = { one: 1, two: 2, three: 3 };\r\n *\r\n * each(values(data), value => { console.log(value); }); // 1, 2, 3\r\n * ```\r\n */\r\nfunction iterValues(object) {\r\n return new ValueIterator(object);\r\n}\r\nexports.iterValues = iterValues;\r\n/**\r\n * Create an iterator for the items in an object.\r\n *\r\n * @param object - The object of interest.\r\n *\r\n * @returns A new iterator for the items in the given object.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { each, items } from '@phosphor/algorithm';\r\n *\r\n * let data = { one: 1, two: 2, three: 3 };\r\n *\r\n * each(items(data), value => { console.log(value); }); // ['one', 1], ['two', 2], ['three', 3]\r\n * ```\r\n */\r\nfunction iterItems(object) {\r\n return new ItemIterator(object);\r\n}\r\nexports.iterItems = iterItems;\r\n/**\r\n * Create an iterator for an iterator-like function.\r\n *\r\n * @param fn - A function which behaves like an iterator `next` method.\r\n *\r\n * @returns A new iterator for the given function.\r\n *\r\n * #### Notes\r\n * The returned iterator **cannot** be cloned.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { each, iterFn } from '@phosphor/algorithm';\r\n *\r\n * let it = iterFn((() => {\r\n * let i = 0;\r\n * return () => i > 3 ? undefined : i++;\r\n * })());\r\n *\r\n * each(it, v => { console.log(v); }); // 0, 1, 2, 3\r\n * ```\r\n */\r\nfunction iterFn(fn) {\r\n return new FnIterator(fn);\r\n}\r\nexports.iterFn = iterFn;\r\n/**\r\n * Invoke a function for each value in an iterable.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param fn - The callback function to invoke for each value.\r\n *\r\n * #### Notes\r\n * Iteration can be terminated early by returning `false` from the\r\n * callback function.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { each } from '@phosphor/algorithm';\r\n *\r\n * let data = [5, 7, 0, -2, 9];\r\n *\r\n * each(data, value => { console.log(value); });\r\n * ```\r\n */\r\nfunction each(object, fn) {\r\n var index = 0;\r\n var it = iter(object);\r\n var value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, index++) === false) {\r\n return;\r\n }\r\n }\r\n}\r\nexports.each = each;\r\n/**\r\n * Test whether all values in an iterable satisfy a predicate.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param fn - The predicate function to invoke for each value.\r\n *\r\n * @returns `true` if all values pass the test, `false` otherwise.\r\n *\r\n * #### Notes\r\n * Iteration terminates on the first `false` predicate result.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { every } from '@phosphor/algorithm';\r\n *\r\n * let data = [5, 7, 1];\r\n *\r\n * every(data, value => value % 2 === 0); // false\r\n * every(data, value => value % 2 === 1); // true\r\n * ```\r\n */\r\nfunction every(object, fn) {\r\n var index = 0;\r\n var it = iter(object);\r\n var value;\r\n while ((value = it.next()) !== undefined) {\r\n if (!fn(value, index++)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.every = every;\r\n/**\r\n * Test whether any value in an iterable satisfies a predicate.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param fn - The predicate function to invoke for each value.\r\n *\r\n * @returns `true` if any value passes the test, `false` otherwise.\r\n *\r\n * #### Notes\r\n * Iteration terminates on the first `true` predicate result.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { some } from '@phosphor/algorithm';\r\n *\r\n * let data = [5, 7, 1];\r\n *\r\n * some(data, value => value === 7); // true\r\n * some(data, value => value === 3); // false\r\n * ```\r\n */\r\nfunction some(object, fn) {\r\n var index = 0;\r\n var it = iter(object);\r\n var value;\r\n while ((value = it.next()) !== undefined) {\r\n if (fn(value, index++)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexports.some = some;\r\n/**\r\n * Create an array from an iterable of values.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @returns A new array of values from the given object.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { iter, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data = [1, 2, 3, 4, 5, 6];\r\n *\r\n * let stream = iter(data);\r\n *\r\n * toArray(stream); // [1, 2, 3, 4, 5, 6];\r\n * ```\r\n */\r\nfunction toArray(object) {\r\n var index = 0;\r\n var result = [];\r\n var it = iter(object);\r\n var value;\r\n while ((value = it.next()) !== undefined) {\r\n result[index++] = value;\r\n }\r\n return result;\r\n}\r\nexports.toArray = toArray;\r\n/**\r\n * Create an object from an iterable of key/value pairs.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @returns A new object mapping keys to values.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { toObject } from '@phosphor/algorithm';\r\n *\r\n * let data = [['one', 1], ['two', 2], ['three', 3]];\r\n *\r\n * toObject(data); // { one: 1, two: 2, three: 3 }\r\n * ```\r\n */\r\nfunction toObject(object) {\r\n var it = iter(object);\r\n var pair;\r\n var result = {};\r\n while ((pair = it.next()) !== undefined) {\r\n result[pair[0]] = pair[1];\r\n }\r\n return result;\r\n}\r\nexports.toObject = toObject;\r\n/**\r\n * An iterator for an array-like object.\r\n *\r\n * #### Notes\r\n * This iterator can be used for any builtin JS array-like object.\r\n */\r\nvar ArrayIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new array iterator.\r\n *\r\n * @param source - The array-like object of interest.\r\n */\r\n function ArrayIterator(source) {\r\n this._index = 0;\r\n this._source = source;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ArrayIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ArrayIterator.prototype.clone = function () {\r\n var result = new ArrayIterator(this._source);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ArrayIterator.prototype.next = function () {\r\n if (this._index >= this._source.length) {\r\n return undefined;\r\n }\r\n return this._source[this._index++];\r\n };\r\n return ArrayIterator;\r\n}());\r\nexports.ArrayIterator = ArrayIterator;\r\n/**\r\n * An iterator for the keys in an object.\r\n *\r\n * #### Notes\r\n * This iterator can be used for any JS object.\r\n */\r\nvar KeyIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new key iterator.\r\n *\r\n * @param source - The object of interest.\r\n *\r\n * @param keys - The keys to iterate, if known.\r\n */\r\n function KeyIterator(source, keys) {\r\n if (keys === void 0) { keys = Object.keys(source); }\r\n this._index = 0;\r\n this._source = source;\r\n this._keys = keys;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n KeyIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n KeyIterator.prototype.clone = function () {\r\n var result = new KeyIterator(this._source, this._keys);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n KeyIterator.prototype.next = function () {\r\n if (this._index >= this._keys.length) {\r\n return undefined;\r\n }\r\n var key = this._keys[this._index++];\r\n if (key in this._source) {\r\n return key;\r\n }\r\n return this.next();\r\n };\r\n return KeyIterator;\r\n}());\r\nexports.KeyIterator = KeyIterator;\r\n/**\r\n * An iterator for the values in an object.\r\n *\r\n * #### Notes\r\n * This iterator can be used for any JS object.\r\n */\r\nvar ValueIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new value iterator.\r\n *\r\n * @param source - The object of interest.\r\n *\r\n * @param keys - The keys to iterate, if known.\r\n */\r\n function ValueIterator(source, keys) {\r\n if (keys === void 0) { keys = Object.keys(source); }\r\n this._index = 0;\r\n this._source = source;\r\n this._keys = keys;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ValueIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ValueIterator.prototype.clone = function () {\r\n var result = new ValueIterator(this._source, this._keys);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ValueIterator.prototype.next = function () {\r\n if (this._index >= this._keys.length) {\r\n return undefined;\r\n }\r\n var key = this._keys[this._index++];\r\n if (key in this._source) {\r\n return this._source[key];\r\n }\r\n return this.next();\r\n };\r\n return ValueIterator;\r\n}());\r\nexports.ValueIterator = ValueIterator;\r\n/**\r\n * An iterator for the items in an object.\r\n *\r\n * #### Notes\r\n * This iterator can be used for any JS object.\r\n */\r\nvar ItemIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new item iterator.\r\n *\r\n * @param source - The object of interest.\r\n *\r\n * @param keys - The keys to iterate, if known.\r\n */\r\n function ItemIterator(source, keys) {\r\n if (keys === void 0) { keys = Object.keys(source); }\r\n this._index = 0;\r\n this._source = source;\r\n this._keys = keys;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ItemIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ItemIterator.prototype.clone = function () {\r\n var result = new ItemIterator(this._source, this._keys);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ItemIterator.prototype.next = function () {\r\n if (this._index >= this._keys.length) {\r\n return undefined;\r\n }\r\n var key = this._keys[this._index++];\r\n if (key in this._source) {\r\n return [key, this._source[key]];\r\n }\r\n return this.next();\r\n };\r\n return ItemIterator;\r\n}());\r\nexports.ItemIterator = ItemIterator;\r\n/**\r\n * An iterator for an iterator-like function.\r\n */\r\nvar FnIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new function iterator.\r\n *\r\n * @param fn - The iterator-like function of interest.\r\n */\r\n function FnIterator(fn) {\r\n this._fn = fn;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n FnIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n FnIterator.prototype.clone = function () {\r\n throw new Error('An `FnIterator` cannot be cloned.');\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n FnIterator.prototype.next = function () {\r\n return this._fn.call(undefined);\r\n };\r\n return FnIterator;\r\n}());\r\nexports.FnIterator = FnIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/iter.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/map.js": +/*!*****************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/map.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Transform the values of an iterable with a mapping function.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param fn - The mapping function to invoke for each value.\r\n *\r\n * @returns An iterator which yields the transformed values.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { map, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data = [1, 2, 3];\r\n *\r\n * let stream = map(data, value => value * 2);\r\n *\r\n * toArray(stream); // [2, 4, 6]\r\n * ```\r\n */\r\nfunction map(object, fn) {\r\n return new MapIterator(iter_1.iter(object), fn);\r\n}\r\nexports.map = map;\r\n/**\r\n * An iterator which transforms values using a mapping function.\r\n */\r\nvar MapIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new map iterator.\r\n *\r\n * @param source - The iterator of values of interest.\r\n *\r\n * @param fn - The mapping function to invoke for each value.\r\n */\r\n function MapIterator(source, fn) {\r\n this._index = 0;\r\n this._source = source;\r\n this._fn = fn;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n MapIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n MapIterator.prototype.clone = function () {\r\n var result = new MapIterator(this._source.clone(), this._fn);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n MapIterator.prototype.next = function () {\r\n var value = this._source.next();\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return this._fn.call(undefined, value, this._index++);\r\n };\r\n return MapIterator;\r\n}());\r\nexports.MapIterator = MapIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/map.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/range.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/range.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/**\r\n * Create an iterator of evenly spaced values.\r\n *\r\n * @param start - The starting value for the range, inclusive.\r\n *\r\n * @param stop - The stopping value for the range, exclusive.\r\n *\r\n * @param step - The distance between each value.\r\n *\r\n * @returns An iterator which produces evenly spaced values.\r\n *\r\n * #### Notes\r\n * In the single argument form of `range(stop)`, `start` defaults to\r\n * `0` and `step` defaults to `1`.\r\n *\r\n * In the two argument form of `range(start, stop)`, `step` defaults\r\n * to `1`.\r\n */\r\nfunction range(start, stop, step) {\r\n if (stop === undefined) {\r\n return new RangeIterator(0, start, 1);\r\n }\r\n if (step === undefined) {\r\n return new RangeIterator(start, stop, 1);\r\n }\r\n return new RangeIterator(start, stop, step);\r\n}\r\nexports.range = range;\r\n/**\r\n * An iterator which produces a range of evenly spaced values.\r\n */\r\nvar RangeIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new range iterator.\r\n *\r\n * @param start - The starting value for the range, inclusive.\r\n *\r\n * @param stop - The stopping value for the range, exclusive.\r\n *\r\n * @param step - The distance between each value.\r\n */\r\n function RangeIterator(start, stop, step) {\r\n this._index = 0;\r\n this._start = start;\r\n this._stop = stop;\r\n this._step = step;\r\n this._length = Private.rangeLength(start, stop, step);\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n RangeIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n RangeIterator.prototype.clone = function () {\r\n var result = new RangeIterator(this._start, this._stop, this._step);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n RangeIterator.prototype.next = function () {\r\n if (this._index >= this._length) {\r\n return undefined;\r\n }\r\n return this._start + this._step * this._index++;\r\n };\r\n return RangeIterator;\r\n}());\r\nexports.RangeIterator = RangeIterator;\r\n/**\r\n * The namespace for the module implementation details.\r\n */\r\nvar Private;\r\n(function (Private) {\r\n /**\r\n * Compute the effective length of a range.\r\n *\r\n * @param start - The starting value for the range, inclusive.\r\n *\r\n * @param stop - The stopping value for the range, exclusive.\r\n *\r\n * @param step - The distance between each value.\r\n *\r\n * @returns The number of steps need to traverse the range.\r\n */\r\n function rangeLength(start, stop, step) {\r\n if (step === 0) {\r\n return Infinity;\r\n }\r\n if (start > stop && step > 0) {\r\n return 0;\r\n }\r\n if (start < stop && step < 0) {\r\n return 0;\r\n }\r\n return Math.ceil((stop - start) / step);\r\n }\r\n Private.rangeLength = rangeLength;\r\n})(Private || (Private = {}));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/range.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/reduce.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/reduce.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\nfunction reduce(object, fn, initial) {\r\n // Setup the iterator and fetch the first value.\r\n var index = 0;\r\n var it = iter_1.iter(object);\r\n var first = it.next();\r\n // An empty iterator and no initial value is an error.\r\n if (first === undefined && initial === undefined) {\r\n throw new TypeError('Reduce of empty iterable with no initial value.');\r\n }\r\n // If the iterator is empty, return the initial value.\r\n if (first === undefined) {\r\n return initial;\r\n }\r\n // If the iterator has a single item and no initial value, the\r\n // reducer is not invoked and the first item is the return value.\r\n var second = it.next();\r\n if (second === undefined && initial === undefined) {\r\n return first;\r\n }\r\n // If iterator has a single item and an initial value is provided,\r\n // the reducer is invoked and that result is the return value.\r\n if (second === undefined) {\r\n return fn(initial, first, index++);\r\n }\r\n // Setup the initial accumlated value.\r\n var accumulator;\r\n if (initial === undefined) {\r\n accumulator = fn(first, second, index++);\r\n }\r\n else {\r\n accumulator = fn(fn(initial, first, index++), second, index++);\r\n }\r\n // Iterate the rest of the values, updating the accumulator.\r\n var next;\r\n while ((next = it.next()) !== undefined) {\r\n accumulator = fn(accumulator, next, index++);\r\n }\r\n // Return the final accumulated value.\r\n return accumulator;\r\n}\r\nexports.reduce = reduce;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/reduce.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/repeat.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/repeat.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/**\r\n * Create an iterator which repeats a value a number of times.\r\n *\r\n * @param value - The value to repeat.\r\n *\r\n * @param count - The number of times to repeat the value.\r\n *\r\n * @returns A new iterator which repeats the specified value.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { repeat, toArray } from '@phosphor/algorithm';\r\n *\r\n * let stream = repeat(7, 3);\r\n *\r\n * toArray(stream); // [7, 7, 7]\r\n * ```\r\n */\r\nfunction repeat(value, count) {\r\n return new RepeatIterator(value, count);\r\n}\r\nexports.repeat = repeat;\r\n/**\r\n * Create an iterator which yields a value a single time.\r\n *\r\n * @param value - The value to wrap in an iterator.\r\n *\r\n * @returns A new iterator which yields the value a single time.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { once, toArray } from '@phosphor/algorithm';\r\n *\r\n * let stream = once(7);\r\n *\r\n * toArray(stream); // [7]\r\n * ```\r\n */\r\nfunction once(value) {\r\n return new RepeatIterator(value, 1);\r\n}\r\nexports.once = once;\r\n/**\r\n * An iterator which repeats a value a specified number of times.\r\n */\r\nvar RepeatIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new repeat iterator.\r\n *\r\n * @param value - The value to repeat.\r\n *\r\n * @param count - The number of times to repeat the value.\r\n */\r\n function RepeatIterator(value, count) {\r\n this._value = value;\r\n this._count = count;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n RepeatIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n RepeatIterator.prototype.clone = function () {\r\n return new RepeatIterator(this._value, this._count);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n RepeatIterator.prototype.next = function () {\r\n if (this._count <= 0) {\r\n return undefined;\r\n }\r\n this._count--;\r\n return this._value;\r\n };\r\n return RepeatIterator;\r\n}());\r\nexports.RepeatIterator = RepeatIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/repeat.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/retro.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/retro.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/**\r\n * Create an iterator for a retroable object.\r\n *\r\n * @param object - The retroable or array-like object of interest.\r\n *\r\n * @returns An iterator which traverses the object's values in reverse.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { retro, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data = [1, 2, 3, 4, 5, 6];\r\n *\r\n * let stream = retro(data);\r\n *\r\n * toArray(stream); // [6, 5, 4, 3, 2, 1]\r\n * ```\r\n */\r\nfunction retro(object) {\r\n var it;\r\n if (typeof object.retro === 'function') {\r\n it = object.retro();\r\n }\r\n else {\r\n it = new RetroArrayIterator(object);\r\n }\r\n return it;\r\n}\r\nexports.retro = retro;\r\n/**\r\n * An iterator which traverses an array-like object in reverse.\r\n *\r\n * #### Notes\r\n * This iterator can be used for any builtin JS array-like object.\r\n */\r\nvar RetroArrayIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new retro iterator.\r\n *\r\n * @param source - The array-like object of interest.\r\n */\r\n function RetroArrayIterator(source) {\r\n this._source = source;\r\n this._index = source.length - 1;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n RetroArrayIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n RetroArrayIterator.prototype.clone = function () {\r\n var result = new RetroArrayIterator(this._source);\r\n result._index = this._index;\r\n return result;\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n RetroArrayIterator.prototype.next = function () {\r\n if (this._index < 0 || this._index >= this._source.length) {\r\n return undefined;\r\n }\r\n return this._source[this._index--];\r\n };\r\n return RetroArrayIterator;\r\n}());\r\nexports.RetroArrayIterator = RetroArrayIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/retro.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/sort.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/sort.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Topologically sort an iterable of edges.\r\n *\r\n * @param edges - The iterable or array-like object of edges to sort.\r\n * An edge is represented as a 2-tuple of `[fromNode, toNode]`.\r\n *\r\n * @returns The topologically sorted array of nodes.\r\n *\r\n * #### Notes\r\n * If a cycle is present in the graph, the cycle will be ignored and\r\n * the return value will be only approximately sorted.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { topologicSort } from '@phosphor/algorithm';\r\n *\r\n * let data = [\r\n * ['d', 'e'],\r\n * ['c', 'd'],\r\n * ['a', 'b'],\r\n * ['b', 'c']\r\n * ];\r\n *\r\n * topologicSort(data); // ['a', 'b', 'c', 'd', 'e']\r\n */\r\nfunction topologicSort(edges) {\r\n // Setup the shared sorting state.\r\n var sorted = [];\r\n var visited = new Set();\r\n var graph = new Map();\r\n // Add the edges to the graph.\r\n iter_1.each(edges, addEdge);\r\n // Visit each node in the graph.\r\n graph.forEach(function (v, k) { visit(k); });\r\n // Return the sorted results.\r\n return sorted;\r\n // Add an edge to the graph.\r\n function addEdge(edge) {\r\n var fromNode = edge[0], toNode = edge[1];\r\n var children = graph.get(toNode);\r\n if (children) {\r\n children.push(fromNode);\r\n }\r\n else {\r\n graph.set(toNode, [fromNode]);\r\n }\r\n }\r\n // Recursively visit the node.\r\n function visit(node) {\r\n if (visited.has(node)) {\r\n return;\r\n }\r\n visited.add(node);\r\n var children = graph.get(node);\r\n if (children) {\r\n children.forEach(visit);\r\n }\r\n sorted.push(node);\r\n }\r\n}\r\nexports.topologicSort = topologicSort;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/sort.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/stride.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/stride.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Iterate over an iterable using a stepped increment.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param step - The distance to step on each iteration. A value\r\n * of less than `1` will behave the same as a value of `1`.\r\n *\r\n * @returns An iterator which traverses the iterable step-wise.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { stride, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data = [1, 2, 3, 4, 5, 6];\r\n *\r\n * let stream = stride(data, 2);\r\n *\r\n * toArray(stream); // [1, 3, 5];\r\n * ```\r\n */\r\nfunction stride(object, step) {\r\n return new StrideIterator(iter_1.iter(object), step);\r\n}\r\nexports.stride = stride;\r\n/**\r\n * An iterator which traverses a source iterator step-wise.\r\n */\r\nvar StrideIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new stride iterator.\r\n *\r\n * @param source - The iterator of values of interest.\r\n *\r\n * @param step - The distance to step on each iteration. A value\r\n * of less than `1` will behave the same as a value of `1`.\r\n */\r\n function StrideIterator(source, step) {\r\n this._source = source;\r\n this._step = step;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n StrideIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n StrideIterator.prototype.clone = function () {\r\n return new StrideIterator(this._source.clone(), this._step);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n StrideIterator.prototype.next = function () {\r\n var value = this._source.next();\r\n for (var n = this._step - 1; n > 0; --n) {\r\n this._source.next();\r\n }\r\n return value;\r\n };\r\n return StrideIterator;\r\n}());\r\nexports.StrideIterator = StrideIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/stride.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/string.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/string.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/**\r\n * The namespace for string-specific algorithms.\r\n */\r\nvar StringExt;\r\n(function (StringExt) {\r\n /**\r\n * Find the indices of characters in a source text.\r\n *\r\n * @param source - The source text which should be searched.\r\n *\r\n * @param query - The characters to locate in the source text.\r\n *\r\n * @param start - The index to start the search.\r\n *\r\n * @returns The matched indices, or `null` if there is no match.\r\n *\r\n * #### Complexity\r\n * Linear on `sourceText`.\r\n *\r\n * #### Notes\r\n * In order for there to be a match, all of the characters in `query`\r\n * **must** appear in `source` in the order given by `query`.\r\n *\r\n * Characters are matched using strict `===` equality.\r\n */\r\n function findIndices(source, query, start) {\r\n if (start === void 0) { start = 0; }\r\n var indices = new Array(query.length);\r\n for (var i = 0, j = start, n = query.length; i < n; ++i, ++j) {\r\n j = source.indexOf(query[i], j);\r\n if (j === -1) {\r\n return null;\r\n }\r\n indices[i] = j;\r\n }\r\n return indices;\r\n }\r\n StringExt.findIndices = findIndices;\r\n /**\r\n * A string matcher which uses a sum-of-squares algorithm.\r\n *\r\n * @param source - The source text which should be searched.\r\n *\r\n * @param query - The characters to locate in the source text.\r\n *\r\n * @param start - The index to start the search.\r\n *\r\n * @returns The match result, or `null` if there is no match.\r\n * A lower `score` represents a stronger match.\r\n *\r\n * #### Complexity\r\n * Linear on `sourceText`.\r\n *\r\n * #### Notes\r\n * This scoring algorithm uses a sum-of-squares approach to determine\r\n * the score. In order for there to be a match, all of the characters\r\n * in `query` **must** appear in `source` in order. The index of each\r\n * matching character is squared and added to the score. This means\r\n * that early and consecutive character matches are preferred, while\r\n * late matches are heavily penalized.\r\n */\r\n function matchSumOfSquares(source, query, start) {\r\n if (start === void 0) { start = 0; }\r\n var indices = findIndices(source, query, start);\r\n if (!indices) {\r\n return null;\r\n }\r\n var score = 0;\r\n for (var i = 0, n = indices.length; i < n; ++i) {\r\n var j = indices[i] - start;\r\n score += j * j;\r\n }\r\n return { score: score, indices: indices };\r\n }\r\n StringExt.matchSumOfSquares = matchSumOfSquares;\r\n /**\r\n * A string matcher which uses a sum-of-deltas algorithm.\r\n *\r\n * @param source - The source text which should be searched.\r\n *\r\n * @param query - The characters to locate in the source text.\r\n *\r\n * @param start - The index to start the search.\r\n *\r\n * @returns The match result, or `null` if there is no match.\r\n * A lower `score` represents a stronger match.\r\n *\r\n * #### Complexity\r\n * Linear on `sourceText`.\r\n *\r\n * #### Notes\r\n * This scoring algorithm uses a sum-of-deltas approach to determine\r\n * the score. In order for there to be a match, all of the characters\r\n * in `query` **must** appear in `source` in order. The delta between\r\n * the indices are summed to create the score. This means that groups\r\n * of matched characters are preferred, while fragmented matches are\r\n * penalized.\r\n */\r\n function matchSumOfDeltas(source, query, start) {\r\n if (start === void 0) { start = 0; }\r\n var indices = findIndices(source, query, start);\r\n if (!indices) {\r\n return null;\r\n }\r\n var score = 0;\r\n var last = start - 1;\r\n for (var i = 0, n = indices.length; i < n; ++i) {\r\n var j = indices[i];\r\n score += j - last - 1;\r\n last = j;\r\n }\r\n return { score: score, indices: indices };\r\n }\r\n StringExt.matchSumOfDeltas = matchSumOfDeltas;\r\n /**\r\n * Highlight the matched characters of a source text.\r\n *\r\n * @param source - The text which should be highlighted.\r\n *\r\n * @param indices - The indices of the matched characters. They must\r\n * appear in increasing order and must be in bounds of the source.\r\n *\r\n * @param fn - The function to apply to the matched chunks.\r\n *\r\n * @returns An array of unmatched and highlighted chunks.\r\n */\r\n function highlight(source, indices, fn) {\r\n // Set up the result array.\r\n var result = [];\r\n // Set up the counter variables.\r\n var k = 0;\r\n var last = 0;\r\n var n = indices.length;\r\n // Iterator over each index.\r\n while (k < n) {\r\n // Set up the chunk indices.\r\n var i = indices[k];\r\n var j = indices[k];\r\n // Advance the right chunk index until it's non-contiguous.\r\n while (++k < n && indices[k] === j + 1) {\r\n j++;\r\n }\r\n // Extract the unmatched text.\r\n if (last < i) {\r\n result.push(source.slice(last, i));\r\n }\r\n // Extract and highlight the matched text.\r\n if (i < j + 1) {\r\n result.push(fn(source.slice(i, j + 1)));\r\n }\r\n // Update the last visited index.\r\n last = j + 1;\r\n }\r\n // Extract any remaining unmatched text.\r\n if (last < source.length) {\r\n result.push(source.slice(last));\r\n }\r\n // Return the highlighted result.\r\n return result;\r\n }\r\n StringExt.highlight = highlight;\r\n /**\r\n * A 3-way string comparison function.\r\n *\r\n * @param a - The first string of interest.\r\n *\r\n * @param b - The second string of interest.\r\n *\r\n * @returns `-1` if `a < b`, else `1` if `a > b`, else `0`.\r\n */\r\n function cmp(a, b) {\r\n return a < b ? -1 : a > b ? 1 : 0;\r\n }\r\n StringExt.cmp = cmp;\r\n})(StringExt = exports.StringExt || (exports.StringExt = {}));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/string.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/take.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/take.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Take a fixed number of items from an iterable.\r\n *\r\n * @param object - The iterable or array-like object of interest.\r\n *\r\n * @param count - The number of items to take from the iterable.\r\n *\r\n * @returns An iterator which yields the specified number of items\r\n * from the source iterable.\r\n *\r\n * #### Notes\r\n * The returned iterator will exhaust early if the source iterable\r\n * contains an insufficient number of items.\r\n */\r\nfunction take(object, count) {\r\n return new TakeIterator(iter_1.iter(object), count);\r\n}\r\nexports.take = take;\r\n/**\r\n * An iterator which takes a fixed number of items from a source.\r\n */\r\nvar TakeIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new take iterator.\r\n *\r\n * @param source - The iterator of interest.\r\n *\r\n * @param count - The number of items to take from the source.\r\n */\r\n function TakeIterator(source, count) {\r\n this._source = source;\r\n this._count = count;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n TakeIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n TakeIterator.prototype.clone = function () {\r\n return new TakeIterator(this._source.clone(), this._count);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n TakeIterator.prototype.next = function () {\r\n if (this._count <= 0) {\r\n return undefined;\r\n }\r\n var value = this._source.next();\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n this._count--;\r\n return value;\r\n };\r\n return TakeIterator;\r\n}());\r\nexports.TakeIterator = TakeIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/take.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/algorithm/lib/zip.js": +/*!*****************************************************!*\ + !*** ./node_modules/@phosphor/algorithm/lib/zip.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar iter_1 = __webpack_require__(/*! ./iter */ \"./node_modules/@phosphor/algorithm/lib/iter.js\");\r\n/**\r\n * Iterate several iterables in lockstep.\r\n *\r\n * @param objects - The iterable or array-like objects of interest.\r\n *\r\n * @returns An iterator which yields successive tuples of values where\r\n * each value is taken in turn from the provided iterables. It will\r\n * be as long as the shortest provided iterable.\r\n *\r\n * #### Example\r\n * ```typescript\r\n * import { zip, toArray } from '@phosphor/algorithm';\r\n *\r\n * let data1 = [1, 2, 3];\r\n * let data2 = [4, 5, 6];\r\n *\r\n * let stream = zip(data1, data2);\r\n *\r\n * toArray(stream); // [[1, 4], [2, 5], [3, 6]]\r\n * ```\r\n */\r\nfunction zip() {\r\n var objects = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n objects[_i] = arguments[_i];\r\n }\r\n return new ZipIterator(objects.map(iter_1.iter));\r\n}\r\nexports.zip = zip;\r\n/**\r\n * An iterator which iterates several sources in lockstep.\r\n */\r\nvar ZipIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new zip iterator.\r\n *\r\n * @param source - The iterators of interest.\r\n */\r\n function ZipIterator(source) {\r\n this._source = source;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ZipIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ZipIterator.prototype.clone = function () {\r\n return new ZipIterator(this._source.map(function (it) { return it.clone(); }));\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ZipIterator.prototype.next = function () {\r\n var result = new Array(this._source.length);\r\n for (var i = 0, n = this._source.length; i < n; ++i) {\r\n var value = this._source[i].next();\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n result[i] = value;\r\n }\r\n return result;\r\n };\r\n return ZipIterator;\r\n}());\r\nexports.ZipIterator = ZipIterator;\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/algorithm/lib/zip.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/collections/lib/bplustree.js": +/*!*************************************************************!*\ + !*** ./node_modules/@phosphor/collections/lib/bplustree.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2018, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\r\n/**\r\n * A generic B+ tree.\r\n *\r\n * #### Notes\r\n * Most operations have `O(log32 n)` or better complexity.\r\n */\r\nvar BPlusTree = /** @class */ (function () {\r\n /**\r\n * Construct a new B+ tree.\r\n *\r\n * @param cmp - The item comparison function for the tree.\r\n */\r\n function BPlusTree(cmp) {\r\n this._root = new Private.LeafNode();\r\n this.cmp = cmp;\r\n }\r\n Object.defineProperty(BPlusTree.prototype, \"isEmpty\", {\r\n /**\r\n * Whether the tree is empty.\r\n *\r\n * #### Complexity\r\n * `O(1)`\r\n */\r\n get: function () {\r\n return this._root.size === 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BPlusTree.prototype, \"size\", {\r\n /**\r\n * The size of the tree.\r\n *\r\n * #### Complexity\r\n * `O(1)`\r\n */\r\n get: function () {\r\n return this._root.size;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BPlusTree.prototype, \"first\", {\r\n /**\r\n * The first item in the tree.\r\n *\r\n * This is `undefined` if the tree is empty.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n get: function () {\r\n var node = Private.firstLeaf(this._root);\r\n return node.size > 0 ? node.items[0] : undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BPlusTree.prototype, \"last\", {\r\n /**\r\n * The last item in the tree.\r\n *\r\n * This is `undefined` if the tree is empty.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n get: function () {\r\n var node = Private.lastLeaf(this._root);\r\n return node.size > 0 ? node.items[node.size - 1] : undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Create an iterator over the items in the tree.\r\n *\r\n * @returns A new iterator starting with the first item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.iter = function () {\r\n return Private.iterItems(this._root);\r\n };\r\n /**\r\n * Create a reverse iterator over the items in the tree.\r\n *\r\n * @returns A new iterator starting with the last item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.retro = function () {\r\n return Private.retroItems(this._root);\r\n };\r\n /**\r\n * Create an iterator for a slice of items in the tree.\r\n *\r\n * @param start - The index of the first item, inclusive. This\r\n * should be `< stop`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `0`.\r\n *\r\n * @param stop - The index of the last item, exclusive. This\r\n * should be `> start`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `size`.\r\n *\r\n * @returns A new iterator starting with the specified item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.slice = function (start, stop) {\r\n return Private.sliceItems(this._root, start, stop);\r\n };\r\n /**\r\n * Create a reverse iterator for a slice of items in the tree.\r\n *\r\n * @param start - The index of the first item, inclusive. This\r\n * should be `> stop`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `size - 1`.\r\n *\r\n * @param stop - The index of the last item, exclusive. This\r\n * should be `< start`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `-size - 1`.\r\n *\r\n * @returns A new reverse iterator starting with the specified item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.retroSlice = function (start, stop) {\r\n return Private.retroSliceItems(this._root, start, stop);\r\n };\r\n /**\r\n * Get the item at a particular index.\r\n *\r\n * @param index - The index of the item of interest. Negative\r\n * values are taken as an offset from the end of the tree.\r\n *\r\n * @returns The item at the specified index, or `undefined` if\r\n * the index is out of range.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.at = function (index) {\r\n return Private.itemAt(this._root, index);\r\n };\r\n /**\r\n * Test whether the tree has an item which matches a key.\r\n *\r\n * @param key - The key of interest.\r\n *\r\n * @param cmp - A function which compares an item against the key.\r\n *\r\n * @returns `true` if the tree has an item which matches the given\r\n * key, `false` otherwise.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.has = function (key, cmp) {\r\n return Private.hasItem(this._root, key, cmp);\r\n };\r\n /**\r\n * Get the index of an item which matches a key.\r\n *\r\n * @param key - The key of interest.\r\n *\r\n * @param cmp - A function which compares an item against the key.\r\n *\r\n * @returns The index of the item which matches the given key. A\r\n * negative value means that a matching item does not exist in\r\n * the tree, but if one did it would reside at `-index - 1`.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.indexOf = function (key, cmp) {\r\n return Private.indexOf(this._root, key, cmp);\r\n };\r\n /**\r\n * Get the item which matches a key.\r\n *\r\n * @param item - The key of interest.\r\n *\r\n * @param cmp - A function which compares an item against the key.\r\n *\r\n * @returns The item which matches the given key, or `undefined` if\r\n * the tree does not have a matching item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.get = function (key, cmp) {\r\n return Private.getItem(this._root, key, cmp);\r\n };\r\n /**\r\n * Assign new items to the tree, replacing all current items.\r\n *\r\n * @param items - The items to assign to the tree.\r\n *\r\n * #### Complexity\r\n * `O(n log32 n)`\r\n */\r\n BPlusTree.prototype.assign = function (items) {\r\n this.clear();\r\n this.update(items);\r\n };\r\n /**\r\n * Insert an item into the tree.\r\n *\r\n * @param item - The item of interest.\r\n *\r\n * @returns If the given item matches an existing item in the tree,\r\n * the given item will replace it, and the existing item will be\r\n * returned. Otherwise, this method returns `undefined`.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.insert = function (item) {\r\n var existing = Private.insertItem(this._root, item, this.cmp);\r\n this._root = Private.maybeSplitRoot(this._root);\r\n return existing;\r\n };\r\n /**\r\n * Update the tree with multiple items.\r\n *\r\n * @param items - The items to insert into the tree.\r\n *\r\n * #### Complexity\r\n * `O(k log32 n)`\r\n */\r\n BPlusTree.prototype.update = function (items) {\r\n var _this = this;\r\n algorithm_1.each(items, function (item) { _this.insert(item); });\r\n };\r\n /**\r\n * Delete an item which matches a particular key.\r\n *\r\n * @param key - The key of interest.\r\n *\r\n * @param cmp - A function which compares an item against the key.\r\n *\r\n * @returns The item removed from the tree, or `undefined` if no\r\n * item matched the given key.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.delete = function (key, cmp) {\r\n var item = Private.deleteItem(this._root, key, cmp);\r\n this._root = Private.maybeExtractRoot(this._root);\r\n return item;\r\n };\r\n /**\r\n * Remove an item at a particular index.\r\n *\r\n * @param index - The index of the item to remove. Negative\r\n * values are taken as an offset from the end of the tree.\r\n *\r\n * @returns The item removed from the tree, or `undefined` if\r\n * the given index is out of range.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n BPlusTree.prototype.remove = function (index) {\r\n var item = Private.removeItem(this._root, index);\r\n this._root = Private.maybeExtractRoot(this._root);\r\n return item;\r\n };\r\n /**\r\n * Clear the contents of the tree.\r\n *\r\n * #### Complexity\r\n * `O(n)`\r\n */\r\n BPlusTree.prototype.clear = function () {\r\n Private.clear(this._root);\r\n this._root = new Private.LeafNode();\r\n };\r\n return BPlusTree;\r\n}());\r\nexports.BPlusTree = BPlusTree;\r\n/**\r\n * The namespace for the `BPlusTree` class statics.\r\n */\r\n(function (BPlusTree) {\r\n /**\r\n * Create a new B+ tree populated with the given items.\r\n *\r\n * @param items - The items to add to the tree.\r\n *\r\n * @param cmp - The item comparison function for the tree.\r\n *\r\n * @returns A new B+ tree populated with the given items.\r\n *\r\n * #### Complexity\r\n * `O(n log32 n)`\r\n */\r\n function from(items, cmp) {\r\n var tree = new BPlusTree(cmp);\r\n tree.assign(items);\r\n return tree;\r\n }\r\n BPlusTree.from = from;\r\n})(BPlusTree = exports.BPlusTree || (exports.BPlusTree = {}));\r\nexports.BPlusTree = BPlusTree;\r\n/**\r\n * The namespace for the module implementation details.\r\n */\r\nvar Private;\r\n(function (Private) {\r\n /**\r\n * A branch node in a B+ tree.\r\n */\r\n var BranchNode = /** @class */ (function () {\r\n function BranchNode() {\r\n /**\r\n * The left-most item of each child subtree.\r\n */\r\n this.items = [];\r\n /**\r\n * The cumulative sizes of each child subtree.\r\n */\r\n this.sizes = [];\r\n /**\r\n * The child nodes of this branch node.\r\n */\r\n this.children = [];\r\n }\r\n Object.defineProperty(BranchNode.prototype, \"type\", {\r\n /**\r\n * The discriminated type of the node.\r\n */\r\n get: function () {\r\n return 0 /* Branch */;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BranchNode.prototype, \"size\", {\r\n /**\r\n * The total number of items in the subtree.\r\n */\r\n get: function () {\r\n return this.sizes[this.sizes.length - 1];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BranchNode.prototype, \"width\", {\r\n /**\r\n * The tree width of the node.\r\n */\r\n get: function () {\r\n return this.children.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BranchNode;\r\n }());\r\n Private.BranchNode = BranchNode;\r\n /**\r\n * A leaf node in a B+ tree.\r\n */\r\n var LeafNode = /** @class */ (function () {\r\n function LeafNode() {\r\n /**\r\n * The next sibling leaf node of this leaf node.\r\n */\r\n this.next = null;\r\n /**\r\n * The previous sibling leaf node of this leaf node.\r\n */\r\n this.prev = null;\r\n /**\r\n * The items of the leaf.\r\n */\r\n this.items = [];\r\n }\r\n Object.defineProperty(LeafNode.prototype, \"type\", {\r\n /**\r\n * The discriminated type of the node.\r\n */\r\n get: function () {\r\n return 1 /* Leaf */;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LeafNode.prototype, \"size\", {\r\n /**\r\n * The total number of items in the leaf.\r\n */\r\n get: function () {\r\n return this.items.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LeafNode.prototype, \"width\", {\r\n /**\r\n * The tree width of the node.\r\n */\r\n get: function () {\r\n return this.items.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LeafNode;\r\n }());\r\n Private.LeafNode = LeafNode;\r\n /**\r\n * Get the first leaf node in the tree.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @returns The first leaf node in the tree.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function firstLeaf(node) {\r\n while (node.type === 0 /* Branch */) {\r\n node = node.children[0];\r\n }\r\n return node;\r\n }\r\n Private.firstLeaf = firstLeaf;\r\n /**\r\n * Get the last leaf node in the tree.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @returns The last leaf node in the tree.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function lastLeaf(node) {\r\n while (node.type === 0 /* Branch */) {\r\n node = node.children[node.children.length - 1];\r\n }\r\n return node;\r\n }\r\n Private.lastLeaf = lastLeaf;\r\n /**\r\n * Create a forward iterator for the items in the tree.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @returns A new forward iterator starting with the first item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function iterItems(node) {\r\n var leaf = firstLeaf(node);\r\n return new ForwardIterator(leaf, 0, -1);\r\n }\r\n Private.iterItems = iterItems;\r\n /**\r\n * Create a reverse iterator for the items in the tree.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @returns A new reverse iterator starting with the last item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function retroItems(node) {\r\n var leaf = lastLeaf(node);\r\n return new RetroIterator(leaf, leaf.size - 1, -1);\r\n }\r\n Private.retroItems = retroItems;\r\n /**\r\n * Create an iterator for a slice of items in the tree.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @param start - The index of the first item, inclusive. This\r\n * should be `< stop`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `0`.\r\n *\r\n * @param stop - The index of the last item, exclusive. This\r\n * should be `> start`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `size`.\r\n *\r\n * @returns A new iterator starting with the specified item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function sliceItems(node, start, stop) {\r\n // Normalize the start index.\r\n if (start === undefined) {\r\n start = 0;\r\n }\r\n else if (start < 0) {\r\n start = Math.max(0, start + node.size);\r\n }\r\n else {\r\n start = Math.min(start, node.size);\r\n }\r\n // Normalize the stop index.\r\n if (stop === undefined) {\r\n stop = node.size;\r\n }\r\n else if (stop < 0) {\r\n stop = Math.max(0, stop + node.size);\r\n }\r\n else {\r\n stop = Math.min(stop, node.size);\r\n }\r\n // Compute effective count.\r\n var count = Math.max(0, stop - start);\r\n // Bail early if there is nothing to iterate.\r\n if (count === 0) {\r\n return algorithm_1.empty();\r\n }\r\n // Find the starting leaf node and local index.\r\n while (node.type === 0 /* Branch */) {\r\n var i = findPivotIndexByIndex(node.sizes, start);\r\n if (i > 0)\r\n start -= node.sizes[i - 1];\r\n node = node.children[i];\r\n }\r\n // Return the forward iterator for the range.\r\n return new ForwardIterator(node, start, count);\r\n }\r\n Private.sliceItems = sliceItems;\r\n /**\r\n * Create a reverse iterator for a slice of items in the tree.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @param start - The index of the first item, inclusive. This\r\n * should be `> stop`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `size - 1`.\r\n *\r\n * @param stop - The index of the last item, exclusive. This\r\n * should be `< start`. Negative values are taken as an offset\r\n * from the end of the tree. The default is `-size - 1`.\r\n *\r\n * @returns A new reverse iterator starting with the specified item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function retroSliceItems(node, start, stop) {\r\n // Normalize the start index.\r\n if (start === undefined) {\r\n start = node.size - 1;\r\n }\r\n else if (start < 0) {\r\n start = Math.max(-1, start + node.size);\r\n }\r\n else {\r\n start = Math.min(start, node.size - 1);\r\n }\r\n // Normalize the stop index.\r\n if (stop === undefined) {\r\n stop = -1;\r\n }\r\n else if (stop < 0) {\r\n stop = Math.max(-1, stop + node.size);\r\n }\r\n else {\r\n stop = Math.min(stop, node.size - 1);\r\n }\r\n // Compute the effective count.\r\n var count = Math.max(0, start - stop);\r\n // Bail early if there is nothing to iterate.\r\n if (count === 0) {\r\n return algorithm_1.empty();\r\n }\r\n // Find the starting leaf node and local index.\r\n while (node.type === 0 /* Branch */) {\r\n var i = findPivotIndexByIndex(node.sizes, start);\r\n if (i > 0)\r\n start -= node.sizes[i - 1];\r\n node = node.children[i];\r\n }\r\n // Return the retro iterator for the range.\r\n return new RetroIterator(node, start, count);\r\n }\r\n Private.retroSliceItems = retroSliceItems;\r\n /**\r\n * Get the item at the specified index.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @param index - The index of the item of interest. Negative\r\n * values are taken as an offset from the end of the tree.\r\n *\r\n * @returns The item at the specified index, or `undefined` if\r\n * the index is out of range.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function itemAt(node, index) {\r\n // Wrap negative indices.\r\n if (index < 0) {\r\n index += node.size;\r\n }\r\n // Bail early if the index is out of range.\r\n if (index < 0 || index >= node.size) {\r\n return undefined;\r\n }\r\n // Find the containing leaf node and local index.\r\n while (node.type === 0 /* Branch */) {\r\n var i = findPivotIndexByIndex(node.sizes, index);\r\n if (i > 0)\r\n index -= node.sizes[i - 1];\r\n node = node.children[i];\r\n }\r\n // Return the item at the specified index.\r\n return node.items[index];\r\n }\r\n Private.itemAt = itemAt;\r\n /**\r\n * Test whether the tree contains an item which matches a key.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @param key - The key of interest.\r\n *\r\n * @param cmp - The key comparison function.\r\n *\r\n * @returns Whether the tree contains a matching item.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function hasItem(node, key, cmp) {\r\n // Find the containing leaf node.\r\n while (node.type === 0 /* Branch */) {\r\n var i_1 = findPivotIndexByKey(node.items, key, cmp);\r\n node = node.children[i_1];\r\n }\r\n // Find the key index.\r\n var i = findKeyIndex(node.items, key, cmp);\r\n // Return whether or not the node contains a matching item.\r\n return i >= 0;\r\n }\r\n Private.hasItem = hasItem;\r\n /**\r\n * Get the index of the item which matches a key.\r\n *\r\n * @param node - The node of interest.\r\n *\r\n * @param key - The key of interest.\r\n *\r\n * @param cmp - The key comparison function.\r\n *\r\n * @returns The index of the item which matches the given key. A\r\n * negative value means that a matching item does not exist in\r\n * the tree, but if one did it would reside at `-index - 1`.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function indexOf(node, key, cmp) {\r\n // Set up the global index.\r\n var index = 0;\r\n // Find the containing leaf node and global index.\r\n while (node.type === 0 /* Branch */) {\r\n var i_2 = findPivotIndexByKey(node.items, key, cmp);\r\n if (i_2 > 0)\r\n index += node.sizes[i_2 - 1];\r\n node = node.children[i_2];\r\n }\r\n // Find the key index.\r\n var i = findKeyIndex(node.items, key, cmp);\r\n // Return the final computed index.\r\n return i >= 0 ? index + i : -index + i;\r\n }\r\n Private.indexOf = indexOf;\r\n /**\r\n * Get the item for a particular key.\r\n *\r\n * @param node - The node of interest.\r\n *\r\n * @param key - The key of interest.\r\n *\r\n * @param cmp - The key comparison function.\r\n *\r\n * @returns The item for the specified key, or `undefined` if\r\n * the tree does not have a matching item for the key.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n */\r\n function getItem(node, key, cmp) {\r\n // Find the containing leaf node.\r\n while (node.type === 0 /* Branch */) {\r\n var i_3 = findPivotIndexByKey(node.items, key, cmp);\r\n node = node.children[i_3];\r\n }\r\n // Find the key index.\r\n var i = findKeyIndex(node.items, key, cmp);\r\n // Return the item for the given key.\r\n return i >= 0 ? node.items[i] : undefined;\r\n }\r\n Private.getItem = getItem;\r\n /**\r\n * Insert an item into the tree.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @param item - The item of interest.\r\n *\r\n * @param cmp - The item comparison function.\r\n *\r\n * @returns If the given item matches an existing item in the tree,\r\n * the given item will replace it, and the existing item will be\r\n * returned. Otherwise, this function returns `undefined`.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n *\r\n * #### Notes\r\n * The root may be overfull after calling this function.\r\n */\r\n function insertItem(node, item, cmp) {\r\n // Handle leaf nodes first.\r\n if (node.type === 1 /* Leaf */) {\r\n // Find the index for the given item.\r\n var i_4 = findKeyIndex(node.items, item, cmp);\r\n // Fetch the existing item and insert the new item.\r\n var existing_1;\r\n if (i_4 >= 0) {\r\n existing_1 = node.items[i_4];\r\n node.items[i_4] = item;\r\n }\r\n else {\r\n existing_1 = undefined;\r\n algorithm_1.ArrayExt.insert(node.items, -i_4 - 1, item);\r\n }\r\n // Return the existing item.\r\n return existing_1;\r\n }\r\n // Find the pivot index for the insert.\r\n var i = findPivotIndexByKey(node.items, item, cmp);\r\n // Fetch the pivot child.\r\n var child = node.children[i];\r\n // Fetch the current size of the child.\r\n var prevSize = child.size;\r\n // Recursively insert the item into the child.\r\n var existing = insertItem(child, item, cmp);\r\n // Fetch the updated size of the child.\r\n var currSize = child.size;\r\n // Update the item state of the branch.\r\n node.items[i] = child.items[0];\r\n // Bail early if the child size did not change.\r\n if (prevSize === currSize) {\r\n return existing;\r\n }\r\n // Split the child if it's overfull.\r\n if (child.width > MAX_NODE_WIDTH) {\r\n var next = splitNode(child);\r\n algorithm_1.ArrayExt.insert(node.children, i + 1, next);\r\n algorithm_1.ArrayExt.insert(node.items, i + 1, next.items[0]);\r\n }\r\n // Update the dirty sizes of the branch.\r\n updateSizes(node, i);\r\n // Return the existing item.\r\n return existing;\r\n }\r\n Private.insertItem = insertItem;\r\n /**\r\n * Delete an item in the tree.\r\n *\r\n * @param node - The node of interest.\r\n *\r\n * @param key - The key of interest.\r\n *\r\n * @param cmp - The key comparison function.\r\n *\r\n * @returns The deleted item or `undefined`.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n *\r\n * #### Notes\r\n * The root may be underfull after calling this function.\r\n */\r\n function deleteItem(node, key, cmp) {\r\n // Handle leaf nodes first.\r\n if (node.type === 1 /* Leaf */) {\r\n // Find the index for the given key.\r\n var i_5 = findKeyIndex(node.items, key, cmp);\r\n // Bail early if the item does not exist.\r\n if (i_5 < 0) {\r\n return undefined;\r\n }\r\n // Remove the item at the computed index.\r\n return algorithm_1.ArrayExt.removeAt(node.items, i_5);\r\n }\r\n // Find the pivot index for the delete.\r\n var i = findPivotIndexByKey(node.items, key, cmp);\r\n // Fetch the pivot child.\r\n var child = node.children[i];\r\n // Fetch the current size of the child.\r\n var prevSize = child.size;\r\n // Recursively remove the item from the child.\r\n var item = deleteItem(child, key, cmp);\r\n // Fetch the updated size of the child.\r\n var currSize = child.size;\r\n // Bail early if the child size did not change.\r\n if (prevSize === currSize) {\r\n return item;\r\n }\r\n // Update the item state of the branch.\r\n node.items[i] = child.items[0];\r\n // Join the child if it's underfull.\r\n if (child.width < MIN_NODE_WIDTH) {\r\n i = joinChild(node, i);\r\n }\r\n // Update the dirty sizes of the branch.\r\n updateSizes(node, i);\r\n // Return the deleted item.\r\n return item;\r\n }\r\n Private.deleteItem = deleteItem;\r\n /**\r\n * Remove an item from the tree.\r\n *\r\n * @param node - The node of interest.\r\n *\r\n * @param index - The index of interest.\r\n *\r\n * @returns The removed item or `undefined`.\r\n *\r\n * #### Complexity\r\n * `O(log32 n)`\r\n *\r\n * #### Notes\r\n * The root may be underfull after calling this function.\r\n */\r\n function removeItem(node, index) {\r\n // Wrap negative indices.\r\n if (index < 0) {\r\n index += node.size;\r\n }\r\n // Bail early if the index is out of range.\r\n if (index < 0 || index >= node.size) {\r\n return undefined;\r\n }\r\n // Handle leaf nodes first.\r\n if (node.type === 1 /* Leaf */) {\r\n return algorithm_1.ArrayExt.removeAt(node.items, index);\r\n }\r\n // Find the pivot index for the remove.\r\n var i = findPivotIndexByIndex(node.sizes, index);\r\n if (i > 0)\r\n index -= node.sizes[i];\r\n // Fetch the pivot child.\r\n var child = node.children[i];\r\n // Recursively remove the item from the child.\r\n var item = removeItem(child, index);\r\n // Update the item state of the branch.\r\n node.items[i] = child.items[0];\r\n // Join the child if it's underfull.\r\n if (child.width < MIN_NODE_WIDTH) {\r\n i = joinChild(node, i);\r\n }\r\n // Update the dirty sizes of the branch.\r\n updateSizes(node, i);\r\n // Return the removed item.\r\n return item;\r\n }\r\n Private.removeItem = removeItem;\r\n /**\r\n * Recursively clear the contents of a node.\r\n *\r\n * @param node - The node of interest.\r\n *\r\n * #### Complexity\r\n * `O(n)`\r\n */\r\n function clear(node) {\r\n if (node.type === 0 /* Branch */) {\r\n algorithm_1.each(node.children, clear);\r\n node.children.length = 0;\r\n node.sizes.length = 0;\r\n node.items.length = 0;\r\n }\r\n else {\r\n node.items.length = 0;\r\n node.next = null;\r\n node.prev = null;\r\n }\r\n }\r\n Private.clear = clear;\r\n /**\r\n * Split a root node and create a new root, if needed.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @returns The new root node.\r\n */\r\n function maybeSplitRoot(node) {\r\n // Bail early if the current root is not overfull.\r\n if (node.width <= MAX_NODE_WIDTH) {\r\n return node;\r\n }\r\n // Create a new root branch node.\r\n var root = new BranchNode();\r\n // Split the node to the right and create a new sibling.\r\n var next = splitNode(node);\r\n // Add the sizes to the root.\r\n root.sizes[0] = node.size;\r\n root.sizes[1] = node.size + next.size;\r\n // Add the children to the root.\r\n root.children[0] = node;\r\n root.children[1] = next;\r\n // Add the items to the root.\r\n root.items[0] = node.items[0];\r\n root.items[1] = next.items[0];\r\n // Return the new root node.\r\n return root;\r\n }\r\n Private.maybeSplitRoot = maybeSplitRoot;\r\n /**\r\n * Extract a single node child as a new root, if needed.\r\n *\r\n * @param node - The root node of interest.\r\n *\r\n * @returns The new root node.\r\n */\r\n function maybeExtractRoot(node) {\r\n // Bail early if the node it already a leaf.\r\n if (node.type === 1 /* Leaf */) {\r\n return node;\r\n }\r\n // Bail early if the branch has more than one child.\r\n if (node.children.length > 1) {\r\n return node;\r\n }\r\n // Extract the sole remaining child as the new root.\r\n var root = node.children.pop();\r\n // Clear the rest of the node state.\r\n clear(node);\r\n // Return the new root.\r\n return root;\r\n }\r\n Private.maybeExtractRoot = maybeExtractRoot;\r\n /**\r\n * The maximum width for a node in the tree.\r\n */\r\n var MAX_NODE_WIDTH = 32;\r\n /**\r\n * The minimum width for a node in the tree.\r\n */\r\n var MIN_NODE_WIDTH = MAX_NODE_WIDTH >> 1;\r\n /**\r\n * A forward iterator for a B+ tree.\r\n */\r\n var ForwardIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new forward iterator.\r\n *\r\n * @param node - The first leaf node in the chain.\r\n *\r\n * @param index - The local index of the first item.\r\n *\r\n * @param count - The number of items to iterate. A value `< 0`\r\n * will iterate all available items.\r\n */\r\n function ForwardIterator(node, index, count) {\r\n this._node = node;\r\n this._index = index;\r\n this._count = count;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ForwardIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ForwardIterator.prototype.clone = function () {\r\n return new ForwardIterator(this._node, this._index, this._count);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ForwardIterator.prototype.next = function () {\r\n if (this._node === null || this._count === 0) {\r\n return undefined;\r\n }\r\n if (this._index >= this._node.size) {\r\n this._node = this._node.next;\r\n this._index = 0;\r\n return this.next();\r\n }\r\n if (this._count > 0) {\r\n this._count--;\r\n }\r\n return this._node.items[this._index++];\r\n };\r\n return ForwardIterator;\r\n }());\r\n /**\r\n * A reverse iterator for a B+ tree.\r\n */\r\n var RetroIterator = /** @class */ (function () {\r\n /**\r\n * Construct a new retro iterator.\r\n *\r\n * @param node - The last leaf node in the chain.\r\n *\r\n * @param index - The local index of the last item.\r\n *\r\n * @param count - The number of items to iterate. A value `< 0`\r\n * will iterate all available items.\r\n */\r\n function RetroIterator(node, index, count) {\r\n this._node = node;\r\n this._index = index;\r\n this._count = count;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n RetroIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n RetroIterator.prototype.clone = function () {\r\n return new RetroIterator(this._node, this._index, this._count);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n RetroIterator.prototype.next = function () {\r\n if (this._node === null || this._count === 0) {\r\n return undefined;\r\n }\r\n if (this._index >= this._node.size) {\r\n this._index = this._node.size - 1;\r\n }\r\n if (this._index < 0) {\r\n this._node = this._node.prev;\r\n this._index = this._node ? this._node.size - 1 : -1;\r\n return this.next();\r\n }\r\n if (this._count > 0) {\r\n this._count--;\r\n }\r\n return this._node.items[this._index--];\r\n };\r\n return RetroIterator;\r\n }());\r\n /**\r\n * Find the pivot index for a particular local index.\r\n */\r\n function findPivotIndexByIndex(sizes, index) {\r\n var n = sizes.length;\r\n for (var i = 0; i < n; ++i) {\r\n if (sizes[i] > index) {\r\n return i;\r\n }\r\n }\r\n return n - 1;\r\n }\r\n /**\r\n * Find the pivot index for a particular key.\r\n */\r\n function findPivotIndexByKey(items, key, cmp) {\r\n var n = items.length;\r\n for (var i = 1; i < n; ++i) {\r\n if (cmp(items[i], key) > 0) {\r\n return i - 1;\r\n }\r\n }\r\n return n - 1;\r\n }\r\n /**\r\n * Find the key index for a particular key.\r\n */\r\n function findKeyIndex(items, key, cmp) {\r\n var n = items.length;\r\n for (var i = 0; i < n; ++i) {\r\n var c = cmp(items[i], key);\r\n if (c === 0) {\r\n return i;\r\n }\r\n if (c > 0) {\r\n return -i - 1;\r\n }\r\n }\r\n return -n - 1;\r\n }\r\n /**\r\n * Update the sizes of a branch node starting at the given index.\r\n */\r\n function updateSizes(node, i) {\r\n var sizes = node.sizes, children = node.children;\r\n var last = i > 0 ? sizes[i - 1] : 0;\r\n for (var n = children.length; i < n; ++i) {\r\n last = sizes[i] = last + children[i].size;\r\n }\r\n sizes.length = children.length;\r\n }\r\n /**\r\n * Split a node and return its new next sibling.\r\n *\r\n * @param node - The node of interest.\r\n *\r\n * @returns The new next sibling node.\r\n */\r\n function splitNode(node) {\r\n // Handle leaf nodes first.\r\n if (node.type === 1 /* Leaf */) {\r\n // Create the new sibling leaf node.\r\n var next_1 = new LeafNode();\r\n // Move the items to the new sibling.\r\n var v1_1 = node.items;\r\n var v2_1 = next_1.items;\r\n for (var i = MIN_NODE_WIDTH, n = v1_1.length; i < n; ++i) {\r\n v2_1.push(v1_1[i]);\r\n }\r\n v1_1.length = MIN_NODE_WIDTH;\r\n // Patch up the sibling links.\r\n if (node.next)\r\n node.next.prev = next_1;\r\n next_1.next = node.next;\r\n next_1.prev = node;\r\n node.next = next_1;\r\n // Return the new next sibling.\r\n return next_1;\r\n }\r\n // Create the new sibling branch node.\r\n var next = new BranchNode();\r\n // Move the children to the new sibling.\r\n var c1 = node.children;\r\n var c2 = next.children;\r\n for (var i = MIN_NODE_WIDTH, n = c1.length; i < n; ++i) {\r\n c2.push(c1[i]);\r\n }\r\n c1.length = MIN_NODE_WIDTH;\r\n // Move the items to the new sibling.\r\n var v1 = node.items;\r\n var v2 = next.items;\r\n for (var i = MIN_NODE_WIDTH, n = v1.length; i < n; ++i) {\r\n v2.push(v1[i]);\r\n }\r\n v1.length = MIN_NODE_WIDTH;\r\n // Update the dirty sizes of the nodes.\r\n updateSizes(node, MIN_NODE_WIDTH);\r\n updateSizes(next, 0);\r\n // Return the new next sibling.\r\n return next;\r\n }\r\n /**\r\n * Join a child node of a branch with one of its siblings.\r\n *\r\n * @param node - The branch node of interest.\r\n *\r\n * @param i - The index of the child node of interest.\r\n *\r\n * @returns The first modified index.\r\n *\r\n * #### Notes\r\n * This may cause the branch to become underfull.\r\n */\r\n function joinChild(node, i) {\r\n var _a, _b, _c, _d, _e, _f;\r\n // Fetch the child to be joined.\r\n var child = node.children[i];\r\n // Fetch the relevant sibling.\r\n var sibling = i === 0 ? node.children[i + 1] : node.children[i - 1];\r\n // Compute the flags which control the join behavior.\r\n var hasNext = i === 0;\r\n var isLeaf = child.type === 1 /* Leaf */;\r\n var hasExtra = sibling.width > MIN_NODE_WIDTH;\r\n // Join case #1: steal from next sibling leaf\r\n if (isLeaf && hasExtra && hasNext) {\r\n // Cast the children as leaves.\r\n var c = child;\r\n var s = sibling;\r\n // Steal an item.\r\n c.items.push(s.items.shift());\r\n // Update the branch items.\r\n node.items[i + 1] = s.items[0];\r\n // Return the first modified index.\r\n return i;\r\n }\r\n // Join case #2: steal from previous sibling leaf\r\n if (isLeaf && hasExtra && !hasNext) {\r\n // Cast the children as leaves.\r\n var c = child;\r\n var s = sibling;\r\n // Steal an item.\r\n c.items.unshift(s.items.pop());\r\n // Update the branch items.\r\n node.items[i] = c.items[0];\r\n // Return the first modified index.\r\n return i - 1;\r\n }\r\n // Join case #3: merge with next sibling leaf\r\n if (isLeaf && !hasExtra && hasNext) {\r\n // Cast the children as leaves.\r\n var c = child;\r\n var s = sibling;\r\n // Merge items.\r\n (_a = s.items).unshift.apply(_a, c.items);\r\n // Remove the old branch child.\r\n algorithm_1.ArrayExt.removeAt(node.children, i);\r\n // Remove the stale branch item.\r\n algorithm_1.ArrayExt.removeAt(node.items, i + 1);\r\n // Patch up the sibling links.\r\n if (c.prev)\r\n c.prev.next = s;\r\n s.prev = c.prev;\r\n // Clear the original child.\r\n clear(c);\r\n // Return the first modified index.\r\n return i;\r\n }\r\n // Join case #4: merge with previous sibling leaf\r\n if (isLeaf && !hasExtra && !hasNext) {\r\n // Cast the children as leaves.\r\n var c = child;\r\n var s = sibling;\r\n // Merge items.\r\n (_b = s.items).push.apply(_b, c.items);\r\n // Remove the old branch child.\r\n algorithm_1.ArrayExt.removeAt(node.children, i);\r\n // Remove the stale branch item.\r\n algorithm_1.ArrayExt.removeAt(node.items, i);\r\n // Patch up the sibling links.\r\n if (c.next)\r\n c.next.prev = s;\r\n s.next = c.next;\r\n // Clear the original child.\r\n clear(c);\r\n // Return the first modified index.\r\n return i - 1;\r\n }\r\n // Join case #5: steal from next sibling branch\r\n if (!isLeaf && hasExtra && hasNext) {\r\n // Cast the children to branches.\r\n var c = child;\r\n var s = sibling;\r\n // Steal a child from the next sibling.\r\n c.children.push(s.children.shift());\r\n // Steal an item from the next sibling.\r\n c.items.push(s.items.shift());\r\n // Update the branch items.\r\n node.items[i + 1] = s.items[0];\r\n // Update the sibling sizes.\r\n updateSizes(c, c.width - 1);\r\n updateSizes(s, 0);\r\n // Return the first modified index.\r\n return i;\r\n }\r\n // Join case #6: steal from previous sibling branch\r\n if (!isLeaf && hasExtra && !hasNext) {\r\n // Cast the children to branches.\r\n var c = child;\r\n var s = sibling;\r\n // Steal a child from the previous sibling.\r\n c.children.unshift(s.children.pop());\r\n // Steal an item from the previous sibling.\r\n c.items.unshift(s.items.pop());\r\n // Update the branch items.\r\n node.items[i] = c.items[0];\r\n // Update the sibling sizes.\r\n updateSizes(c, 0);\r\n updateSizes(s, s.width - 1);\r\n // Return the first modified index.\r\n return i - 1;\r\n }\r\n // Join case #7: merge with next sibling branch\r\n if (!isLeaf && !hasExtra && hasNext) {\r\n // Cast the children to branches.\r\n var c = child;\r\n var s = sibling;\r\n // Merge the children with the next sibling.\r\n (_c = s.children).unshift.apply(_c, c.children);\r\n // Merge the items with the next sibling.\r\n (_d = s.items).unshift.apply(_d, c.items);\r\n // Remove the old branch child.\r\n algorithm_1.ArrayExt.removeAt(node.children, i);\r\n // Remove the stale branch item.\r\n algorithm_1.ArrayExt.removeAt(node.items, i + 1);\r\n // Update the sibling sizes.\r\n updateSizes(s, 0);\r\n // Clear the original child but, not its children.\r\n c.children.length = 0;\r\n clear(c);\r\n // Return the first modified index.\r\n return i;\r\n }\r\n // Join case #8: merge with previous sibling branch\r\n if (!isLeaf && !hasExtra && !hasNext) {\r\n // Cast the children to branches.\r\n var c = child;\r\n var s = sibling;\r\n // Merge the children with the previous sibling.\r\n (_e = s.children).push.apply(_e, c.children);\r\n // Merge the items with the previous sibling.\r\n (_f = s.items).push.apply(_f, c.items);\r\n // Remove the old branch child.\r\n algorithm_1.ArrayExt.removeAt(node.children, i);\r\n // Remove the stale branch item.\r\n algorithm_1.ArrayExt.removeAt(node.items, i);\r\n // Update the sibling sizes.\r\n updateSizes(s, 0);\r\n // Clear the original child, but not its children.\r\n c.children.length = 0;\r\n clear(c);\r\n // Return the first modified index.\r\n return i - 1;\r\n }\r\n // One of the above cases must match.\r\n throw 'unreachable';\r\n }\r\n})(Private || (Private = {}));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/collections/lib/bplustree.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/collections/lib/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/collections/lib/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\n__export(__webpack_require__(/*! ./bplustree */ \"./node_modules/@phosphor/collections/lib/bplustree.js\"));\r\n__export(__webpack_require__(/*! ./linkedlist */ \"./node_modules/@phosphor/collections/lib/linkedlist.js\"));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/collections/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/collections/lib/linkedlist.js": +/*!**************************************************************!*\ + !*** ./node_modules/@phosphor/collections/lib/linkedlist.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\r\n/**\r\n * A generic doubly-linked list.\r\n */\r\nvar LinkedList = /** @class */ (function () {\r\n /**\r\n * Construct a new linked list.\r\n */\r\n function LinkedList() {\r\n this._first = null;\r\n this._last = null;\r\n this._size = 0;\r\n }\r\n Object.defineProperty(LinkedList.prototype, \"isEmpty\", {\r\n /**\r\n * Whether the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n get: function () {\r\n return this._size === 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinkedList.prototype, \"size\", {\r\n /**\r\n * The size of the list.\r\n *\r\n * #### Complexity\r\n * `O(1)`\r\n *\r\n * #### Notes\r\n * This is equivalent to `length`.\r\n */\r\n get: function () {\r\n return this._size;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinkedList.prototype, \"length\", {\r\n /**\r\n * The length of the list.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n *\r\n * #### Notes\r\n * This is equivalent to `size`.\r\n *\r\n * This property is deprecated.\r\n */\r\n get: function () {\r\n return this._size;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinkedList.prototype, \"first\", {\r\n /**\r\n * The first value in the list.\r\n *\r\n * This is `undefined` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n get: function () {\r\n return this._first ? this._first.value : undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinkedList.prototype, \"last\", {\r\n /**\r\n * The last value in the list.\r\n *\r\n * This is `undefined` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n get: function () {\r\n return this._last ? this._last.value : undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinkedList.prototype, \"firstNode\", {\r\n /**\r\n * The first node in the list.\r\n *\r\n * This is `null` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n get: function () {\r\n return this._first;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinkedList.prototype, \"lastNode\", {\r\n /**\r\n * The last node in the list.\r\n *\r\n * This is `null` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n get: function () {\r\n return this._last;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Create an iterator over the values in the list.\r\n *\r\n * @returns A new iterator starting with the first value.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.iter = function () {\r\n return new LinkedList.ForwardValueIterator(this._first);\r\n };\r\n /**\r\n * Create a reverse iterator over the values in the list.\r\n *\r\n * @returns A new iterator starting with the last value.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.retro = function () {\r\n return new LinkedList.RetroValueIterator(this._last);\r\n };\r\n /**\r\n * Create an iterator over the nodes in the list.\r\n *\r\n * @returns A new iterator starting with the first node.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.nodes = function () {\r\n return new LinkedList.ForwardNodeIterator(this._first);\r\n };\r\n /**\r\n * Create a reverse iterator over the nodes in the list.\r\n *\r\n * @returns A new iterator starting with the last node.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.retroNodes = function () {\r\n return new LinkedList.RetroNodeIterator(this._last);\r\n };\r\n /**\r\n * Assign new values to the list, replacing all current values.\r\n *\r\n * @param values - The values to assign to the list.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n */\r\n LinkedList.prototype.assign = function (values) {\r\n var _this = this;\r\n this.clear();\r\n algorithm_1.each(values, function (value) { _this.addLast(value); });\r\n };\r\n /**\r\n * Add a value to the end of the list.\r\n *\r\n * @param value - The value to add to the end of the list.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n *\r\n * #### Notes\r\n * This is equivalent to `addLast`.\r\n */\r\n LinkedList.prototype.push = function (value) {\r\n this.addLast(value);\r\n };\r\n /**\r\n * Remove and return the value at the end of the list.\r\n *\r\n * @returns The removed value, or `undefined` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n *\r\n * #### Notes\r\n * This is equivalent to `removeLast`.\r\n */\r\n LinkedList.prototype.pop = function () {\r\n return this.removeLast();\r\n };\r\n /**\r\n * Add a value to the beginning of the list.\r\n *\r\n * @param value - The value to add to the beginning of the list.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n *\r\n * #### Notes\r\n * This is equivalent to `addFirst`.\r\n */\r\n LinkedList.prototype.shift = function (value) {\r\n this.addFirst(value);\r\n };\r\n /**\r\n * Remove and return the value at the beginning of the list.\r\n *\r\n * @returns The removed value, or `undefined` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n *\r\n * #### Notes\r\n * This is equivalent to `removeFirst`.\r\n */\r\n LinkedList.prototype.unshift = function () {\r\n return this.removeFirst();\r\n };\r\n /**\r\n * Add a value to the beginning of the list.\r\n *\r\n * @param value - The value to add to the beginning of the list.\r\n *\r\n * @returns The list node which holds the value.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.addFirst = function (value) {\r\n var node = new Private.LinkedListNode(this, value);\r\n if (!this._first) {\r\n this._first = node;\r\n this._last = node;\r\n }\r\n else {\r\n node.next = this._first;\r\n this._first.prev = node;\r\n this._first = node;\r\n }\r\n this._size++;\r\n return node;\r\n };\r\n /**\r\n * Add a value to the end of the list.\r\n *\r\n * @param value - The value to add to the end of the list.\r\n *\r\n * @returns The list node which holds the value.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.addLast = function (value) {\r\n var node = new Private.LinkedListNode(this, value);\r\n if (!this._last) {\r\n this._first = node;\r\n this._last = node;\r\n }\r\n else {\r\n node.prev = this._last;\r\n this._last.next = node;\r\n this._last = node;\r\n }\r\n this._size++;\r\n return node;\r\n };\r\n /**\r\n * Insert a value before a specific node in the list.\r\n *\r\n * @param value - The value to insert before the reference node.\r\n *\r\n * @param ref - The reference node of interest. If this is `null`,\r\n * the value will be added to the beginning of the list.\r\n *\r\n * @returns The list node which holds the value.\r\n *\r\n * #### Notes\r\n * The reference node must be owned by the list.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.insertBefore = function (value, ref) {\r\n if (!ref || ref === this._first) {\r\n return this.addFirst(value);\r\n }\r\n if (!(ref instanceof Private.LinkedListNode) || ref.list !== this) {\r\n throw new Error('Reference node is not owned by the list.');\r\n }\r\n var node = new Private.LinkedListNode(this, value);\r\n var _ref = ref;\r\n var prev = _ref.prev;\r\n node.next = _ref;\r\n node.prev = prev;\r\n _ref.prev = node;\r\n prev.next = node;\r\n this._size++;\r\n return node;\r\n };\r\n /**\r\n * Insert a value after a specific node in the list.\r\n *\r\n * @param value - The value to insert after the reference node.\r\n *\r\n * @param ref - The reference node of interest. If this is `null`,\r\n * the value will be added to the end of the list.\r\n *\r\n * @returns The list node which holds the value.\r\n *\r\n * #### Notes\r\n * The reference node must be owned by the list.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.insertAfter = function (value, ref) {\r\n if (!ref || ref === this._last) {\r\n return this.addLast(value);\r\n }\r\n if (!(ref instanceof Private.LinkedListNode) || ref.list !== this) {\r\n throw new Error('Reference node is not owned by the list.');\r\n }\r\n var node = new Private.LinkedListNode(this, value);\r\n var _ref = ref;\r\n var next = _ref.next;\r\n node.next = next;\r\n node.prev = _ref;\r\n _ref.next = node;\r\n next.prev = node;\r\n this._size++;\r\n return node;\r\n };\r\n /**\r\n * Remove and return the value at the beginning of the list.\r\n *\r\n * @returns The removed value, or `undefined` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.removeFirst = function () {\r\n var node = this._first;\r\n if (!node) {\r\n return undefined;\r\n }\r\n if (node === this._last) {\r\n this._first = null;\r\n this._last = null;\r\n }\r\n else {\r\n this._first = node.next;\r\n this._first.prev = null;\r\n }\r\n node.list = null;\r\n node.next = null;\r\n node.prev = null;\r\n this._size--;\r\n return node.value;\r\n };\r\n /**\r\n * Remove and return the value at the end of the list.\r\n *\r\n * @returns The removed value, or `undefined` if the list is empty.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n */\r\n LinkedList.prototype.removeLast = function () {\r\n var node = this._last;\r\n if (!node) {\r\n return undefined;\r\n }\r\n if (node === this._first) {\r\n this._first = null;\r\n this._last = null;\r\n }\r\n else {\r\n this._last = node.prev;\r\n this._last.next = null;\r\n }\r\n node.list = null;\r\n node.next = null;\r\n node.prev = null;\r\n this._size--;\r\n return node.value;\r\n };\r\n /**\r\n * Remove a specific node from the list.\r\n *\r\n * @param node - The node to remove from the list.\r\n *\r\n * #### Complexity\r\n * Constant.\r\n *\r\n * #### Notes\r\n * The node must be owned by the list.\r\n */\r\n LinkedList.prototype.removeNode = function (node) {\r\n if (!(node instanceof Private.LinkedListNode) || node.list !== this) {\r\n throw new Error('Node is not owned by the list.');\r\n }\r\n var _node = node;\r\n if (_node === this._first && _node === this._last) {\r\n this._first = null;\r\n this._last = null;\r\n }\r\n else if (_node === this._first) {\r\n this._first = _node.next;\r\n this._first.prev = null;\r\n }\r\n else if (_node === this._last) {\r\n this._last = _node.prev;\r\n this._last.next = null;\r\n }\r\n else {\r\n _node.next.prev = _node.prev;\r\n _node.prev.next = _node.next;\r\n }\r\n _node.list = null;\r\n _node.next = null;\r\n _node.prev = null;\r\n this._size--;\r\n };\r\n /**\r\n * Remove all values from the list.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n */\r\n LinkedList.prototype.clear = function () {\r\n var node = this._first;\r\n while (node) {\r\n var next = node.next;\r\n node.list = null;\r\n node.prev = null;\r\n node.next = null;\r\n node = next;\r\n }\r\n this._first = null;\r\n this._last = null;\r\n this._size = 0;\r\n };\r\n return LinkedList;\r\n}());\r\nexports.LinkedList = LinkedList;\r\n/**\r\n * The namespace for the `LinkedList` class statics.\r\n */\r\n(function (LinkedList) {\r\n /**\r\n * Create a linked list from an iterable of values.\r\n *\r\n * @param values - The iterable or array-like object of interest.\r\n *\r\n * @returns A new linked list initialized with the given values.\r\n *\r\n * #### Complexity\r\n * Linear.\r\n */\r\n function from(values) {\r\n var list = new LinkedList();\r\n list.assign(values);\r\n return list;\r\n }\r\n LinkedList.from = from;\r\n /**\r\n * A forward iterator for values in a linked list.\r\n */\r\n var ForwardValueIterator = /** @class */ (function () {\r\n /**\r\n * Construct a forward value iterator.\r\n *\r\n * @param node - The first node in the list.\r\n */\r\n function ForwardValueIterator(node) {\r\n this._node = node;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ForwardValueIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ForwardValueIterator.prototype.clone = function () {\r\n return new ForwardValueIterator(this._node);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ForwardValueIterator.prototype.next = function () {\r\n if (!this._node) {\r\n return undefined;\r\n }\r\n var node = this._node;\r\n this._node = node.next;\r\n return node.value;\r\n };\r\n return ForwardValueIterator;\r\n }());\r\n LinkedList.ForwardValueIterator = ForwardValueIterator;\r\n /**\r\n * A reverse iterator for values in a linked list.\r\n */\r\n var RetroValueIterator = /** @class */ (function () {\r\n /**\r\n * Construct a retro value iterator.\r\n *\r\n * @param node - The last node in the list.\r\n */\r\n function RetroValueIterator(node) {\r\n this._node = node;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n RetroValueIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n RetroValueIterator.prototype.clone = function () {\r\n return new RetroValueIterator(this._node);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n RetroValueIterator.prototype.next = function () {\r\n if (!this._node) {\r\n return undefined;\r\n }\r\n var node = this._node;\r\n this._node = node.prev;\r\n return node.value;\r\n };\r\n return RetroValueIterator;\r\n }());\r\n LinkedList.RetroValueIterator = RetroValueIterator;\r\n /**\r\n * A forward iterator for nodes in a linked list.\r\n */\r\n var ForwardNodeIterator = /** @class */ (function () {\r\n /**\r\n * Construct a forward node iterator.\r\n *\r\n * @param node - The first node in the list.\r\n */\r\n function ForwardNodeIterator(node) {\r\n this._node = node;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n ForwardNodeIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n ForwardNodeIterator.prototype.clone = function () {\r\n return new ForwardNodeIterator(this._node);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n ForwardNodeIterator.prototype.next = function () {\r\n if (!this._node) {\r\n return undefined;\r\n }\r\n var node = this._node;\r\n this._node = node.next;\r\n return node;\r\n };\r\n return ForwardNodeIterator;\r\n }());\r\n LinkedList.ForwardNodeIterator = ForwardNodeIterator;\r\n /**\r\n * A reverse iterator for nodes in a linked list.\r\n */\r\n var RetroNodeIterator = /** @class */ (function () {\r\n /**\r\n * Construct a retro node iterator.\r\n *\r\n * @param node - The last node in the list.\r\n */\r\n function RetroNodeIterator(node) {\r\n this._node = node;\r\n }\r\n /**\r\n * Get an iterator over the object's values.\r\n *\r\n * @returns An iterator which yields the object's values.\r\n */\r\n RetroNodeIterator.prototype.iter = function () {\r\n return this;\r\n };\r\n /**\r\n * Create an independent clone of the iterator.\r\n *\r\n * @returns A new independent clone of the iterator.\r\n */\r\n RetroNodeIterator.prototype.clone = function () {\r\n return new RetroNodeIterator(this._node);\r\n };\r\n /**\r\n * Get the next value from the iterator.\r\n *\r\n * @returns The next value from the iterator, or `undefined`.\r\n */\r\n RetroNodeIterator.prototype.next = function () {\r\n if (!this._node) {\r\n return undefined;\r\n }\r\n var node = this._node;\r\n this._node = node.prev;\r\n return node;\r\n };\r\n return RetroNodeIterator;\r\n }());\r\n LinkedList.RetroNodeIterator = RetroNodeIterator;\r\n})(LinkedList = exports.LinkedList || (exports.LinkedList = {}));\r\nexports.LinkedList = LinkedList;\r\n/**\r\n * The namespace for the module implementation details.\r\n */\r\nvar Private;\r\n(function (Private) {\r\n /**\r\n * The internal linked list node implementation.\r\n */\r\n var LinkedListNode = /** @class */ (function () {\r\n /**\r\n * Construct a new linked list node.\r\n *\r\n * @param list - The list which owns the node.\r\n *\r\n * @param value - The value for the link.\r\n */\r\n function LinkedListNode(list, value) {\r\n /**\r\n * The linked list which created and owns the node.\r\n */\r\n this.list = null;\r\n /**\r\n * The next node in the list.\r\n */\r\n this.next = null;\r\n /**\r\n * The previous node in the list.\r\n */\r\n this.prev = null;\r\n this.list = list;\r\n this.value = value;\r\n }\r\n return LinkedListNode;\r\n }());\r\n Private.LinkedListNode = LinkedListNode;\r\n})(Private || (Private = {}));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/collections/lib/linkedlist.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/commands/lib/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/commands/lib/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar coreutils_1 = __webpack_require__(/*! @phosphor/coreutils */ \"./node_modules/@phosphor/coreutils/lib/index.js\");\nvar disposable_1 = __webpack_require__(/*! @phosphor/disposable */ \"./node_modules/@phosphor/disposable/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar keyboard_1 = __webpack_require__(/*! @phosphor/keyboard */ \"./node_modules/@phosphor/keyboard/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\n/**\n * An object which manages a collection of commands.\n *\n * #### Notes\n * A command registry can be used to populate a variety of action-based\n * widgets, such as command palettes, menus, and toolbars.\n */\nvar CommandRegistry = /** @class */ (function () {\n /**\n * Construct a new command registry.\n */\n function CommandRegistry() {\n this._timerID = 0;\n this._replaying = false;\n this._keystrokes = [];\n this._keydownEvents = [];\n this._keyBindings = [];\n this._exactKeyMatch = null;\n this._commands = Object.create(null);\n this._commandChanged = new signaling_1.Signal(this);\n this._commandExecuted = new signaling_1.Signal(this);\n this._keyBindingChanged = new signaling_1.Signal(this);\n }\n Object.defineProperty(CommandRegistry.prototype, \"commandChanged\", {\n /**\n * A signal emitted when a command has changed.\n *\n * #### Notes\n * This signal is useful for visual representations of commands which\n * need to refresh when the state of a relevant command has changed.\n */\n get: function () {\n return this._commandChanged;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandRegistry.prototype, \"commandExecuted\", {\n /**\n * A signal emitted when a command has executed.\n *\n * #### Notes\n * Care should be taken when consuming this signal. It is intended to\n * be used largely for debugging and logging purposes. It should not\n * be (ab)used for general purpose spying on command execution.\n */\n get: function () {\n return this._commandExecuted;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandRegistry.prototype, \"keyBindingChanged\", {\n /**\n * A signal emitted when a key binding is changed.\n */\n get: function () {\n return this._keyBindingChanged;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandRegistry.prototype, \"keyBindings\", {\n /**\n * A read-only array of the key bindings in the registry.\n */\n get: function () {\n return this._keyBindings;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * List the ids of the registered commands.\n *\n * @returns A new array of the registered command ids.\n */\n CommandRegistry.prototype.listCommands = function () {\n return Object.keys(this._commands);\n };\n /**\n * Test whether a specific command is registered.\n *\n * @param id - The id of the command of interest.\n *\n * @returns `true` if the command is registered, `false` otherwise.\n */\n CommandRegistry.prototype.hasCommand = function (id) {\n return id in this._commands;\n };\n /**\n * Add a command to the registry.\n *\n * @param id - The unique id of the command.\n *\n * @param options - The options for the command.\n *\n * @returns A disposable which will remove the command.\n *\n * @throws An error if the given `id` is already registered.\n */\n CommandRegistry.prototype.addCommand = function (id, options) {\n var _this = this;\n // Throw an error if the id is already registered.\n if (id in this._commands) {\n throw new Error(\"Command '\" + id + \"' already registered.\");\n }\n // Add the command to the registry.\n this._commands[id] = Private.createCommand(options);\n // Emit the `commandChanged` signal.\n this._commandChanged.emit({ id: id, type: 'added' });\n // Return a disposable which will remove the command.\n return new disposable_1.DisposableDelegate(function () {\n // Remove the command from the registry.\n delete _this._commands[id];\n // Emit the `commandChanged` signal.\n _this._commandChanged.emit({ id: id, type: 'removed' });\n });\n };\n /**\n * Notify listeners that the state of a command has changed.\n *\n * @param id - The id of the command which has changed. If more than\n * one command has changed, this argument should be omitted.\n *\n * @throws An error if the given `id` is not registered.\n *\n * #### Notes\n * This method should be called by the command author whenever the\n * application state changes such that the results of the command\n * metadata functions may have changed.\n *\n * This will cause the `commandChanged` signal to be emitted.\n */\n CommandRegistry.prototype.notifyCommandChanged = function (id) {\n if (id !== undefined && !(id in this._commands)) {\n throw new Error(\"Command '\" + id + \"' is not registered.\");\n }\n this._commandChanged.emit({ id: id, type: id ? 'changed' : 'many-changed' });\n };\n /**\n * Get the display label for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The display label for the command, or an empty string\n * if the command is not registered.\n */\n CommandRegistry.prototype.label = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.label.call(undefined, args) : '';\n };\n /**\n * Get the mnemonic index for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The mnemonic index for the command, or `-1` if the\n * command is not registered.\n */\n CommandRegistry.prototype.mnemonic = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.mnemonic.call(undefined, args) : -1;\n };\n /**\n * @deprecated Use `iconClass()` instead.\n */\n CommandRegistry.prototype.icon = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n return this.iconClass(id, args);\n };\n /**\n * Get the icon class for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The icon class for the command, or an empty string if\n * the command is not registered.\n */\n CommandRegistry.prototype.iconClass = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.iconClass.call(undefined, args) : '';\n };\n /**\n * Get the icon label for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The icon label for the command, or an empty string if\n * the command is not registered.\n */\n CommandRegistry.prototype.iconLabel = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.iconLabel.call(undefined, args) : '';\n };\n /**\n * Get the short form caption for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The caption for the command, or an empty string if the\n * command is not registered.\n */\n CommandRegistry.prototype.caption = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.caption.call(undefined, args) : '';\n };\n /**\n * Get the usage help text for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The usage text for the command, or an empty string if\n * the command is not registered.\n */\n CommandRegistry.prototype.usage = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.usage.call(undefined, args) : '';\n };\n /**\n * Get the extra class name for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The class name for the command, or an empty string if\n * the command is not registered.\n */\n CommandRegistry.prototype.className = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.className.call(undefined, args) : '';\n };\n /**\n * Get the dataset for a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns The dataset for the command, or an empty dataset if\n * the command is not registered.\n */\n CommandRegistry.prototype.dataset = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.dataset.call(undefined, args) : {};\n };\n /**\n * Test whether a specific command is enabled.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns A boolean indicating whether the command is enabled,\n * or `false` if the command is not registered.\n */\n CommandRegistry.prototype.isEnabled = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.isEnabled.call(undefined, args) : false;\n };\n /**\n * Test whether a specific command is toggled.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns A boolean indicating whether the command is toggled,\n * or `false` if the command is not registered.\n */\n CommandRegistry.prototype.isToggled = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.isToggled.call(undefined, args) : false;\n };\n /**\n * Test whether a specific command is visible.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns A boolean indicating whether the command is visible,\n * or `false` if the command is not registered.\n */\n CommandRegistry.prototype.isVisible = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n var cmd = this._commands[id];\n return cmd ? cmd.isVisible.call(undefined, args) : false;\n };\n /**\n * Execute a specific command.\n *\n * @param id - The id of the command of interest.\n *\n * @param args - The arguments for the command.\n *\n * @returns A promise which resolves with the result of the command.\n *\n * #### Notes\n * The promise will reject if the command throws an exception,\n * or if the command is not registered.\n */\n CommandRegistry.prototype.execute = function (id, args) {\n if (args === void 0) { args = coreutils_1.JSONExt.emptyObject; }\n // Reject if the command is not registered.\n var cmd = this._commands[id];\n if (!cmd) {\n return Promise.reject(new Error(\"Command '\" + id + \"' not registered.\"));\n }\n // Execute the command and reject if an exception is thrown.\n var value;\n try {\n value = cmd.execute.call(undefined, args);\n }\n catch (err) {\n value = Promise.reject(err);\n }\n // Create the return promise which resolves the result.\n var result = Promise.resolve(value);\n // Emit the command executed signal.\n this._commandExecuted.emit({ id: id, args: args, result: result });\n // Return the result promise to the caller.\n return result;\n };\n /**\n * Add a key binding to the registry.\n *\n * @param options - The options for creating the key binding.\n *\n * @returns A disposable which removes the added key binding.\n *\n * #### Notes\n * If multiple key bindings are registered for the same sequence, the\n * binding with the highest selector specificity is executed first. A\n * tie is broken by using the most recently added key binding.\n *\n * Ambiguous key bindings are resolved with a timeout. As an example,\n * suppose two key bindings are registered: one with the key sequence\n * `['Ctrl D']`, and another with `['Ctrl D', 'Ctrl W']`. If the user\n * presses `Ctrl D`, the first binding cannot be immediately executed\n * since the user may intend to complete the chord with `Ctrl W`. For\n * such cases, a timer is used to allow the chord to be completed. If\n * the chord is not completed before the timeout, the first binding\n * is executed.\n */\n CommandRegistry.prototype.addKeyBinding = function (options) {\n var _this = this;\n // Create the binding for the given options.\n var binding = Private.createKeyBinding(options);\n // Add the key binding to the bindings array.\n this._keyBindings.push(binding);\n // Emit the `bindingChanged` signal.\n this._keyBindingChanged.emit({ binding: binding, type: 'added' });\n // Return a disposable which will remove the binding.\n return new disposable_1.DisposableDelegate(function () {\n // Remove the binding from the array.\n algorithm_1.ArrayExt.removeFirstOf(_this._keyBindings, binding);\n // Emit the `bindingChanged` signal.\n _this._keyBindingChanged.emit({ binding: binding, type: 'removed' });\n });\n };\n /**\n * Process a `'keydown'` event and invoke a matching key binding.\n *\n * @param event - The event object for a `'keydown'` event.\n *\n * #### Notes\n * This should be called in response to a `'keydown'` event in order\n * to invoke the command for the best matching key binding.\n *\n * The registry **does not** install its own listener for `'keydown'`\n * events. This allows the application full control over the nodes\n * and phase for which the registry processes `'keydown'` events.\n */\n CommandRegistry.prototype.processKeydownEvent = function (event) {\n // Bail immediately if playing back keystrokes.\n if (this._replaying) {\n return;\n }\n // Get the normalized keystroke for the event.\n var keystroke = CommandRegistry.keystrokeForKeydownEvent(event);\n // If the keystroke is not valid for the keyboard layout, replay\n // any suppressed events and clear the pending state.\n if (!keystroke) {\n this._replayKeydownEvents();\n this._clearPendingState();\n return;\n }\n // Add the keystroke to the current key sequence.\n this._keystrokes.push(keystroke);\n // Find the exact and partial matches for the key sequence.\n var _a = Private.matchKeyBinding(this._keyBindings, this._keystrokes, event), exact = _a.exact, partial = _a.partial;\n // If there is no exact match and no partial match, replay\n // any suppressed events and clear the pending state.\n if (!exact && !partial) {\n this._replayKeydownEvents();\n this._clearPendingState();\n return;\n }\n // Stop propagation of the event. If there is only a partial match,\n // the event will be replayed if a final exact match never occurs.\n event.preventDefault();\n event.stopPropagation();\n // If there is an exact match but no partial match, the exact match\n // can be dispatched immediately. The pending state is cleared so\n // the next key press starts from the default state.\n if (exact && !partial) {\n this._executeKeyBinding(exact);\n this._clearPendingState();\n return;\n }\n // If there is both an exact match and a partial match, the exact\n // match is stored for future dispatch in case the timer expires\n // before a more specific match is triggered.\n if (exact) {\n this._exactKeyMatch = exact;\n }\n // Store the event for possible playback in the future.\n this._keydownEvents.push(event);\n // (Re)start the timer to dispatch the most recent exact match\n // in case the partial match fails to result in an exact match.\n this._startTimer();\n };\n /**\n * Start or restart the pending timeout.\n */\n CommandRegistry.prototype._startTimer = function () {\n var _this = this;\n this._clearTimer();\n this._timerID = window.setTimeout(function () {\n _this._onPendingTimeout();\n }, Private.CHORD_TIMEOUT);\n };\n /**\n * Clear the pending timeout.\n */\n CommandRegistry.prototype._clearTimer = function () {\n if (this._timerID !== 0) {\n clearTimeout(this._timerID);\n this._timerID = 0;\n }\n };\n /**\n * Replay the keydown events which were suppressed.\n */\n CommandRegistry.prototype._replayKeydownEvents = function () {\n if (this._keydownEvents.length === 0) {\n return;\n }\n this._replaying = true;\n this._keydownEvents.forEach(Private.replayKeyEvent);\n this._replaying = false;\n };\n /**\n * Execute the command for the given key binding.\n *\n * If the command is missing or disabled, a warning will be logged.\n */\n CommandRegistry.prototype._executeKeyBinding = function (binding) {\n var command = binding.command, args = binding.args;\n if (!this.hasCommand(command) || !this.isEnabled(command, args)) {\n var word = this.hasCommand(command) ? 'enabled' : 'registered';\n var keys = binding.keys.join(', ');\n var msg1 = \"Cannot execute key binding '\" + keys + \"':\";\n var msg2 = \"command '\" + command + \"' is not \" + word + \".\";\n console.warn(msg1 + \" \" + msg2);\n return;\n }\n this.execute(command, args);\n };\n /**\n * Clear the internal pending state.\n */\n CommandRegistry.prototype._clearPendingState = function () {\n this._clearTimer();\n this._exactKeyMatch = null;\n this._keystrokes.length = 0;\n this._keydownEvents.length = 0;\n };\n /**\n * Handle the partial match timeout.\n */\n CommandRegistry.prototype._onPendingTimeout = function () {\n this._timerID = 0;\n if (this._exactKeyMatch) {\n this._executeKeyBinding(this._exactKeyMatch);\n }\n else {\n this._replayKeydownEvents();\n }\n this._clearPendingState();\n };\n return CommandRegistry;\n}());\nexports.CommandRegistry = CommandRegistry;\n/**\n * The namespace for the `CommandRegistry` class statics.\n */\n(function (CommandRegistry) {\n /**\n * Parse a keystroke into its constituent components.\n *\n * @param keystroke - The keystroke of interest.\n *\n * @returns The parsed components of the keystroke.\n *\n * #### Notes\n * The keystroke should be of the form:\n * `[ [ [ ]]]`\n *\n * The supported modifiers are: `Accel`, `Alt`, `Cmd`, `Ctrl`, and\n * `Shift`. The `Accel` modifier is translated to `Cmd` on Mac and\n * `Ctrl` on all other platforms.\n *\n * The parsing is tolerant and will not throw exceptions. Notably:\n * - Duplicate modifiers are ignored.\n * - Extra primary keys are ignored.\n * - The order of modifiers and primary key is irrelevant.\n * - The keystroke parts should be separated by whitespace.\n * - The keystroke is case sensitive.\n */\n function parseKeystroke(keystroke) {\n var key = '';\n var alt = false;\n var cmd = false;\n var ctrl = false;\n var shift = false;\n for (var _i = 0, _a = keystroke.split(/\\s+/); _i < _a.length; _i++) {\n var token = _a[_i];\n if (token === 'Accel') {\n if (domutils_1.Platform.IS_MAC) {\n cmd = true;\n }\n else {\n ctrl = true;\n }\n }\n else if (token === 'Alt') {\n alt = true;\n }\n else if (token === 'Cmd') {\n cmd = true;\n }\n else if (token === 'Ctrl') {\n ctrl = true;\n }\n else if (token === 'Shift') {\n shift = true;\n }\n else if (token.length > 0) {\n key = token;\n }\n }\n return { cmd: cmd, ctrl: ctrl, alt: alt, shift: shift, key: key };\n }\n CommandRegistry.parseKeystroke = parseKeystroke;\n /**\n * Normalize a keystroke into a canonical representation.\n *\n * @param keystroke - The keystroke of interest.\n *\n * @returns The normalized representation of the keystroke.\n *\n * #### Notes\n * This normalizes the keystroke by removing duplicate modifiers and\n * extra primary keys, and assembling the parts in a canonical order.\n *\n * The `Cmd` modifier is ignored on non-Mac platforms.\n */\n function normalizeKeystroke(keystroke) {\n var mods = '';\n var parts = parseKeystroke(keystroke);\n if (parts.ctrl) {\n mods += 'Ctrl ';\n }\n if (parts.alt) {\n mods += 'Alt ';\n }\n if (parts.shift) {\n mods += 'Shift ';\n }\n if (parts.cmd && domutils_1.Platform.IS_MAC) {\n mods += 'Cmd ';\n }\n return mods + parts.key;\n }\n CommandRegistry.normalizeKeystroke = normalizeKeystroke;\n /**\n * Format a keystroke for display on the local system.\n */\n function formatKeystroke(keystroke) {\n var mods = '';\n var parts = parseKeystroke(keystroke);\n if (domutils_1.Platform.IS_MAC) {\n if (parts.ctrl) {\n mods += '\\u2303 ';\n }\n if (parts.alt) {\n mods += '\\u2325 ';\n }\n if (parts.shift) {\n mods += '\\u21E7 ';\n }\n if (parts.cmd) {\n mods += '\\u2318 ';\n }\n }\n else {\n if (parts.ctrl) {\n mods += 'Ctrl+';\n }\n if (parts.alt) {\n mods += 'Alt+';\n }\n if (parts.shift) {\n mods += 'Shift+';\n }\n }\n return mods + parts.key;\n }\n CommandRegistry.formatKeystroke = formatKeystroke;\n /**\n * Create a normalized keystroke for a `'keydown'` event.\n *\n * @param event - The event object for a `'keydown'` event.\n *\n * @returns A normalized keystroke, or an empty string if the event\n * does not represent a valid keystroke for the given layout.\n */\n function keystrokeForKeydownEvent(event) {\n var key = keyboard_1.getKeyboardLayout().keyForKeydownEvent(event);\n if (!key) {\n return '';\n }\n var mods = '';\n if (event.ctrlKey) {\n mods += 'Ctrl ';\n }\n if (event.altKey) {\n mods += 'Alt ';\n }\n if (event.shiftKey) {\n mods += 'Shift ';\n }\n if (event.metaKey && domutils_1.Platform.IS_MAC) {\n mods += 'Cmd ';\n }\n return mods + key;\n }\n CommandRegistry.keystrokeForKeydownEvent = keystrokeForKeydownEvent;\n})(CommandRegistry = exports.CommandRegistry || (exports.CommandRegistry = {}));\nexports.CommandRegistry = CommandRegistry;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The timeout in ms for triggering a key binding chord.\n */\n Private.CHORD_TIMEOUT = 1000;\n /**\n * Create a normalized command from an options object.\n */\n function createCommand(options) {\n return {\n execute: options.execute,\n label: asFunc(options.label, emptyStringFunc),\n mnemonic: asFunc(options.mnemonic, negativeOneFunc),\n iconClass: asFunc(options.iconClass || options.icon, emptyStringFunc),\n iconLabel: asFunc(options.iconLabel, emptyStringFunc),\n caption: asFunc(options.caption, emptyStringFunc),\n usage: asFunc(options.usage, emptyStringFunc),\n className: asFunc(options.className, emptyStringFunc),\n dataset: asFunc(options.dataset, emptyDatasetFunc),\n isEnabled: options.isEnabled || trueFunc,\n isToggled: options.isToggled || falseFunc,\n isVisible: options.isVisible || trueFunc\n };\n }\n Private.createCommand = createCommand;\n /**\n * Create a key binding object from key binding options.\n */\n function createKeyBinding(options) {\n return {\n keys: normalizeKeys(options),\n selector: validateSelector(options),\n command: options.command,\n args: options.args || coreutils_1.JSONExt.emptyObject\n };\n }\n Private.createKeyBinding = createKeyBinding;\n /**\n * Find the key bindings which match a key sequence.\n *\n * This returns a match result which contains the best exact matching\n * binding, and a flag which indicates if there are partial matches.\n */\n function matchKeyBinding(bindings, keys, event) {\n // The current best exact match.\n var exact = null;\n // Whether a partial match has been found.\n var partial = false;\n // The match distance for the exact match.\n var distance = Infinity;\n // The specificity for the exact match.\n var specificity = 0;\n // Iterate over the bindings and search for the best match.\n for (var i = 0, n = bindings.length; i < n; ++i) {\n // Lookup the current binding.\n var binding = bindings[i];\n // Check whether the key binding sequence is a match.\n var sqm = matchSequence(binding.keys, keys);\n // If there is no match, the binding is ignored.\n if (sqm === 0 /* None */) {\n continue;\n }\n // If it is a partial match and no other partial match has been\n // found, ensure the selector matches and set the partial flag.\n if (sqm === 2 /* Partial */) {\n if (!partial && targetDistance(binding.selector, event) !== -1) {\n partial = true;\n }\n continue;\n }\n // Ignore the match if the selector doesn't match, or if the\n // matched node is farther away than the current best match.\n var td = targetDistance(binding.selector, event);\n if (td === -1 || td > distance) {\n continue;\n }\n // Get the specificity for the selector.\n var sp = domutils_1.Selector.calculateSpecificity(binding.selector);\n // Update the best match if this match is stronger.\n if (!exact || td < distance || sp >= specificity) {\n exact = binding;\n distance = td;\n specificity = sp;\n }\n }\n // Return the match result.\n return { exact: exact, partial: partial };\n }\n Private.matchKeyBinding = matchKeyBinding;\n /**\n * Replay a keyboard event.\n *\n * This synthetically dispatches a clone of the keyboard event.\n */\n function replayKeyEvent(event) {\n event.target.dispatchEvent(cloneKeyboardEvent(event));\n }\n Private.replayKeyEvent = replayKeyEvent;\n /**\n * A singleton empty string function.\n */\n var emptyStringFunc = function () { return ''; };\n /**\n * A singleton `-1` number function\n */\n var negativeOneFunc = function () { return -1; };\n /**\n * A singleton true boolean function.\n */\n var trueFunc = function () { return true; };\n /**\n * A singleton false boolean function.\n */\n var falseFunc = function () { return false; };\n /**\n * A singleton empty dataset function.\n */\n var emptyDatasetFunc = function () { return ({}); };\n /**\n * Cast a value or command func to a command func.\n */\n function asFunc(value, dfault) {\n if (value === undefined) {\n return dfault;\n }\n if (typeof value === 'function') {\n return value;\n }\n return function () { return value; };\n }\n /**\n * Get the platform-specific normalized keys for an options object.\n */\n function normalizeKeys(options) {\n var keys;\n if (domutils_1.Platform.IS_WIN) {\n keys = options.winKeys || options.keys;\n }\n else if (domutils_1.Platform.IS_MAC) {\n keys = options.macKeys || options.keys;\n }\n else {\n keys = options.linuxKeys || options.keys;\n }\n return keys.map(CommandRegistry.normalizeKeystroke);\n }\n /**\n * Validate the selector for an options object.\n *\n * This returns the validated selector, or throws if the selector is\n * invalid or contains commas.\n */\n function validateSelector(options) {\n if (options.selector.indexOf(',') !== -1) {\n throw new Error(\"Selector cannot contain commas: \" + options.selector);\n }\n if (!domutils_1.Selector.isValid(options.selector)) {\n throw new Error(\"Invalid selector: \" + options.selector);\n }\n return options.selector;\n }\n ;\n /**\n * Test whether a key binding sequence matches a key sequence.\n *\n * Returns a `SequenceMatch` value indicating the type of match.\n */\n function matchSequence(bindKeys, userKeys) {\n if (bindKeys.length < userKeys.length) {\n return 0 /* None */;\n }\n for (var i = 0, n = userKeys.length; i < n; ++i) {\n if (bindKeys[i] !== userKeys[i]) {\n return 0 /* None */;\n }\n }\n if (bindKeys.length > userKeys.length) {\n return 2 /* Partial */;\n }\n return 1 /* Exact */;\n }\n /**\n * Find the distance from the target node to the first matching node.\n *\n * This traverses the event path from `target` to `currentTarget` and\n * computes the distance from `target` to the first node which matches\n * the CSS selector. If no match is found, `-1` is returned.\n */\n function targetDistance(selector, event) {\n var targ = event.target;\n var curr = event.currentTarget;\n for (var dist = 0; targ !== null; targ = targ.parentElement, ++dist) {\n if (domutils_1.Selector.matches(targ, selector)) {\n return dist;\n }\n if (targ === curr) {\n return -1;\n }\n }\n return -1;\n }\n /**\n * Clone a keyboard event.\n */\n function cloneKeyboardEvent(event) {\n // A custom event is required because Chrome nulls out the\n // `keyCode` field in user-generated `KeyboardEvent` types.\n var clone = document.createEvent('Event');\n var bubbles = event.bubbles || true;\n var cancelable = event.cancelable || true;\n clone.initEvent(event.type || 'keydown', bubbles, cancelable);\n clone.key = event.key || '';\n clone.keyCode = event.keyCode || 0;\n clone.which = event.keyCode || 0;\n clone.ctrlKey = event.ctrlKey || false;\n clone.altKey = event.altKey || false;\n clone.shiftKey = event.shiftKey || false;\n clone.metaKey = event.metaKey || false;\n clone.view = event.view || window;\n return clone;\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/commands/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/coreutils/lib/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/coreutils/lib/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n__export(__webpack_require__(/*! ./json */ \"./node_modules/@phosphor/coreutils/lib/json.js\"));\n__export(__webpack_require__(/*! ./mime */ \"./node_modules/@phosphor/coreutils/lib/mime.js\"));\n__export(__webpack_require__(/*! ./promise */ \"./node_modules/@phosphor/coreutils/lib/promise.js\"));\n__export(__webpack_require__(/*! ./random */ \"./node_modules/@phosphor/coreutils/lib/random.js\"));\n__export(__webpack_require__(/*! ./token */ \"./node_modules/@phosphor/coreutils/lib/token.js\"));\n__export(__webpack_require__(/*! ./uuid */ \"./node_modules/@phosphor/coreutils/lib/uuid.js\"));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/coreutils/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/coreutils/lib/json.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/coreutils/lib/json.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * The namespace for JSON-specific functions.\n */\nvar JSONExt;\n(function (JSONExt) {\n /**\n * A shared frozen empty JSONObject\n */\n JSONExt.emptyObject = Object.freeze({});\n /**\n * A shared frozen empty JSONArray\n */\n JSONExt.emptyArray = Object.freeze([]);\n /**\n * Test whether a JSON value is a primitive.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a primitive,`false` otherwise.\n */\n function isPrimitive(value) {\n return (value === null ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string');\n }\n JSONExt.isPrimitive = isPrimitive;\n function isArray(value) {\n return Array.isArray(value);\n }\n JSONExt.isArray = isArray;\n function isObject(value) {\n return !isPrimitive(value) && !isArray(value);\n }\n JSONExt.isObject = isObject;\n /**\n * Compare two JSON values for deep equality.\n *\n * @param first - The first JSON value of interest.\n *\n * @param second - The second JSON value of interest.\n *\n * @returns `true` if the values are equivalent, `false` otherwise.\n */\n function deepEqual(first, second) {\n // Check referential and primitive equality first.\n if (first === second) {\n return true;\n }\n // If one is a primitive, the `===` check ruled out the other.\n if (isPrimitive(first) || isPrimitive(second)) {\n return false;\n }\n // Test whether they are arrays.\n var a1 = isArray(first);\n var a2 = isArray(second);\n // Bail if the types are different.\n if (a1 !== a2) {\n return false;\n }\n // If they are both arrays, compare them.\n if (a1 && a2) {\n return deepArrayEqual(first, second);\n }\n // At this point, they must both be objects.\n return deepObjectEqual(first, second);\n }\n JSONExt.deepEqual = deepEqual;\n /**\n * Create a deep copy of a JSON value.\n *\n * @param value - The JSON value to copy.\n *\n * @returns A deep copy of the given JSON value.\n */\n function deepCopy(value) {\n // Do nothing for primitive values.\n if (isPrimitive(value)) {\n return value;\n }\n // Deep copy an array.\n if (isArray(value)) {\n return deepArrayCopy(value);\n }\n // Deep copy an object.\n return deepObjectCopy(value);\n }\n JSONExt.deepCopy = deepCopy;\n /**\n * Compare two JSON arrays for deep equality.\n */\n function deepArrayEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Test the arrays for equal length.\n if (first.length !== second.length) {\n return false;\n }\n // Compare the values for equality.\n for (var i = 0, n = first.length; i < n; ++i) {\n if (!deepEqual(first[i], second[i])) {\n return false;\n }\n }\n // At this point, the arrays are equal.\n return true;\n }\n /**\n * Compare two JSON objects for deep equality.\n */\n function deepObjectEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Check for the first object's keys in the second object.\n for (var key in first) {\n if (!(key in second)) {\n return false;\n }\n }\n // Check for the second object's keys in the first object.\n for (var key in second) {\n if (!(key in first)) {\n return false;\n }\n }\n // Compare the values for equality.\n for (var key in first) {\n if (!deepEqual(first[key], second[key])) {\n return false;\n }\n }\n // At this point, the objects are equal.\n return true;\n }\n /**\n * Create a deep copy of a JSON array.\n */\n function deepArrayCopy(value) {\n var result = new Array(value.length);\n for (var i = 0, n = value.length; i < n; ++i) {\n result[i] = deepCopy(value[i]);\n }\n return result;\n }\n /**\n * Create a deep copy of a JSON object.\n */\n function deepObjectCopy(value) {\n var result = {};\n for (var key in value) {\n result[key] = deepCopy(value[key]);\n }\n return result;\n }\n})(JSONExt = exports.JSONExt || (exports.JSONExt = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/coreutils/lib/json.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/coreutils/lib/mime.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/coreutils/lib/mime.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * An object which stores MIME data for general application use.\n *\n * #### Notes\n * This class does not attempt to enforce \"correctness\" of MIME types\n * and their associated data. Since this class is designed to transfer\n * arbitrary data and objects within the same application, it assumes\n * that the user provides correct and accurate data.\n */\nvar MimeData = /** @class */ (function () {\n function MimeData() {\n this._types = [];\n this._values = [];\n }\n /**\n * Get an array of the MIME types contained within the dataset.\n *\n * @returns A new array of the MIME types, in order of insertion.\n */\n MimeData.prototype.types = function () {\n return this._types.slice();\n };\n /**\n * Test whether the dataset has an entry for the given type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns `true` if the dataset contains a value for the given\n * MIME type, `false` otherwise.\n */\n MimeData.prototype.hasData = function (mime) {\n return this._types.indexOf(mime) !== -1;\n };\n /**\n * Get the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns The value for the given MIME type, or `undefined` if\n * the dataset does not contain a value for the type.\n */\n MimeData.prototype.getData = function (mime) {\n var i = this._types.indexOf(mime);\n return i !== -1 ? this._values[i] : undefined;\n };\n /**\n * Set the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @param data - The data value for the given MIME type.\n *\n * #### Notes\n * This will overwrite any previous entry for the MIME type.\n */\n MimeData.prototype.setData = function (mime, data) {\n this.clearData(mime);\n this._types.push(mime);\n this._values.push(data);\n };\n /**\n * Remove the data entry for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * #### Notes\n * This is a no-op if there is no entry for the given MIME type.\n */\n MimeData.prototype.clearData = function (mime) {\n var i = this._types.indexOf(mime);\n if (i !== -1) {\n this._types.splice(i, 1);\n this._values.splice(i, 1);\n }\n };\n /**\n * Remove all data entries from the dataset.\n */\n MimeData.prototype.clear = function () {\n this._types.length = 0;\n this._values.length = 0;\n };\n return MimeData;\n}());\nexports.MimeData = MimeData;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/coreutils/lib/mime.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/coreutils/lib/promise.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/coreutils/lib/promise.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * A class which wraps a promise into a delegate object.\n *\n * #### Notes\n * This class is useful when the logic to resolve or reject a promise\n * cannot be defined at the point where the promise is created.\n */\nvar PromiseDelegate = /** @class */ (function () {\n /**\n * Construct a new promise delegate.\n */\n function PromiseDelegate() {\n var _this = this;\n this.promise = new Promise(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n });\n }\n /**\n * Resolve the wrapped promise with the given value.\n *\n * @param value - The value to use for resolving the promise.\n */\n PromiseDelegate.prototype.resolve = function (value) {\n var resolve = this._resolve;\n resolve(value);\n };\n /**\n * Reject the wrapped promise with the given value.\n *\n * @reason - The reason for rejecting the promise.\n */\n PromiseDelegate.prototype.reject = function (reason) {\n var reject = this._reject;\n reject(reason);\n };\n return PromiseDelegate;\n}());\nexports.PromiseDelegate = PromiseDelegate;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/coreutils/lib/promise.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/coreutils/lib/random.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/coreutils/lib/random.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * The namespace for random number related functionality.\n */\nvar Random;\n(function (Random) {\n /**\n * A function which generates random bytes.\n *\n * @param buffer - The `Uint8Array` to fill with random bytes.\n *\n * #### Notes\n * A cryptographically strong random number generator will be used if\n * available. Otherwise, `Math.random` will be used as a fallback for\n * randomness.\n *\n * The following RNGs are supported, listed in order of precedence:\n * - `window.crypto.getRandomValues`\n * - `window.msCrypto.getRandomValues`\n * - `require('crypto').randomFillSync\n * - `require('crypto').randomBytes\n * - `Math.random`\n */\n Random.getRandomValues = (function () {\n // Look up the crypto module if available.\n var crypto = ((typeof window !== 'undefined' && (window.crypto || window.msCrypto)) ||\n ( true && __webpack_require__(/*! crypto */ \"./node_modules/crypto-browserify/index.js\")) || null);\n // Modern browsers and IE 11\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return function getRandomValues(buffer) {\n return crypto.getRandomValues(buffer);\n };\n }\n // Node 7+\n if (crypto && typeof crypto.randomFillSync === 'function') {\n return function getRandomValues(buffer) {\n return crypto.randomFillSync(buffer);\n };\n }\n // Node 0.10+\n if (crypto && typeof crypto.randomBytes === 'function') {\n return function getRandomValues(buffer) {\n var bytes = crypto.randomBytes(buffer.length);\n for (var i = 0, n = bytes.length; i < n; ++i) {\n buffer[i] = bytes[i];\n }\n };\n }\n // Fallback\n return function getRandomValues(buffer) {\n var value = 0;\n for (var i = 0, n = buffer.length; i < n; ++i) {\n if (i % 4 === 0) {\n value = Math.random() * 0xFFFFFFFF >>> 0;\n }\n buffer[i] = value & 0xFF;\n value >>>= 8;\n }\n };\n })();\n})(Random = exports.Random || (exports.Random = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/coreutils/lib/random.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/coreutils/lib/token.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/coreutils/lib/token.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * A runtime object which captures compile-time type information.\n *\n * #### Notes\n * A token captures the compile-time type of an interface or class in\n * an object which can be used at runtime in a type-safe fashion.\n */\nvar Token = /** @class */ (function () {\n /**\n * Construct a new token.\n *\n * @param name - A human readable name for the token.\n */\n function Token(name) {\n this.name = name;\n this._tokenStructuralPropertyT = null;\n }\n return Token;\n}());\nexports.Token = Token;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/coreutils/lib/token.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/coreutils/lib/uuid.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/coreutils/lib/uuid.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar random_1 = __webpack_require__(/*! ./random */ \"./node_modules/@phosphor/coreutils/lib/random.js\");\n/**\n * The namespace for UUID related functionality.\n */\nvar UUID;\n(function (UUID) {\n /**\n * A function which generates UUID v4 identifiers.\n *\n * @returns A new UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\n UUID.uuid4 = (function () {\n // Create a 16 byte array to hold the random values.\n var bytes = new Uint8Array(16);\n // Create a look up table from bytes to hex strings.\n var lut = new Array(256);\n // Pad the single character hex digits with a leading zero.\n for (var i = 0; i < 16; ++i) {\n lut[i] = '0' + i.toString(16);\n }\n // Populate the rest of the hex digits.\n for (var i = 16; i < 256; ++i) {\n lut[i] = i.toString(16);\n }\n // Return a function which generates the UUID.\n return function uuid4() {\n // Get a new batch of random values.\n random_1.Random.getRandomValues(bytes);\n // Set the UUID version number to 4.\n bytes[6] = 0x40 | (bytes[6] & 0x0F);\n // Set the clock sequence bit to the RFC spec.\n bytes[8] = 0x80 | (bytes[8] & 0x3F);\n // Assemble the UUID string.\n return (lut[bytes[0]] +\n lut[bytes[1]] +\n lut[bytes[2]] +\n lut[bytes[3]] +\n '-' +\n lut[bytes[4]] +\n lut[bytes[5]] +\n '-' +\n lut[bytes[6]] +\n lut[bytes[7]] +\n '-' +\n lut[bytes[8]] +\n lut[bytes[9]] +\n '-' +\n lut[bytes[10]] +\n lut[bytes[11]] +\n lut[bytes[12]] +\n lut[bytes[13]] +\n lut[bytes[14]] +\n lut[bytes[15]]);\n };\n })();\n})(UUID = exports.UUID || (exports.UUID = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/coreutils/lib/uuid.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/disposable/lib/index.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/disposable/lib/index.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\n/**\n * A disposable object which delegates to a callback function.\n */\nvar DisposableDelegate = /** @class */ (function () {\n /**\n * Construct a new disposable delegate.\n *\n * @param fn - The callback function to invoke on dispose.\n */\n function DisposableDelegate(fn) {\n this._fn = fn;\n }\n Object.defineProperty(DisposableDelegate.prototype, \"isDisposed\", {\n /**\n * Test whether the delegate has been disposed.\n */\n get: function () {\n return !this._fn;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Dispose of the delegate and invoke the callback function.\n */\n DisposableDelegate.prototype.dispose = function () {\n if (!this._fn) {\n return;\n }\n var fn = this._fn;\n this._fn = null;\n fn();\n };\n return DisposableDelegate;\n}());\nexports.DisposableDelegate = DisposableDelegate;\n/**\n * An observable disposable object which delegates to a callback function.\n */\nvar ObservableDisposableDelegate = /** @class */ (function (_super) {\n __extends(ObservableDisposableDelegate, _super);\n function ObservableDisposableDelegate() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._disposed = new signaling_1.Signal(_this);\n return _this;\n }\n Object.defineProperty(ObservableDisposableDelegate.prototype, \"disposed\", {\n /**\n * A signal emitted when the delegate is disposed.\n */\n get: function () {\n return this._disposed;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Dispose of the delegate and invoke the callback function.\n */\n ObservableDisposableDelegate.prototype.dispose = function () {\n if (this.isDisposed) {\n return;\n }\n _super.prototype.dispose.call(this);\n this._disposed.emit(undefined);\n signaling_1.Signal.clearData(this);\n };\n return ObservableDisposableDelegate;\n}(DisposableDelegate));\nexports.ObservableDisposableDelegate = ObservableDisposableDelegate;\n/**\n * An object which manages a collection of disposable items.\n */\nvar DisposableSet = /** @class */ (function () {\n /**\n * Construct a new disposable set.\n */\n function DisposableSet() {\n this._isDisposed = false;\n this._items = new Set();\n }\n Object.defineProperty(DisposableSet.prototype, \"isDisposed\", {\n /**\n * Test whether the set has been disposed.\n */\n get: function () {\n return this._isDisposed;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Dispose of the set and the items it contains.\n *\n * #### Notes\n * Items are disposed in the order they are added to the set.\n */\n DisposableSet.prototype.dispose = function () {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._items.forEach(function (item) { item.dispose(); });\n this._items.clear();\n };\n /**\n * Test whether the set contains a specific item.\n *\n * @param item - The item of interest.\n *\n * @returns `true` if the set contains the item, `false` otherwise.\n */\n DisposableSet.prototype.contains = function (item) {\n return this._items.has(item);\n };\n /**\n * Add a disposable item to the set.\n *\n * @param item - The item to add to the set.\n *\n * #### Notes\n * If the item is already contained in the set, this is a no-op.\n */\n DisposableSet.prototype.add = function (item) {\n this._items.add(item);\n };\n /**\n * Remove a disposable item from the set.\n *\n * @param item - The item to remove from the set.\n *\n * #### Notes\n * If the item is not contained in the set, this is a no-op.\n */\n DisposableSet.prototype.remove = function (item) {\n this._items.delete(item);\n };\n /**\n * Remove all items from the set.\n */\n DisposableSet.prototype.clear = function () {\n this._items.clear();\n };\n return DisposableSet;\n}());\nexports.DisposableSet = DisposableSet;\n/**\n * The namespace for the `DisposableSet` class statics.\n */\n(function (DisposableSet) {\n /**\n * Create a disposable set from an iterable of items.\n *\n * @param items - The iterable or array-like object of interest.\n *\n * @returns A new disposable initialized with the given items.\n */\n function from(items) {\n var set = new DisposableSet();\n algorithm_1.each(items, function (item) { set.add(item); });\n return set;\n }\n DisposableSet.from = from;\n})(DisposableSet = exports.DisposableSet || (exports.DisposableSet = {}));\nexports.DisposableSet = DisposableSet;\n/**\n * An observable object which manages a collection of disposable items.\n */\nvar ObservableDisposableSet = /** @class */ (function (_super) {\n __extends(ObservableDisposableSet, _super);\n function ObservableDisposableSet() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._disposed = new signaling_1.Signal(_this);\n return _this;\n }\n Object.defineProperty(ObservableDisposableSet.prototype, \"disposed\", {\n /**\n * A signal emitted when the set is disposed.\n */\n get: function () {\n return this._disposed;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Dispose of the set and the items it contains.\n *\n * #### Notes\n * Items are disposed in the order they are added to the set.\n */\n ObservableDisposableSet.prototype.dispose = function () {\n if (this.isDisposed) {\n return;\n }\n _super.prototype.dispose.call(this);\n this._disposed.emit(undefined);\n signaling_1.Signal.clearData(this);\n };\n return ObservableDisposableSet;\n}(DisposableSet));\nexports.ObservableDisposableSet = ObservableDisposableSet;\n/**\n * The namespace for the `ObservableDisposableSet` class statics.\n */\n(function (ObservableDisposableSet) {\n /**\n * Create an observable disposable set from an iterable of items.\n *\n * @param items - The iterable or array-like object of interest.\n *\n * @returns A new disposable initialized with the given items.\n */\n function from(items) {\n var set = new ObservableDisposableSet();\n algorithm_1.each(items, function (item) { set.add(item); });\n return set;\n }\n ObservableDisposableSet.from = from;\n})(ObservableDisposableSet = exports.ObservableDisposableSet || (exports.ObservableDisposableSet = {}));\nexports.ObservableDisposableSet = ObservableDisposableSet;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/disposable/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/domutils/lib/clipboard.js": +/*!**********************************************************!*\ + !*** ./node_modules/@phosphor/domutils/lib/clipboard.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2019, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * The namespace for clipboard related functionality.\n */\nvar ClipboardExt;\n(function (ClipboardExt) {\n /**\n * Copy text to the system clipboard.\n *\n * @param text - The text to copy to the clipboard.\n */\n function copyText(text) {\n // Fetch the document body.\n var body = document.body;\n // Set up the clipboard event listener.\n var handler = function (event) {\n // Stop the event propagation.\n event.preventDefault();\n event.stopPropagation();\n // Set the clipboard data.\n event.clipboardData.setData('text', text);\n // Remove the event listener.\n body.removeEventListener('copy', handler, true);\n };\n // Add the event listener.\n body.addEventListener('copy', handler, true);\n // Trigger the event.\n document.execCommand('copy');\n }\n ClipboardExt.copyText = copyText;\n})(ClipboardExt = exports.ClipboardExt || (exports.ClipboardExt = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/domutils/lib/clipboard.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/domutils/lib/element.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/domutils/lib/element.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * The namespace for element related utilities.\n */\nvar ElementExt;\n(function (ElementExt) {\n /**\n * Compute the box sizing for an element.\n *\n * @param element - The element of interest.\n *\n * @returns The box sizing data for the specified element.\n */\n function boxSizing(element) {\n var style = window.getComputedStyle(element);\n var bt = parseFloat(style.borderTopWidth) || 0;\n var bl = parseFloat(style.borderLeftWidth) || 0;\n var br = parseFloat(style.borderRightWidth) || 0;\n var bb = parseFloat(style.borderBottomWidth) || 0;\n var pt = parseFloat(style.paddingTop) || 0;\n var pl = parseFloat(style.paddingLeft) || 0;\n var pr = parseFloat(style.paddingRight) || 0;\n var pb = parseFloat(style.paddingBottom) || 0;\n var hs = bl + pl + pr + br;\n var vs = bt + pt + pb + bb;\n return {\n borderTop: bt,\n borderLeft: bl,\n borderRight: br,\n borderBottom: bb,\n paddingTop: pt,\n paddingLeft: pl,\n paddingRight: pr,\n paddingBottom: pb,\n horizontalSum: hs,\n verticalSum: vs\n };\n }\n ElementExt.boxSizing = boxSizing;\n /**\n * Compute the size limits for an element.\n *\n * @param element - The element of interest.\n *\n * @returns The size limit data for the specified element.\n */\n function sizeLimits(element) {\n var style = window.getComputedStyle(element);\n var minWidth = parseFloat(style.minWidth) || 0;\n var minHeight = parseFloat(style.minHeight) || 0;\n var maxWidth = parseFloat(style.maxWidth) || Infinity;\n var maxHeight = parseFloat(style.maxHeight) || Infinity;\n maxWidth = Math.max(minWidth, maxWidth);\n maxHeight = Math.max(minHeight, maxHeight);\n return { minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight };\n }\n ElementExt.sizeLimits = sizeLimits;\n /**\n * Test whether a client position lies within an element.\n *\n * @param element - The DOM element of interest.\n *\n * @param clientX - The client X coordinate of interest.\n *\n * @param clientY - The client Y coordinate of interest.\n *\n * @returns Whether the point is within the given element.\n */\n function hitTest(element, clientX, clientY) {\n var rect = element.getBoundingClientRect();\n return (clientX >= rect.left &&\n clientX < rect.right &&\n clientY >= rect.top &&\n clientY < rect.bottom);\n }\n ElementExt.hitTest = hitTest;\n /**\n * Vertically scroll an element into view if needed.\n *\n * @param area - The scroll area element.\n *\n * @param element - The element of interest.\n *\n * #### Notes\n * This follows the \"nearest\" behavior of the native `scrollIntoView`\n * method, which is not supported by all browsers.\n * https://drafts.csswg.org/cssom-view/#element-scrolling-members\n *\n * If the element fully covers the visible area or is fully contained\n * within the visible area, no scrolling will take place. Otherwise,\n * the nearest edges of the area and element are aligned.\n */\n function scrollIntoViewIfNeeded(area, element) {\n var ar = area.getBoundingClientRect();\n var er = element.getBoundingClientRect();\n if (er.top <= ar.top && er.bottom >= ar.bottom) {\n return;\n }\n if (er.top < ar.top && er.height <= ar.height) {\n area.scrollTop -= ar.top - er.top;\n return;\n }\n if (er.bottom > ar.bottom && er.height >= ar.height) {\n area.scrollTop -= ar.top - er.top;\n return;\n }\n if (er.top < ar.top && er.height > ar.height) {\n area.scrollTop -= ar.bottom - er.bottom;\n return;\n }\n if (er.bottom > ar.bottom && er.height < ar.height) {\n area.scrollTop -= ar.bottom - er.bottom;\n return;\n }\n }\n ElementExt.scrollIntoViewIfNeeded = scrollIntoViewIfNeeded;\n})(ElementExt = exports.ElementExt || (exports.ElementExt = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/domutils/lib/element.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/domutils/lib/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/domutils/lib/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n__export(__webpack_require__(/*! ./clipboard */ \"./node_modules/@phosphor/domutils/lib/clipboard.js\"));\n__export(__webpack_require__(/*! ./element */ \"./node_modules/@phosphor/domutils/lib/element.js\"));\n__export(__webpack_require__(/*! ./platform */ \"./node_modules/@phosphor/domutils/lib/platform.js\"));\n__export(__webpack_require__(/*! ./selector */ \"./node_modules/@phosphor/domutils/lib/selector.js\"));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/domutils/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/domutils/lib/platform.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/domutils/lib/platform.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * The namespace for platform related utilities.\n */\nvar Platform;\n(function (Platform) {\n /**\n * A flag indicating whether the platform is Mac.\n */\n Platform.IS_MAC = !!navigator.platform.match(/Mac/i);\n /**\n * A flag indicating whether the platform is Windows.\n */\n Platform.IS_WIN = !!navigator.platform.match(/Win/i);\n /**\n * A flag indicating whether the browser is IE.\n */\n Platform.IS_IE = /Trident/.test(navigator.userAgent);\n /**\n * A flag indicating whether the browser is Edge.\n */\n Platform.IS_EDGE = /Edge/.test(navigator.userAgent);\n /**\n * Test whether the `accel` key is pressed.\n *\n * @param event - The keyboard or mouse event of interest.\n *\n * @returns Whether the `accel` key is pressed.\n *\n * #### Notes\n * On Mac the `accel` key is the command key. On all other\n * platforms the `accel` key is the control key.\n */\n function accelKey(event) {\n return Platform.IS_MAC ? event.metaKey : event.ctrlKey;\n }\n Platform.accelKey = accelKey;\n})(Platform = exports.Platform || (exports.Platform = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/domutils/lib/platform.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/domutils/lib/selector.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/domutils/lib/selector.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * The namespace for selector related utilities.\n */\nvar Selector;\n(function (Selector) {\n /**\n * Calculate the specificity of a single CSS selector.\n *\n * @param selector - The CSS selector of interest.\n *\n * @returns The specificity of the selector.\n *\n * #### Undefined Behavior\n * The selector is invalid.\n *\n * #### Notes\n * This is based on https://www.w3.org/TR/css3-selectors/#specificity\n *\n * A larger number represents a more specific selector.\n *\n * The smallest possible specificity is `0`.\n *\n * The result is represented as a hex number `0x` where\n * each component is the count of the respective selector clause.\n *\n * If the selector contains commas, only the first clause is used.\n *\n * The computed result is cached, so subsequent calculations for the\n * same selector are extremely fast.\n */\n function calculateSpecificity(selector) {\n if (selector in Private.specificityCache) {\n return Private.specificityCache[selector];\n }\n var result = Private.calculateSingle(selector);\n return Private.specificityCache[selector] = result;\n }\n Selector.calculateSpecificity = calculateSpecificity;\n /**\n * Test whether a selector is a valid CSS selector.\n *\n * @param selector - The CSS selector of interest.\n *\n * @returns `true` if the selector is valid, `false` otherwise.\n *\n * #### Notes\n * The computed result is cached, so subsequent tests for the same\n * selector are extremely fast.\n */\n function isValid(selector) {\n if (selector in Private.validityCache) {\n return Private.validityCache[selector];\n }\n var result = true;\n try {\n Private.testElem.querySelector(selector);\n }\n catch (err) {\n result = false;\n }\n return Private.validityCache[selector] = result;\n }\n Selector.isValid = isValid;\n /**\n * Test whether an element matches a CSS selector.\n *\n * @param element - The element of interest.\n *\n * @param selector - The valid CSS selector of interest.\n *\n * @returns `true` if the element is a match, `false` otherwise.\n *\n * #### Notes\n * This function uses the builtin browser capabilities when possible,\n * falling back onto a document query otherwise.\n */\n function matches(element, selector) {\n return Private.protoMatchFunc.call(element, selector);\n }\n Selector.matches = matches;\n})(Selector = exports.Selector || (exports.Selector = {}));\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * A cache of computed selector specificity values.\n */\n Private.specificityCache = Object.create(null);\n /**\n * A cache of computed selector validity.\n */\n Private.validityCache = Object.create(null);\n /**\n * An empty element for testing selector validity.\n */\n Private.testElem = document.createElement('div');\n /**\n * A cross-browser CSS selector matching prototype function.\n */\n Private.protoMatchFunc = (function () {\n var proto = Element.prototype;\n return (proto.matches ||\n proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector ||\n (function (selector) {\n var elem = this;\n var matches = elem.ownerDocument.querySelectorAll(selector);\n return Array.prototype.indexOf.call(matches, elem) !== -1;\n }));\n })();\n /**\n * Calculate the specificity of a single selector.\n *\n * The behavior is undefined if the selector is invalid.\n */\n function calculateSingle(selector) {\n // Ignore anything after the first comma.\n selector = selector.split(',', 1)[0];\n // Setup the aggregate counters.\n var a = 0;\n var b = 0;\n var c = 0;\n // Apply a regex to the front of the selector. If it succeeds, that\n // portion of the selector is removed. Returns a success/fail flag.\n function match(re) {\n var match = selector.match(re);\n if (match === null) {\n return false;\n }\n selector = selector.slice(match[0].length);\n return true;\n }\n // Replace the negation pseudo-class (which is ignored),\n // but keep its inner content (which is not ignored).\n selector = selector.replace(NEGATION_RE, ' $1 ');\n // Continue matching until the selector is consumed.\n while (selector.length > 0) {\n // Match an ID selector.\n if (match(ID_RE)) {\n a++;\n continue;\n }\n // Match a class selector.\n if (match(CLASS_RE)) {\n b++;\n continue;\n }\n // Match an attribute selector.\n if (match(ATTR_RE)) {\n b++;\n continue;\n }\n // Match a pseudo-element selector. This is done before matching\n // a pseudo-class since this regex overlaps with that regex.\n if (match(PSEUDO_ELEM_RE)) {\n c++;\n continue;\n }\n // Match a pseudo-class selector.\n if (match(PSEDUO_CLASS_RE)) {\n b++;\n continue;\n }\n // Match a plain type selector.\n if (match(TYPE_RE)) {\n c++;\n continue;\n }\n // Finally, match any ignored characters.\n if (match(IGNORE_RE)) {\n continue;\n }\n // At this point, the selector is assumed to be invalid.\n return 0;\n }\n // Clamp each component to a reasonable base.\n a = Math.min(a, 0xFF);\n b = Math.min(b, 0xFF);\n c = Math.min(c, 0xFF);\n // Combine the components into a single result.\n return (a << 16) | (b << 8) | c;\n }\n Private.calculateSingle = calculateSingle;\n /**\n * A regex which matches an ID selector at string start.\n */\n var ID_RE = /^#[^\\s\\+>~#\\.\\[:]+/;\n /**\n * A regex which matches a class selector at string start.\n */\n var CLASS_RE = /^\\.[^\\s\\+>~#\\.\\[:]+/;\n /**\n * A regex which matches an attribute selector at string start.\n */\n var ATTR_RE = /^\\[[^\\]]+\\]/;\n /**\n * A regex which matches a type selector at string start.\n */\n var TYPE_RE = /^[^\\s\\+>~#\\.\\[:]+/;\n /**\n * A regex which matches a pseudo-element selector at string start.\n */\n var PSEUDO_ELEM_RE = /^(::[^\\s\\+>~#\\.\\[:]+|:first-line|:first-letter|:before|:after)/;\n /**\n * A regex which matches a pseudo-class selector at string start.\n */\n var PSEDUO_CLASS_RE = /^:[^\\s\\+>~#\\.\\[:]+/;\n /**\n * A regex which matches ignored characters at string start.\n */\n var IGNORE_RE = /^[\\s\\+>~\\*]+/;\n /**\n * A regex which matches the negation pseudo-class globally.\n */\n var NEGATION_RE = /:not\\(([^\\)]+)\\)/g;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/domutils/lib/selector.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/dragdrop/lib/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/dragdrop/lib/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar disposable_1 = __webpack_require__(/*! @phosphor/disposable */ \"./node_modules/@phosphor/disposable/lib/index.js\");\n/**\n * An object which manages a drag-drop operation.\n *\n * A drag object dispatches four different events to drop targets:\n *\n * - `'p-dragenter'` - Dispatched when the mouse enters the target\n * element. This event must be canceled in order to receive any\n * of the other events.\n *\n * - `'p-dragover'` - Dispatched when the mouse moves over the drop\n * target. It must cancel the event and set the `dropAction` to one\n * of the supported actions in order to receive drop events.\n *\n * - `'p-dragleave'` - Dispatched when the mouse leaves the target\n * element. This includes moving the mouse into child elements.\n *\n * - `'p-drop'`- Dispatched when the mouse is released over the target\n * element when the target indicates an appropriate drop action. If\n * the event is canceled, the indicated drop action is returned to\n * the initiator through the resolved promise.\n *\n * A drag operation can be terminated at any time by pressing `Escape`\n * or by disposing the drag object.\n *\n * A drag object has the ability to automatically scroll a scrollable\n * element when the mouse is hovered near one of its edges. To enable\n * this, add the `data-p-dragscroll` attribute to any element which\n * the drag object should consider for scrolling.\n *\n * #### Notes\n * This class is designed to be used when dragging and dropping custom\n * data *within* a single application. It is *not* a replacement for\n * the native drag-drop API. Instead, it provides an API which allows\n * drag operations to be initiated programmatically and enables the\n * transfer of arbitrary non-string objects; features which are not\n * possible with the native drag-drop API.\n */\nvar Drag = /** @class */ (function () {\n /**\n * Construct a new drag object.\n *\n * @param options - The options for initializing the drag.\n */\n function Drag(options) {\n var _this = this;\n /**\n * The scroll loop handler function.\n */\n this._onScrollFrame = function () {\n // Bail early if there is no scroll target.\n if (!_this._scrollTarget) {\n return;\n }\n // Unpack the scroll target.\n var _a = _this._scrollTarget, element = _a.element, edge = _a.edge, distance = _a.distance;\n // Calculate the scroll delta using nonlinear acceleration.\n var d = Private.SCROLL_EDGE_SIZE - distance;\n var f = Math.pow(d / Private.SCROLL_EDGE_SIZE, 2);\n var s = Math.max(1, Math.round(f * Private.SCROLL_EDGE_SIZE));\n // Scroll the element in the specified direction.\n switch (edge) {\n case 'top':\n element.scrollTop -= s;\n break;\n case 'left':\n element.scrollLeft -= s;\n break;\n case 'right':\n element.scrollLeft += s;\n break;\n case 'bottom':\n element.scrollTop += s;\n break;\n }\n // Request the next cycle of the scroll loop.\n requestAnimationFrame(_this._onScrollFrame);\n };\n this._disposed = false;\n this._dropAction = 'none';\n this._override = null;\n this._currentTarget = null;\n this._currentElement = null;\n this._promise = null;\n this._scrollTarget = null;\n this._resolve = null;\n this.mimeData = options.mimeData;\n this.dragImage = options.dragImage || null;\n this.proposedAction = options.proposedAction || 'copy';\n this.supportedActions = options.supportedActions || 'all';\n this.source = options.source || null;\n }\n /**\n * Dispose of the resources held by the drag object.\n *\n * #### Notes\n * This will cancel the drag operation if it is active.\n */\n Drag.prototype.dispose = function () {\n // Do nothing if the drag object is already disposed.\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n // If there is a current target, dispatch a drag leave event.\n if (this._currentTarget) {\n var event_1 = Private.createMouseEvent('mouseup', -1, -1);\n Private.dispatchDragLeave(this, this._currentTarget, null, event_1);\n }\n // Finalize the drag object with `'none'`.\n this._finalize('none');\n };\n Object.defineProperty(Drag.prototype, \"isDisposed\", {\n /**\n * Test whether the drag object is disposed.\n */\n get: function () {\n return this._disposed;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Start the drag operation at the specified client position.\n *\n * @param clientX - The client X position for the drag start.\n *\n * @param clientY - The client Y position for the drag start.\n *\n * @returns A promise which resolves to the result of the drag.\n *\n * #### Notes\n * If the drag has already been started, the promise created by the\n * first call to `start` is returned.\n *\n * If the drag operation has ended, or if the drag object has been\n * disposed, the returned promise will resolve to `'none'`.\n *\n * The drag object will be automatically disposed when drag operation\n * completes. This means `Drag` objects are for single-use only.\n *\n * This method assumes the left mouse button is already held down.\n */\n Drag.prototype.start = function (clientX, clientY) {\n var _this = this;\n // If the drag object is already disposed, resolve to `None`.\n if (this._disposed) {\n return Promise.resolve('none');\n }\n // If the drag has already been started, return the promise.\n if (this._promise) {\n return this._promise;\n }\n // Install the document listeners for the drag object.\n this._addListeners();\n // Attach the drag image at the specified client position.\n this._attachDragImage(clientX, clientY);\n // Create the promise which will be resolved on completion.\n this._promise = new Promise(function (resolve, reject) {\n _this._resolve = resolve;\n });\n // Trigger a fake move event to kick off the drag operation.\n var event = Private.createMouseEvent('mousemove', clientX, clientY);\n document.dispatchEvent(event);\n // Return the pending promise for the drag operation.\n return this._promise;\n };\n /**\n * Handle the DOM events for the drag operation.\n *\n * @param event - The DOM event sent to the drag object.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the document. It should not be\n * called directly by user code.\n */\n Drag.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'mousemove':\n this._evtMouseMove(event);\n break;\n case 'mouseup':\n this._evtMouseUp(event);\n break;\n case 'keydown':\n this._evtKeyDown(event);\n break;\n default:\n // Stop all other events during drag-drop.\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n };\n /**\n * Handle the `'mousemove'` event for the drag object.\n */\n Drag.prototype._evtMouseMove = function (event) {\n // Stop all input events during drag-drop.\n event.preventDefault();\n event.stopPropagation();\n // Update the current target node and dispatch enter/leave events.\n this._updateCurrentTarget(event);\n // Update the drag scroll element.\n this._updateDragScroll(event);\n // Move the drag image to the specified client position. This is\n // performed *after* dispatching to prevent unnecessary reflows.\n this._moveDragImage(event.clientX, event.clientY);\n };\n /**\n * Handle the `'mouseup'` event for the drag object.\n */\n Drag.prototype._evtMouseUp = function (event) {\n // Stop all input events during drag-drop.\n event.preventDefault();\n event.stopPropagation();\n // Do nothing if the left button is not released.\n if (event.button !== 0) {\n return;\n }\n // Update the current target node and dispatch enter/leave events.\n // This prevents a subtle issue where the DOM mutates under the\n // cursor after the last move event but before the drop event.\n this._updateCurrentTarget(event);\n // If there is no current target, finalize with `'none'`.\n if (!this._currentTarget) {\n this._finalize('none');\n return;\n }\n // If the last drop action was `'none'`, dispatch a leave event\n // to the current target and finalize the drag with `'none'`.\n if (this._dropAction === 'none') {\n Private.dispatchDragLeave(this, this._currentTarget, null, event);\n this._finalize('none');\n return;\n }\n // Dispatch the drop event at the current target and finalize\n // with the resulting drop action.\n var action = Private.dispatchDrop(this, this._currentTarget, event);\n this._finalize(action);\n };\n /**\n * Handle the `'keydown'` event for the drag object.\n */\n Drag.prototype._evtKeyDown = function (event) {\n // Stop all input events during drag-drop.\n event.preventDefault();\n event.stopPropagation();\n // Cancel the drag if `Escape` is pressed.\n if (event.keyCode === 27) {\n this.dispose();\n }\n };\n /**\n * Add the document event listeners for the drag object.\n */\n Drag.prototype._addListeners = function () {\n document.addEventListener('mousedown', this, true);\n document.addEventListener('mousemove', this, true);\n document.addEventListener('mouseup', this, true);\n document.addEventListener('mouseenter', this, true);\n document.addEventListener('mouseleave', this, true);\n document.addEventListener('mouseover', this, true);\n document.addEventListener('mouseout', this, true);\n document.addEventListener('keydown', this, true);\n document.addEventListener('keyup', this, true);\n document.addEventListener('keypress', this, true);\n document.addEventListener('contextmenu', this, true);\n };\n /**\n * Remove the document event listeners for the drag object.\n */\n Drag.prototype._removeListeners = function () {\n document.removeEventListener('mousedown', this, true);\n document.removeEventListener('mousemove', this, true);\n document.removeEventListener('mouseup', this, true);\n document.removeEventListener('mouseenter', this, true);\n document.removeEventListener('mouseleave', this, true);\n document.removeEventListener('mouseover', this, true);\n document.removeEventListener('mouseout', this, true);\n document.removeEventListener('keydown', this, true);\n document.removeEventListener('keyup', this, true);\n document.removeEventListener('keypress', this, true);\n document.removeEventListener('contextmenu', this, true);\n };\n /**\n * Update the drag scroll element under the mouse.\n */\n Drag.prototype._updateDragScroll = function (event) {\n // Find the scroll target under the mouse.\n var target = Private.findScrollTarget(event);\n // Bail if there is nothing to scroll.\n if (!this._scrollTarget && !target) {\n return;\n }\n // Start the scroll loop if needed.\n if (!this._scrollTarget) {\n setTimeout(this._onScrollFrame, 500);\n }\n // Update the scroll target.\n this._scrollTarget = target;\n };\n /**\n * Update the current target node using the given mouse event.\n */\n Drag.prototype._updateCurrentTarget = function (event) {\n // Fetch common local state.\n var prevTarget = this._currentTarget;\n var currTarget = this._currentTarget;\n var prevElem = this._currentElement;\n // Find the current indicated element at the given position.\n var currElem = document.elementFromPoint(event.clientX, event.clientY);\n // Update the current element reference.\n this._currentElement = currElem;\n // If the indicated element changes from the previous iteration,\n // and is different from the current target, dispatch the exit\n // event to the target.\n if (currElem !== prevElem && currElem !== currTarget) {\n Private.dispatchDragExit(this, currTarget, currElem, event);\n }\n // If the indicated element changes from the previous iteration,\n // and is different from the current target, dispatch the enter\n // event and compute the new target element.\n if (currElem !== prevElem && currElem !== currTarget) {\n currTarget = Private.dispatchDragEnter(this, currElem, currTarget, event);\n }\n // If the current target element has changed, update the current\n // target reference and dispatch the leave event to the old target.\n if (currTarget !== prevTarget) {\n this._currentTarget = currTarget;\n Private.dispatchDragLeave(this, prevTarget, currTarget, event);\n }\n // Dispatch the drag over event and update the drop action.\n var action = Private.dispatchDragOver(this, currTarget, event);\n this._setDropAction(action);\n };\n /**\n * Attach the drag image element at the specified location.\n *\n * This is a no-op if there is no drag image element.\n */\n Drag.prototype._attachDragImage = function (clientX, clientY) {\n if (!this.dragImage) {\n return;\n }\n this.dragImage.classList.add('p-mod-drag-image');\n var style = this.dragImage.style;\n style.pointerEvents = 'none';\n style.position = 'fixed';\n style.top = clientY + \"px\";\n style.left = clientX + \"px\";\n document.body.appendChild(this.dragImage);\n };\n /**\n * Move the drag image element to the specified location.\n *\n * This is a no-op if there is no drag image element.\n */\n Drag.prototype._moveDragImage = function (clientX, clientY) {\n if (!this.dragImage) {\n return;\n }\n var style = this.dragImage.style;\n style.top = clientY + \"px\";\n style.left = clientX + \"px\";\n };\n /**\n * Detach the drag image element from the DOM.\n *\n * This is a no-op if there is no drag image element.\n */\n Drag.prototype._detachDragImage = function () {\n if (!this.dragImage) {\n return;\n }\n var parent = this.dragImage.parentNode;\n if (!parent) {\n return;\n }\n parent.removeChild(this.dragImage);\n };\n /**\n * Set the internal drop action state and update the drag cursor.\n */\n Drag.prototype._setDropAction = function (action) {\n action = Private.validateAction(action, this.supportedActions);\n if (this._override && this._dropAction === action) {\n return;\n }\n switch (action) {\n case 'none':\n this._dropAction = action;\n this._override = Drag.overrideCursor('no-drop');\n break;\n case 'copy':\n this._dropAction = action;\n this._override = Drag.overrideCursor('copy');\n break;\n case 'link':\n this._dropAction = action;\n this._override = Drag.overrideCursor('alias');\n break;\n case 'move':\n this._dropAction = action;\n this._override = Drag.overrideCursor('move');\n break;\n }\n };\n /**\n * Finalize the drag operation and resolve the drag promise.\n */\n Drag.prototype._finalize = function (action) {\n // Store the resolve function as a temp variable.\n var resolve = this._resolve;\n // Remove the document event listeners.\n this._removeListeners();\n // Detach the drag image.\n this._detachDragImage();\n // Dispose of the cursor override.\n if (this._override) {\n this._override.dispose();\n this._override = null;\n }\n // Clear the mime data.\n this.mimeData.clear();\n // Clear the rest of the internal drag state.\n this._disposed = true;\n this._dropAction = 'none';\n this._currentTarget = null;\n this._currentElement = null;\n this._scrollTarget = null;\n this._promise = null;\n this._resolve = null;\n // Finally, resolve the promise to the given drop action.\n if (resolve) {\n resolve(action);\n }\n };\n return Drag;\n}());\nexports.Drag = Drag;\n/**\n * The namespace for the `Drag` class statics.\n */\n(function (Drag) {\n /**\n * Override the cursor icon for the entire document.\n *\n * @param cursor - The string representing the cursor style.\n *\n * @returns A disposable which will clear the override when disposed.\n *\n * #### Notes\n * The most recent call to `overrideCursor` takes precedence.\n * Disposing an old override has no effect on the current override.\n *\n * This utility function is used by the `Drag` class to override the\n * mouse cursor during a drag-drop operation, but it can also be used\n * by other classes to fix the cursor icon during normal mouse drags.\n *\n * #### Example\n * ```typescript\n * import { Drag } from '@phosphor/dragdrop';\n *\n * // Force the cursor to be 'wait' for the entire document.\n * let override = Drag.overrideCursor('wait');\n *\n * // Clear the override by disposing the return value.\n * override.dispose();\n * ```\n */\n function overrideCursor(cursor) {\n var id = ++overrideCursorID;\n document.body.style.cursor = cursor;\n document.body.classList.add('p-mod-override-cursor');\n return new disposable_1.DisposableDelegate(function () {\n if (id === overrideCursorID) {\n document.body.style.cursor = '';\n document.body.classList.remove('p-mod-override-cursor');\n }\n });\n }\n Drag.overrideCursor = overrideCursor;\n /**\n * The internal id for the active cursor override.\n */\n var overrideCursorID = 0;\n})(Drag = exports.Drag || (exports.Drag = {}));\nexports.Drag = Drag;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The size of a drag scroll edge, in pixels.\n */\n Private.SCROLL_EDGE_SIZE = 20;\n /**\n * Validate the given action is one of the supported actions.\n *\n * Returns the given action or `'none'` if the action is unsupported.\n */\n function validateAction(action, supported) {\n return (actionTable[action] & supportedTable[supported]) ? action : 'none';\n }\n Private.validateAction = validateAction;\n /**\n * Create a left mouse event at the given position.\n *\n * @param type - The event type for the mouse event.\n *\n * @param clientX - The client X position.\n *\n * @param clientY - The client Y position.\n *\n * @returns A newly created and initialized mouse event.\n */\n function createMouseEvent(type, clientX, clientY) {\n var event = document.createEvent('MouseEvent');\n event.initMouseEvent(type, true, true, window, 0, 0, 0, clientX, clientY, false, false, false, false, 0, null);\n return event;\n }\n Private.createMouseEvent = createMouseEvent;\n /**\n * Find the drag scroll target under the mouse, if any.\n */\n function findScrollTarget(event) {\n // Look up the client mouse position.\n var x = event.clientX;\n var y = event.clientY;\n // Get the element under the mouse.\n var element = document.elementFromPoint(x, y);\n // Search for a scrollable target based on the mouse position.\n // The null assert in third clause of for-loop is required due to:\n // https://github.com/Microsoft/TypeScript/issues/14143\n for (; element; element = element.parentElement) {\n // Ignore elements which are not marked as scrollable.\n if (!element.hasAttribute('data-p-dragscroll')) {\n continue;\n }\n // Set up the coordinate offsets for the element.\n var offsetX = 0;\n var offsetY = 0;\n if (element === document.body) {\n offsetX = window.pageXOffset;\n offsetY = window.pageYOffset;\n }\n // Get the element bounds in viewport coordinates.\n var r = element.getBoundingClientRect();\n var top_1 = r.top + offsetY;\n var left = r.left + offsetX;\n var right = left + r.width;\n var bottom = top_1 + r.height;\n // Skip the element if it's not under the mouse.\n if (x < left || x >= right || y < top_1 || y >= bottom) {\n continue;\n }\n // Compute the distance to each edge.\n var dl = x - left + 1;\n var dt = y - top_1 + 1;\n var dr = right - x;\n var db = bottom - y;\n // Find the smallest of the edge distances.\n var distance = Math.min(dl, dt, dr, db);\n // Skip the element if the mouse is not within a scroll edge.\n if (distance > Private.SCROLL_EDGE_SIZE) {\n continue;\n }\n // Set up the edge result variable.\n var edge = void 0;\n // Find the edge for the computed distance.\n switch (distance) {\n case db:\n edge = 'bottom';\n break;\n case dt:\n edge = 'top';\n break;\n case dr:\n edge = 'right';\n break;\n case dl:\n edge = 'left';\n break;\n default:\n throw 'unreachable';\n }\n // Compute how much the element can scroll in width and height.\n var dsw = element.scrollWidth - element.clientWidth;\n var dsh = element.scrollHeight - element.clientHeight;\n // Determine if the element should be scrolled for the edge.\n var shouldScroll = void 0;\n switch (edge) {\n case 'top':\n shouldScroll = dsh > 0 && element.scrollTop > 0;\n break;\n case 'left':\n shouldScroll = dsw > 0 && element.scrollLeft > 0;\n break;\n case 'right':\n shouldScroll = dsw > 0 && element.scrollLeft < dsw;\n break;\n case 'bottom':\n shouldScroll = dsh > 0 && element.scrollTop < dsh;\n break;\n default:\n throw 'unreachable';\n }\n // Skip the element if it should not be scrolled.\n if (!shouldScroll) {\n continue;\n }\n // Return the drag scroll target.\n return { element: element, edge: edge, distance: distance };\n }\n // No drag scroll target was found.\n return null;\n }\n Private.findScrollTarget = findScrollTarget;\n /**\n * Dispatch a drag enter event to the indicated element.\n *\n * @param drag - The drag object associated with the action.\n *\n * @param currElem - The currently indicated element, or `null`. This\n * is the \"immediate user selection\" from the whatwg spec.\n *\n * @param currTarget - The current drag target element, or `null`. This\n * is the \"current target element\" from the whatwg spec.\n *\n * @param event - The mouse event related to the action.\n *\n * @returns The element to use as the current drag target. This is the\n * \"current target element\" from the whatwg spec, and may be `null`.\n *\n * #### Notes\n * This largely implements the drag enter portion of the whatwg spec:\n * https://html.spec.whatwg.org/multipage/interaction.html#drag-and-drop-processing-model\n */\n function dispatchDragEnter(drag, currElem, currTarget, event) {\n // If the current element is null, return null as the new target.\n if (!currElem) {\n return null;\n }\n // Dispatch a drag enter event to the current element.\n var dragEvent = createDragEvent('p-dragenter', drag, event, currTarget);\n var canceled = !currElem.dispatchEvent(dragEvent);\n // If the event was canceled, use the current element as the new target.\n if (canceled) {\n return currElem;\n }\n // If the current element is the document body, keep the original target.\n if (currElem === document.body) {\n return currTarget;\n }\n // Dispatch a drag enter event on the document body.\n dragEvent = createDragEvent('p-dragenter', drag, event, currTarget);\n document.body.dispatchEvent(dragEvent);\n // Ignore the event cancellation, and use the body as the new target.\n return document.body;\n }\n Private.dispatchDragEnter = dispatchDragEnter;\n /**\n * Dispatch a drag exit event to the indicated element.\n *\n * @param drag - The drag object associated with the action.\n *\n * @param prevTarget - The previous target element, or `null`. This\n * is the previous \"current target element\" from the whatwg spec.\n *\n * @param currTarget - The current drag target element, or `null`. This\n * is the \"current target element\" from the whatwg spec.\n *\n * @param event - The mouse event related to the action.\n *\n * #### Notes\n * This largely implements the drag exit portion of the whatwg spec:\n * https://html.spec.whatwg.org/multipage/interaction.html#drag-and-drop-processing-model\n */\n function dispatchDragExit(drag, prevTarget, currTarget, event) {\n // If the previous target is null, do nothing.\n if (!prevTarget) {\n return;\n }\n // Dispatch the drag exit event to the previous target.\n var dragEvent = createDragEvent('p-dragexit', drag, event, currTarget);\n prevTarget.dispatchEvent(dragEvent);\n }\n Private.dispatchDragExit = dispatchDragExit;\n /**\n * Dispatch a drag leave event to the indicated element.\n *\n * @param drag - The drag object associated with the action.\n *\n * @param prevTarget - The previous target element, or `null`. This\n * is the previous \"current target element\" from the whatwg spec.\n *\n * @param currTarget - The current drag target element, or `null`. This\n * is the \"current target element\" from the whatwg spec.\n *\n * @param event - The mouse event related to the action.\n *\n * #### Notes\n * This largely implements the drag leave portion of the whatwg spec:\n * https://html.spec.whatwg.org/multipage/interaction.html#drag-and-drop-processing-model\n */\n function dispatchDragLeave(drag, prevTarget, currTarget, event) {\n // If the previous target is null, do nothing.\n if (!prevTarget) {\n return;\n }\n // Dispatch the drag leave event to the previous target.\n var dragEvent = createDragEvent('p-dragleave', drag, event, currTarget);\n prevTarget.dispatchEvent(dragEvent);\n }\n Private.dispatchDragLeave = dispatchDragLeave;\n /**\n * Dispatch a drag over event to the indicated element.\n *\n * @param drag - The drag object associated with the action.\n *\n * @param currTarget - The current drag target element, or `null`. This\n * is the \"current target element\" from the whatwg spec.\n *\n * @param event - The mouse event related to the action.\n *\n * @returns The `DropAction` result of the drag over event.\n *\n * #### Notes\n * This largely implements the drag over portion of the whatwg spec:\n * https://html.spec.whatwg.org/multipage/interaction.html#drag-and-drop-processing-model\n */\n function dispatchDragOver(drag, currTarget, event) {\n // If there is no current target, the drop action is none.\n if (!currTarget) {\n return 'none';\n }\n // Dispatch the drag over event to the current target.\n var dragEvent = createDragEvent('p-dragover', drag, event, null);\n var canceled = !currTarget.dispatchEvent(dragEvent);\n // If the event was canceled, return the drop action result.\n if (canceled) {\n return dragEvent.dropAction;\n }\n // Otherwise, the effective drop action is none.\n return 'none';\n }\n Private.dispatchDragOver = dispatchDragOver;\n /**\n * Dispatch a drop event to the indicated element.\n *\n * @param drag - The drag object associated with the action.\n *\n * @param currTarget - The current drag target element, or `null`. This\n * is the \"current target element\" from the whatwg spec.\n *\n * @param event - The mouse event related to the action.\n *\n * @returns The `DropAction` result of the drop event.\n *\n * #### Notes\n * This largely implements the drag over portion of the whatwg spec:\n * https://html.spec.whatwg.org/multipage/interaction.html#drag-and-drop-processing-model\n */\n function dispatchDrop(drag, currTarget, event) {\n // If there is no current target, the drop action is none.\n if (!currTarget) {\n return 'none';\n }\n // Dispatch the drop event to the current target.\n var dragEvent = createDragEvent('p-drop', drag, event, null);\n var canceled = !currTarget.dispatchEvent(dragEvent);\n // If the event was canceled, return the drop action result.\n if (canceled) {\n return dragEvent.dropAction;\n }\n // Otherwise, the effective drop action is none.\n return 'none';\n }\n Private.dispatchDrop = dispatchDrop;\n /**\n * A lookup table from drop action to bit value.\n */\n var actionTable = {\n 'none': 0x0,\n 'copy': 0x1,\n 'link': 0x2,\n 'move': 0x4\n };\n /**\n * A lookup table from supported action to drop action bit mask.\n */\n var supportedTable = {\n 'none': actionTable['none'],\n 'copy': actionTable['copy'],\n 'link': actionTable['link'],\n 'move': actionTable['move'],\n 'copy-link': actionTable['copy'] | actionTable['link'],\n 'copy-move': actionTable['copy'] | actionTable['move'],\n 'link-move': actionTable['link'] | actionTable['move'],\n 'all': actionTable['copy'] | actionTable['link'] | actionTable['move']\n };\n /**\n * Create a new initialized `IDragEvent` from the given data.\n *\n * @param type - The event type for the drag event.\n *\n * @param drag - The drag object to use for seeding the drag data.\n *\n * @param event - The mouse event to use for seeding the mouse data.\n *\n * @param related - The related target for the event, or `null`.\n *\n * @returns A new object which implements `IDragEvent`.\n */\n function createDragEvent(type, drag, event, related) {\n // Create a new mouse event to use as the drag event. Currently,\n // JS engines do now allow user-defined Event subclasses.\n var dragEvent = document.createEvent('MouseEvent');\n // Initialize the mouse event data.\n dragEvent.initMouseEvent(type, true, true, window, 0, event.screenX, event.screenY, event.clientX, event.clientY, event.ctrlKey, event.altKey, event.shiftKey, event.metaKey, event.button, related);\n // Forcefully add the custom drag event properties.\n dragEvent.dropAction = 'none';\n dragEvent.mimeData = drag.mimeData;\n dragEvent.proposedAction = drag.proposedAction;\n dragEvent.supportedActions = drag.supportedActions;\n dragEvent.source = drag.source;\n // Return the fully initialized drag event.\n return dragEvent;\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/dragdrop/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/keyboard/lib/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/keyboard/lib/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * Get the global application keyboard layout instance.\n *\n * @returns The keyboard layout for use by the application.\n *\n * #### Notes\n * The default keyboard layout is US-English.\n */\nfunction getKeyboardLayout() {\n return Private.keyboardLayout;\n}\nexports.getKeyboardLayout = getKeyboardLayout;\n/**\n * Set the global application keyboard layout instance.\n *\n * @param - The keyboard layout for use by the application.\n *\n * #### Notes\n * The keyboard layout should typically be set on application startup\n * to a layout which is appropriate for the user's system.\n */\nfunction setKeyboardLayout(layout) {\n Private.keyboardLayout = layout;\n}\nexports.setKeyboardLayout = setKeyboardLayout;\n/**\n * A concrete implementation of [[IKeyboardLayout]] based on keycodes.\n *\n * The `keyCode` property of a `'keydown'` event is a browser and OS\n * specific representation of the physical key (not character) which\n * was pressed on a keyboard. While not the most convenient API, it\n * is currently the only one which works reliably on all browsers.\n *\n * This class accepts a user-defined mapping of keycode to key, which\n * allows for reliable shortcuts tailored to the user's system.\n */\nvar KeycodeLayout = /** @class */ (function () {\n /**\n * Construct a new keycode layout.\n *\n * @param name - The human readable name for the layout.\n *\n * @param codes - A mapping of keycode to key value.\n */\n function KeycodeLayout(name, codes) {\n this.name = name;\n this._codes = codes;\n this._keys = KeycodeLayout.extractKeys(codes);\n }\n /**\n * Get an array of the key values supported by the layout.\n *\n * @returns A new array of the supported key values.\n */\n KeycodeLayout.prototype.keys = function () {\n return Object.keys(this._keys);\n };\n /**\n * Test whether the given key is a valid value for the layout.\n *\n * @param key - The user provided key to test for validity.\n *\n * @returns `true` if the key is valid, `false` otherwise.\n */\n KeycodeLayout.prototype.isValidKey = function (key) {\n return key in this._keys;\n };\n /**\n * Get the key for a `'keydown'` event.\n *\n * @param event - The event object for a `'keydown'` event.\n *\n * @returns The associated key value, or an empty string if\n * the event does not represent a valid primary key.\n */\n KeycodeLayout.prototype.keyForKeydownEvent = function (event) {\n return this._codes[event.keyCode] || '';\n };\n return KeycodeLayout;\n}());\nexports.KeycodeLayout = KeycodeLayout;\n/**\n * The namespace for the `KeycodeLayout` class statics.\n */\n(function (KeycodeLayout) {\n /**\n * Extract the set of keys from a code map.\n *\n * @param code - The code map of interest.\n *\n * @returns A set of the keys in the code map.\n */\n function extractKeys(codes) {\n var keys = Object.create(null);\n for (var c in codes) {\n keys[codes[c]] = true;\n }\n return keys;\n }\n KeycodeLayout.extractKeys = extractKeys;\n})(KeycodeLayout = exports.KeycodeLayout || (exports.KeycodeLayout = {}));\nexports.KeycodeLayout = KeycodeLayout;\n/**\n * A keycode-based keyboard layout for US English keyboards.\n *\n * This layout is valid for the following OS/Browser combinations.\n *\n * - Windows\n * - Chrome\n * - Firefox\n * - IE\n *\n * - OSX\n * - Chrome\n * - Firefox\n * - Safari\n *\n * - Linux\n * - Chrome\n * - Firefox\n *\n * Other combinations may also work, but are untested.\n */\nexports.EN_US = new KeycodeLayout('en-us', {\n 8: 'Backspace',\n 9: 'Tab',\n 13: 'Enter',\n 19: 'Pause',\n 27: 'Escape',\n 32: 'Space',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 48: '0',\n 49: '1',\n 50: '2',\n 51: '3',\n 52: '4',\n 53: '5',\n 54: '6',\n 55: '7',\n 56: '8',\n 57: '9',\n 59: ';',\n 61: '=',\n 65: 'A',\n 66: 'B',\n 67: 'C',\n 68: 'D',\n 69: 'E',\n 70: 'F',\n 71: 'G',\n 72: 'H',\n 73: 'I',\n 74: 'J',\n 75: 'K',\n 76: 'L',\n 77: 'M',\n 78: 'N',\n 79: 'O',\n 80: 'P',\n 81: 'Q',\n 82: 'R',\n 83: 'S',\n 84: 'T',\n 85: 'U',\n 86: 'V',\n 87: 'W',\n 88: 'X',\n 89: 'Y',\n 90: 'Z',\n 93: 'ContextMenu',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'F1',\n 113: 'F2',\n 114: 'F3',\n 115: 'F4',\n 116: 'F5',\n 117: 'F6',\n 118: 'F7',\n 119: 'F8',\n 120: 'F9',\n 121: 'F10',\n 122: 'F11',\n 123: 'F12',\n 173: '-',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: '\\''\n});\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The global keyboard layout instance.\n */\n Private.keyboardLayout = exports.EN_US;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/keyboard/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/messaging/lib/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/messaging/lib/index.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n }\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\r\nvar collections_1 = __webpack_require__(/*! @phosphor/collections */ \"./node_modules/@phosphor/collections/lib/index.js\");\r\n/**\r\n * A message which can be delivered to a message handler.\r\n *\r\n * #### Notes\r\n * This class may be subclassed to create complex message types.\r\n */\r\nvar Message = /** @class */ (function () {\r\n /**\r\n * Construct a new message.\r\n *\r\n * @param type - The type of the message.\r\n */\r\n function Message(type) {\r\n this.type = type;\r\n }\r\n Object.defineProperty(Message.prototype, \"isConflatable\", {\r\n /**\r\n * Test whether the message is conflatable.\r\n *\r\n * #### Notes\r\n * Message conflation is an advanced topic. Most message types will\r\n * not make use of this feature.\r\n *\r\n * If a conflatable message is posted to a handler while another\r\n * conflatable message of the same `type` has already been posted\r\n * to the handler, the `conflate()` method of the existing message\r\n * will be invoked. If that method returns `true`, the new message\r\n * will not be enqueued. This allows messages to be compressed, so\r\n * that only a single instance of the message type is processed per\r\n * cycle, no matter how many times messages of that type are posted.\r\n *\r\n * Custom message types may reimplement this property.\r\n *\r\n * The default implementation is always `false`.\r\n */\r\n get: function () {\r\n return false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Conflate this message with another message of the same `type`.\r\n *\r\n * @param other - A conflatable message of the same `type`.\r\n *\r\n * @returns `true` if the message was successfully conflated, or\r\n * `false` otherwise.\r\n *\r\n * #### Notes\r\n * Message conflation is an advanced topic. Most message types will\r\n * not make use of this feature.\r\n *\r\n * This method is called automatically by the message loop when the\r\n * given message is posted to the handler paired with this message.\r\n * This message will already be enqueued and conflatable, and the\r\n * given message will have the same `type` and also be conflatable.\r\n *\r\n * This method should merge the state of the other message into this\r\n * message as needed so that when this message is finally delivered\r\n * to the handler, it receives the most up-to-date information.\r\n *\r\n * If this method returns `true`, it signals that the other message\r\n * was successfully conflated and that message will not be enqueued.\r\n *\r\n * If this method returns `false`, the other message will be enqueued\r\n * for normal delivery.\r\n *\r\n * Custom message types may reimplement this method.\r\n *\r\n * The default implementation always returns `false`.\r\n */\r\n Message.prototype.conflate = function (other) {\r\n return false;\r\n };\r\n return Message;\r\n}());\r\nexports.Message = Message;\r\n/**\r\n * A convenience message class which conflates automatically.\r\n *\r\n * #### Notes\r\n * Message conflation is an advanced topic. Most user code will not\r\n * make use of this class.\r\n *\r\n * This message class is useful for creating message instances which\r\n * should be conflated, but which have no state other than `type`.\r\n *\r\n * If conflation of stateful messages is required, a custom `Message`\r\n * subclass should be created.\r\n */\r\nvar ConflatableMessage = /** @class */ (function (_super) {\r\n __extends(ConflatableMessage, _super);\r\n function ConflatableMessage() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ConflatableMessage.prototype, \"isConflatable\", {\r\n /**\r\n * Test whether the message is conflatable.\r\n *\r\n * #### Notes\r\n * This property is always `true`.\r\n */\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Conflate this message with another message of the same `type`.\r\n *\r\n * #### Notes\r\n * This method always returns `true`.\r\n */\r\n ConflatableMessage.prototype.conflate = function (other) {\r\n return true;\r\n };\r\n return ConflatableMessage;\r\n}(Message));\r\nexports.ConflatableMessage = ConflatableMessage;\r\n/**\r\n * The namespace for the global singleton message loop.\r\n */\r\nvar MessageLoop;\r\n(function (MessageLoop) {\r\n /**\r\n * Send a message to a message handler to process immediately.\r\n *\r\n * @param handler - The handler which should process the message.\r\n *\r\n * @param msg - The message to deliver to the handler.\r\n *\r\n * #### Notes\r\n * The message will first be sent through any installed message hooks\r\n * for the handler. If the message passes all hooks, it will then be\r\n * delivered to the `processMessage` method of the handler.\r\n *\r\n * The message will not be conflated with pending posted messages.\r\n *\r\n * Exceptions in hooks and handlers will be caught and logged.\r\n */\r\n function sendMessage(handler, msg) {\r\n // Lookup the message hooks for the handler.\r\n var hooks = messageHooks.get(handler);\r\n // Handle the common case of no installed hooks.\r\n if (!hooks || hooks.length === 0) {\r\n invokeHandler(handler, msg);\r\n return;\r\n }\r\n // Invoke the message hooks starting with the newest first.\r\n var passed = algorithm_1.every(algorithm_1.retro(hooks), function (hook) {\r\n return hook ? invokeHook(hook, handler, msg) : true;\r\n });\r\n // Invoke the handler if the message passes all hooks.\r\n if (passed) {\r\n invokeHandler(handler, msg);\r\n }\r\n }\r\n MessageLoop.sendMessage = sendMessage;\r\n /**\r\n * Post a message to a message handler to process in the future.\r\n *\r\n * @param handler - The handler which should process the message.\r\n *\r\n * @param msg - The message to post to the handler.\r\n *\r\n * #### Notes\r\n * The message will be conflated with the pending posted messages for\r\n * the handler, if possible. If the message is not conflated, it will\r\n * be queued for normal delivery on the next cycle of the event loop.\r\n *\r\n * Exceptions in hooks and handlers will be caught and logged.\r\n */\r\n function postMessage(handler, msg) {\r\n // Handle the common case of a non-conflatable message.\r\n if (!msg.isConflatable) {\r\n enqueueMessage(handler, msg);\r\n return;\r\n }\r\n // Conflate the message with an existing message if possible.\r\n var conflated = algorithm_1.some(messageQueue, function (posted) {\r\n if (posted.handler !== handler) {\r\n return false;\r\n }\r\n if (!posted.msg) {\r\n return false;\r\n }\r\n if (posted.msg.type !== msg.type) {\r\n return false;\r\n }\r\n if (!posted.msg.isConflatable) {\r\n return false;\r\n }\r\n return posted.msg.conflate(msg);\r\n });\r\n // Enqueue the message if it was not conflated.\r\n if (!conflated) {\r\n enqueueMessage(handler, msg);\r\n }\r\n }\r\n MessageLoop.postMessage = postMessage;\r\n /**\r\n * Install a message hook for a message handler.\r\n *\r\n * @param handler - The message handler of interest.\r\n *\r\n * @param hook - The message hook to install.\r\n *\r\n * #### Notes\r\n * A message hook is invoked before a message is delivered to the\r\n * handler. If the hook returns `false`, no other hooks will be\r\n * invoked and the message will not be delivered to the handler.\r\n *\r\n * The most recently installed message hook is executed first.\r\n *\r\n * If the hook is already installed, this is a no-op.\r\n */\r\n function installMessageHook(handler, hook) {\r\n // Lookup the hooks for the handler.\r\n var hooks = messageHooks.get(handler);\r\n // Bail early if the hook is already installed.\r\n if (hooks && hooks.indexOf(hook) !== -1) {\r\n return;\r\n }\r\n // Add the hook to the end, so it will be the first to execute.\r\n if (!hooks) {\r\n messageHooks.set(handler, [hook]);\r\n }\r\n else {\r\n hooks.push(hook);\r\n }\r\n }\r\n MessageLoop.installMessageHook = installMessageHook;\r\n /**\r\n * Remove an installed message hook for a message handler.\r\n *\r\n * @param handler - The message handler of interest.\r\n *\r\n * @param hook - The message hook to remove.\r\n *\r\n * #### Notes\r\n * It is safe to call this function while the hook is executing.\r\n *\r\n * If the hook is not installed, this is a no-op.\r\n */\r\n function removeMessageHook(handler, hook) {\r\n // Lookup the hooks for the handler.\r\n var hooks = messageHooks.get(handler);\r\n // Bail early if the hooks do not exist.\r\n if (!hooks) {\r\n return;\r\n }\r\n // Lookup the index of the hook and bail if not found.\r\n var i = hooks.indexOf(hook);\r\n if (i === -1) {\r\n return;\r\n }\r\n // Clear the hook and schedule a cleanup of the array.\r\n hooks[i] = null;\r\n scheduleCleanup(hooks);\r\n }\r\n MessageLoop.removeMessageHook = removeMessageHook;\r\n /**\r\n * Clear all message data associated with a message handler.\r\n *\r\n * @param handler - The message handler of interest.\r\n *\r\n * #### Notes\r\n * This will clear all posted messages and hooks for the handler.\r\n */\r\n function clearData(handler) {\r\n // Lookup the hooks for the handler.\r\n var hooks = messageHooks.get(handler);\r\n // Clear all messsage hooks for the handler.\r\n if (hooks && hooks.length > 0) {\r\n algorithm_1.ArrayExt.fill(hooks, null);\r\n scheduleCleanup(hooks);\r\n }\r\n // Clear all posted messages for the handler.\r\n algorithm_1.each(messageQueue, function (posted) {\r\n if (posted.handler === handler) {\r\n posted.handler = null;\r\n posted.msg = null;\r\n }\r\n });\r\n }\r\n MessageLoop.clearData = clearData;\r\n /**\r\n * Process the pending posted messages in the queue immediately.\r\n *\r\n * #### Notes\r\n * This function is useful when posted messages must be processed\r\n * immediately, instead of on the next animation frame.\r\n *\r\n * This function should normally not be needed, but it may be\r\n * required to work around certain browser idiosyncrasies.\r\n *\r\n * Recursing into this function is a no-op.\r\n */\r\n function flush() {\r\n // Bail if recursion is detected or if there is no pending task.\r\n if (flushGuard || loopTaskID === 0) {\r\n return;\r\n }\r\n // Unschedule the pending loop task.\r\n unschedule(loopTaskID);\r\n // Run the message loop within the recursion guard.\r\n flushGuard = true;\r\n runMessageLoop();\r\n flushGuard = false;\r\n }\r\n MessageLoop.flush = flush;\r\n /**\r\n * Get the message loop exception handler.\r\n *\r\n * @returns The current exception handler.\r\n *\r\n * #### Notes\r\n * The default exception handler is `console.error`.\r\n */\r\n function getExceptionHandler() {\r\n return exceptionHandler;\r\n }\r\n MessageLoop.getExceptionHandler = getExceptionHandler;\r\n /**\r\n * Set the message loop exception handler.\r\n *\r\n * @param handler - The function to use as the exception handler.\r\n *\r\n * @returns The old exception handler.\r\n *\r\n * #### Notes\r\n * The exception handler is invoked when a message handler or a\r\n * message hook throws an exception.\r\n */\r\n function setExceptionHandler(handler) {\r\n var old = exceptionHandler;\r\n exceptionHandler = handler;\r\n return old;\r\n }\r\n MessageLoop.setExceptionHandler = setExceptionHandler;\r\n /**\r\n * The queue of posted message pairs.\r\n */\r\n var messageQueue = new collections_1.LinkedList();\r\n /**\r\n * A mapping of handler to array of installed message hooks.\r\n */\r\n var messageHooks = new WeakMap();\r\n /**\r\n * A set of message hook arrays which are pending cleanup.\r\n */\r\n var dirtySet = new Set();\r\n /**\r\n * The message loop exception handler.\r\n */\r\n var exceptionHandler = function (err) {\r\n console.error(err);\r\n };\r\n /**\r\n * The id of the pending loop task animation frame.\r\n */\r\n var loopTaskID = 0;\r\n /**\r\n * A guard flag to prevent flush recursion.\r\n */\r\n var flushGuard = false;\r\n /**\r\n * A function to schedule an event loop callback.\r\n */\r\n var schedule = (function () {\r\n var ok = typeof requestAnimationFrame === 'function';\r\n return ok ? requestAnimationFrame : setImmediate;\r\n })();\r\n /**\r\n * A function to unschedule an event loop callback.\r\n */\r\n var unschedule = (function () {\r\n var ok = typeof cancelAnimationFrame === 'function';\r\n return ok ? cancelAnimationFrame : clearImmediate;\r\n })();\r\n /**\r\n * Invoke a message hook with the specified handler and message.\r\n *\r\n * Returns the result of the hook, or `true` if the hook throws.\r\n *\r\n * Exceptions in the hook will be caught and logged.\r\n */\r\n function invokeHook(hook, handler, msg) {\r\n var result = true;\r\n try {\r\n if (typeof hook === 'function') {\r\n result = hook(handler, msg);\r\n }\r\n else {\r\n result = hook.messageHook(handler, msg);\r\n }\r\n }\r\n catch (err) {\r\n exceptionHandler(err);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Invoke a message handler with the specified message.\r\n *\r\n * Exceptions in the handler will be caught and logged.\r\n */\r\n function invokeHandler(handler, msg) {\r\n try {\r\n handler.processMessage(msg);\r\n }\r\n catch (err) {\r\n exceptionHandler(err);\r\n }\r\n }\r\n /**\r\n * Add a message to the end of the message queue.\r\n *\r\n * This will automatically schedule a run of the message loop.\r\n */\r\n function enqueueMessage(handler, msg) {\r\n // Add the posted message to the queue.\r\n messageQueue.addLast({ handler: handler, msg: msg });\r\n // Bail if a loop task is already pending.\r\n if (loopTaskID !== 0) {\r\n return;\r\n }\r\n // Schedule a run of the message loop.\r\n loopTaskID = schedule(runMessageLoop);\r\n }\r\n /**\r\n * Run an iteration of the message loop.\r\n *\r\n * This will process all pending messages in the queue. If a message\r\n * is added to the queue while the message loop is running, it will\r\n * be processed on the next cycle of the loop.\r\n */\r\n function runMessageLoop() {\r\n // Clear the task ID so the next loop can be scheduled.\r\n loopTaskID = 0;\r\n // If the message queue is empty, there is nothing else to do.\r\n if (messageQueue.isEmpty) {\r\n return;\r\n }\r\n // Add a sentinel value to the end of the queue. The queue will\r\n // only be processed up to the sentinel. Messages posted during\r\n // this cycle will execute on the next cycle.\r\n var sentinel = { handler: null, msg: null };\r\n messageQueue.addLast(sentinel);\r\n // Enter the message loop.\r\n while (true) {\r\n // Remove the first posted message in the queue.\r\n var posted = messageQueue.removeFirst();\r\n // If the value is the sentinel, exit the loop.\r\n if (posted === sentinel) {\r\n return;\r\n }\r\n // Dispatch the message if it has not been cleared.\r\n if (posted.handler && posted.msg) {\r\n sendMessage(posted.handler, posted.msg);\r\n }\r\n }\r\n }\r\n /**\r\n * Schedule a cleanup of a message hooks array.\r\n *\r\n * This will add the array to the dirty set and schedule a deferred\r\n * cleanup of the array contents. On cleanup, any `null` hook will\r\n * be removed from the array.\r\n */\r\n function scheduleCleanup(hooks) {\r\n if (dirtySet.size === 0) {\r\n schedule(cleanupDirtySet);\r\n }\r\n dirtySet.add(hooks);\r\n }\r\n /**\r\n * Cleanup the message hook arrays in the dirty set.\r\n *\r\n * This function should only be invoked asynchronously, when the\r\n * stack frame is guaranteed to not be on the path of user code.\r\n */\r\n function cleanupDirtySet() {\r\n dirtySet.forEach(cleanupHooks);\r\n dirtySet.clear();\r\n }\r\n /**\r\n * Cleanup the dirty hooks in a message hooks array.\r\n *\r\n * This will remove any `null` hook from the array.\r\n *\r\n * This function should only be invoked asynchronously, when the\r\n * stack frame is guaranteed to not be on the path of user code.\r\n */\r\n function cleanupHooks(hooks) {\r\n algorithm_1.ArrayExt.removeAllWhere(hooks, isNull);\r\n }\r\n /**\r\n * Test whether a value is `null`.\r\n */\r\n function isNull(value) {\r\n return value === null;\r\n }\r\n})(MessageLoop = exports.MessageLoop || (exports.MessageLoop = {}));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/messaging/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/properties/lib/index.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/properties/lib/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * A class which attaches a value to an external object.\n *\n * #### Notes\n * Attached properties are used to extend the state of an object with\n * semantic data from an unrelated class. They also encapsulate value\n * creation, coercion, and notification.\n *\n * Because attached property values are stored in a hash table, which\n * in turn is stored in a WeakMap keyed on the owner object, there is\n * non-trivial storage overhead involved in their use. The pattern is\n * therefore best used for the storage of rare data.\n */\nvar AttachedProperty = /** @class */ (function () {\n /**\n * Construct a new attached property.\n *\n * @param options - The options for initializing the property.\n */\n function AttachedProperty(options) {\n this._pid = Private.nextPID();\n this.name = options.name;\n this._create = options.create;\n this._coerce = options.coerce || null;\n this._compare = options.compare || null;\n this._changed = options.changed || null;\n }\n /**\n * Get the current value of the property for a given owner.\n *\n * @param owner - The property owner of interest.\n *\n * @returns The current value of the property.\n *\n * #### Notes\n * If the value has not yet been set, the default value will be\n * computed and assigned as the current value of the property.\n */\n AttachedProperty.prototype.get = function (owner) {\n var value;\n var map = Private.ensureMap(owner);\n if (this._pid in map) {\n value = map[this._pid];\n }\n else {\n value = map[this._pid] = this._createValue(owner);\n }\n return value;\n };\n /**\n * Set the current value of the property for a given owner.\n *\n * @param owner - The property owner of interest.\n *\n * @param value - The value for the property.\n *\n * #### Notes\n * If the value has not yet been set, the default value will be\n * computed and used as the previous value for the comparison.\n */\n AttachedProperty.prototype.set = function (owner, value) {\n var oldValue;\n var map = Private.ensureMap(owner);\n if (this._pid in map) {\n oldValue = map[this._pid];\n }\n else {\n oldValue = map[this._pid] = this._createValue(owner);\n }\n var newValue = this._coerceValue(owner, value);\n this._maybeNotify(owner, oldValue, map[this._pid] = newValue);\n };\n /**\n * Explicitly coerce the current property value for a given owner.\n *\n * @param owner - The property owner of interest.\n *\n * #### Notes\n * If the value has not yet been set, the default value will be\n * computed and used as the previous value for the comparison.\n */\n AttachedProperty.prototype.coerce = function (owner) {\n var oldValue;\n var map = Private.ensureMap(owner);\n if (this._pid in map) {\n oldValue = map[this._pid];\n }\n else {\n oldValue = map[this._pid] = this._createValue(owner);\n }\n var newValue = this._coerceValue(owner, oldValue);\n this._maybeNotify(owner, oldValue, map[this._pid] = newValue);\n };\n /**\n * Get or create the default value for the given owner.\n */\n AttachedProperty.prototype._createValue = function (owner) {\n var create = this._create;\n return create(owner);\n };\n /**\n * Coerce the value for the given owner.\n */\n AttachedProperty.prototype._coerceValue = function (owner, value) {\n var coerce = this._coerce;\n return coerce ? coerce(owner, value) : value;\n };\n /**\n * Compare the old value and new value for equality.\n */\n AttachedProperty.prototype._compareValue = function (oldValue, newValue) {\n var compare = this._compare;\n return compare ? compare(oldValue, newValue) : oldValue === newValue;\n };\n /**\n * Run the change notification if the given values are different.\n */\n AttachedProperty.prototype._maybeNotify = function (owner, oldValue, newValue) {\n var changed = this._changed;\n if (changed && !this._compareValue(oldValue, newValue)) {\n changed(owner, oldValue, newValue);\n }\n };\n return AttachedProperty;\n}());\nexports.AttachedProperty = AttachedProperty;\n/**\n * The namespace for the `AttachedProperty` class statics.\n */\n(function (AttachedProperty) {\n /**\n * Clear the stored property data for the given owner.\n *\n * @param owner - The property owner of interest.\n *\n * #### Notes\n * This will clear all property values for the owner, but it will\n * **not** run the change notification for any of the properties.\n */\n function clearData(owner) {\n Private.ownerData.delete(owner);\n }\n AttachedProperty.clearData = clearData;\n})(AttachedProperty = exports.AttachedProperty || (exports.AttachedProperty = {}));\nexports.AttachedProperty = AttachedProperty;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * A weak mapping of property owner to property map.\n */\n Private.ownerData = new WeakMap();\n /**\n * A function which computes successive unique property ids.\n */\n Private.nextPID = (function () {\n var id = 0;\n return function () {\n var rand = Math.random();\n var stem = (\"\" + rand).slice(2);\n return \"pid-\" + stem + \"-\" + id++;\n };\n })();\n /**\n * Lookup the data map for the property owner.\n *\n * This will create the map if one does not already exist.\n */\n function ensureMap(owner) {\n var map = Private.ownerData.get(owner);\n if (map) {\n return map;\n }\n map = Object.create(null);\n Private.ownerData.set(owner, map);\n return map;\n }\n Private.ensureMap = ensureMap;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/properties/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/signaling/lib/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/signaling/lib/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\n/**\n * A concrete implementation of `ISignal`.\n *\n * #### Example\n * ```typescript\n * import { ISignal, Signal } from '@phosphor/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get valueChanged: ISignal {\n * return this._valueChanged;\n * }\n *\n * get value(): number {\n * return this._value;\n * }\n *\n * set value(value: number) {\n * if (value === this._value) {\n * return;\n * }\n * this._value = value;\n * this._valueChanged.emit(value);\n * }\n *\n * private _value = 0;\n * private _valueChanged = new Signal(this);\n * }\n *\n * function logger(sender: SomeClass, value: number): void {\n * console.log(sender.name, value);\n * }\n *\n * let m1 = new SomeClass('foo');\n * let m2 = new SomeClass('bar');\n *\n * m1.valueChanged.connect(logger);\n * m2.valueChanged.connect(logger);\n *\n * m1.value = 42; // logs: foo 42\n * m2.value = 17; // logs: bar 17\n * ```\n */\nvar Signal = /** @class */ (function () {\n /**\n * Construct a new signal.\n *\n * @param sender - The sender which owns the signal.\n */\n function Signal(sender) {\n this.sender = sender;\n }\n /**\n * Connect a slot to the signal.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n Signal.prototype.connect = function (slot, thisArg) {\n return Private.connect(this, slot, thisArg);\n };\n /**\n * Disconnect a slot from the signal.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n Signal.prototype.disconnect = function (slot, thisArg) {\n return Private.disconnect(this, slot, thisArg);\n };\n /**\n * Emit the signal and invoke the connected slots.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n Signal.prototype.emit = function (args) {\n Private.emit(this, args);\n };\n return Signal;\n}());\nexports.Signal = Signal;\n/**\n * The namespace for the `Signal` class statics.\n */\n(function (Signal) {\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectBetween(sender, receiver) {\n Private.disconnectBetween(sender, receiver);\n }\n Signal.disconnectBetween = disconnectBetween;\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n function disconnectSender(sender) {\n Private.disconnectSender(sender);\n }\n Signal.disconnectSender = disconnectSender;\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectReceiver(receiver) {\n Private.disconnectReceiver(receiver);\n }\n Signal.disconnectReceiver = disconnectReceiver;\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectAll(object) {\n Private.disconnectAll(object);\n }\n Signal.disconnectAll = disconnectAll;\n /**\n * Clear all signal data associated with the given object.\n *\n * @param object - The object for which the data should be cleared.\n *\n * #### Notes\n * This removes all signal connections and any other signal data\n * associated with the object.\n */\n function clearData(object) {\n Private.disconnectAll(object);\n }\n Signal.clearData = clearData;\n /**\n * Get the signal exception handler.\n *\n * @returns The current exception handler.\n *\n * #### Notes\n * The default exception handler is `console.error`.\n */\n function getExceptionHandler() {\n return Private.exceptionHandler;\n }\n Signal.getExceptionHandler = getExceptionHandler;\n /**\n * Set the signal exception handler.\n *\n * @param handler - The function to use as the exception handler.\n *\n * @returns The old exception handler.\n *\n * #### Notes\n * The exception handler is invoked when a slot throws an exception.\n */\n function setExceptionHandler(handler) {\n var old = Private.exceptionHandler;\n Private.exceptionHandler = handler;\n return old;\n }\n Signal.setExceptionHandler = setExceptionHandler;\n})(Signal = exports.Signal || (exports.Signal = {}));\nexports.Signal = Signal;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The signal exception handler function.\n */\n Private.exceptionHandler = function (err) {\n console.error(err);\n };\n /**\n * Connect a slot to a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n function connect(signal, slot, thisArg) {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n // Ensure the sender's array of receivers is created.\n var receivers = receiversForSender.get(signal.sender);\n if (!receivers) {\n receivers = [];\n receiversForSender.set(signal.sender, receivers);\n }\n // Bail if a matching connection already exists.\n if (findConnection(receivers, signal, slot, thisArg)) {\n return false;\n }\n // Choose the best object for the receiver.\n var receiver = thisArg || slot;\n // Ensure the receiver's array of senders is created.\n var senders = sendersForReceiver.get(receiver);\n if (!senders) {\n senders = [];\n sendersForReceiver.set(receiver, senders);\n }\n // Create a new connection and add it to the end of each array.\n var connection = { signal: signal, slot: slot, thisArg: thisArg };\n receivers.push(connection);\n senders.push(connection);\n // Indicate a successful connection.\n return true;\n }\n Private.connect = connect;\n /**\n * Disconnect a slot from a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n function disconnect(signal, slot, thisArg) {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n // Lookup the list of receivers, and bail if none exist.\n var receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return false;\n }\n // Bail if no matching connection exits.\n var connection = findConnection(receivers, signal, slot, thisArg);\n if (!connection) {\n return false;\n }\n // Choose the best object for the receiver.\n var receiver = thisArg || slot;\n // Lookup the array of senders, which is now known to exist.\n var senders = sendersForReceiver.get(receiver);\n // Clear the connection and schedule cleanup of the arrays.\n connection.signal = null;\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n // Indicate a successful disconnection.\n return true;\n }\n Private.disconnect = disconnect;\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n */\n function disconnectBetween(sender, receiver) {\n // If there are no receivers, there is nothing to do.\n var receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // If there are no senders, there is nothing to do.\n var senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n // Clear each connection between the sender and receiver.\n algorithm_1.each(senders, function (connection) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n return;\n }\n // Clear the connection if it matches the sender.\n if (connection.signal.sender === sender) {\n connection.signal = null;\n }\n });\n // Schedule a cleanup of the senders and receivers.\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n }\n Private.disconnectBetween = disconnectBetween;\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n function disconnectSender(sender) {\n // If there are no receivers, there is nothing to do.\n var receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // Clear each receiver connection.\n algorithm_1.each(receivers, function (connection) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n return;\n }\n // Choose the best object for the receiver.\n var receiver = connection.thisArg || connection.slot;\n // Clear the connection.\n connection.signal = null;\n // Cleanup the array of senders, which is now known to exist.\n scheduleCleanup(sendersForReceiver.get(receiver));\n });\n // Schedule a cleanup of the receivers.\n scheduleCleanup(receivers);\n }\n Private.disconnectSender = disconnectSender;\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n */\n function disconnectReceiver(receiver) {\n // If there are no senders, there is nothing to do.\n var senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n // Clear each sender connection.\n algorithm_1.each(senders, function (connection) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n return;\n }\n // Lookup the sender for the connection.\n var sender = connection.signal.sender;\n // Clear the connection.\n connection.signal = null;\n // Cleanup the array of receivers, which is now known to exist.\n scheduleCleanup(receiversForSender.get(sender));\n });\n // Schedule a cleanup of the list of senders.\n scheduleCleanup(senders);\n }\n Private.disconnectReceiver = disconnectReceiver;\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n */\n function disconnectAll(object) {\n // Clear and cleanup any receiver connections.\n var receivers = receiversForSender.get(object);\n if (receivers && receivers.length > 0) {\n algorithm_1.each(receivers, function (connection) { connection.signal = null; });\n scheduleCleanup(receivers);\n }\n // Clear and cleanup any sender connections.\n var senders = sendersForReceiver.get(object);\n if (senders && senders.length > 0) {\n algorithm_1.each(senders, function (connection) { connection.signal = null; });\n scheduleCleanup(senders);\n }\n }\n Private.disconnectAll = disconnectAll;\n /**\n * Emit a signal and invoke its connected slots.\n *\n * @param signal - The signal of interest.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n function emit(signal, args) {\n // If there are no receivers, there is nothing to do.\n var receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // Invoke the slots for connections with a matching signal.\n // Any connections added during emission are not invoked.\n for (var i = 0, n = receivers.length; i < n; ++i) {\n var connection = receivers[i];\n if (connection.signal === signal) {\n invokeSlot(connection, args);\n }\n }\n }\n Private.emit = emit;\n /**\n * A weak mapping of sender to array of receiver connections.\n */\n var receiversForSender = new WeakMap();\n /**\n * A weak mapping of receiver to array of sender connections.\n */\n var sendersForReceiver = new WeakMap();\n /**\n * A set of connection arrays which are pending cleanup.\n */\n var dirtySet = new Set();\n /**\n * A function to schedule an event loop callback.\n */\n var schedule = (function () {\n var ok = typeof requestAnimationFrame === 'function';\n // @ts-ignore\n return ok ? requestAnimationFrame : setImmediate;\n })();\n /**\n * Find a connection which matches the given parameters.\n */\n function findConnection(connections, signal, slot, thisArg) {\n return algorithm_1.find(connections, function (connection) { return (connection.signal === signal &&\n connection.slot === slot &&\n connection.thisArg === thisArg); });\n }\n /**\n * Invoke a slot with the given parameters.\n *\n * The connection is assumed to be valid.\n *\n * Exceptions in the slot will be caught and logged.\n */\n function invokeSlot(connection, args) {\n var signal = connection.signal, slot = connection.slot, thisArg = connection.thisArg;\n try {\n slot.call(thisArg, signal.sender, args);\n }\n catch (err) {\n Private.exceptionHandler(err);\n }\n }\n /**\n * Schedule a cleanup of a connection array.\n *\n * This will add the array to the dirty set and schedule a deferred\n * cleanup of the array contents. On cleanup, any connection with a\n * `null` signal will be removed from the array.\n */\n function scheduleCleanup(array) {\n if (dirtySet.size === 0) {\n schedule(cleanupDirtySet);\n }\n dirtySet.add(array);\n }\n /**\n * Cleanup the connection lists in the dirty set.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupDirtySet() {\n dirtySet.forEach(cleanupConnections);\n dirtySet.clear();\n }\n /**\n * Cleanup the dirty connections in a connections array.\n *\n * This will remove any connection with a `null` signal.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupConnections(connections) {\n algorithm_1.ArrayExt.removeAllWhere(connections, isDeadConnection);\n }\n /**\n * Test whether a connection is dead.\n *\n * A dead connection has a `null` signal.\n */\n function isDeadConnection(connection) {\n return connection.signal === null;\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/signaling/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/virtualdom/lib/index.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/virtualdom/lib/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n/*-----------------------------------------------------------------------------\r\n| Copyright (c) 2014-2017, PhosphorJS Contributors\r\n|\r\n| Distributed under the terms of the BSD 3-Clause License.\r\n|\r\n| The full license is in the file LICENSE, distributed with this software.\r\n|----------------------------------------------------------------------------*/\r\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\r\n/**\r\n * A virtual node which represents plain text content.\r\n *\r\n * #### Notes\r\n * User code will not typically create a `VirtualText` node directly.\r\n * Instead, the `h()` function will be used to create an element tree.\r\n */\r\nvar VirtualText = /** @class */ (function () {\r\n /**\r\n * Construct a new virtual text node.\r\n *\r\n * @param content - The text content for the node.\r\n */\r\n function VirtualText(content) {\r\n /**\r\n * The type of the node.\r\n *\r\n * This value can be used as a type guard for discriminating the\r\n * `VirtualNode` union type.\r\n */\r\n this.type = 'text';\r\n this.content = content;\r\n }\r\n return VirtualText;\r\n}());\r\nexports.VirtualText = VirtualText;\r\n/**\r\n * A virtual node which represents an HTML element.\r\n *\r\n * #### Notes\r\n * User code will not typically create a `VirtualElement` node directly.\r\n * Instead, the `h()` function will be used to create an element tree.\r\n */\r\nvar VirtualElement = /** @class */ (function () {\r\n /**\r\n * Construct a new virtual element node.\r\n *\r\n * @param tag - The element tag name.\r\n *\r\n * @param attrs - The element attributes.\r\n *\r\n * @param children - The element children.\r\n */\r\n function VirtualElement(tag, attrs, children) {\r\n /**\r\n * The type of the node.\r\n *\r\n * This value can be used as a type guard for discriminating the\r\n * `VirtualNode` union type.\r\n */\r\n this.type = 'element';\r\n this.tag = tag;\r\n this.attrs = attrs;\r\n this.children = children;\r\n }\r\n return VirtualElement;\r\n}());\r\nexports.VirtualElement = VirtualElement;\r\nfunction h(tag) {\r\n var attrs = {};\r\n var children = [];\r\n for (var i = 1, n = arguments.length; i < n; ++i) {\r\n var arg = arguments[i];\r\n if (typeof arg === 'string') {\r\n children.push(new VirtualText(arg));\r\n }\r\n else if (arg instanceof VirtualText) {\r\n children.push(arg);\r\n }\r\n else if (arg instanceof VirtualElement) {\r\n children.push(arg);\r\n }\r\n else if (arg instanceof Array) {\r\n extend(children, arg);\r\n }\r\n else if (i === 1 && arg && typeof arg === 'object') {\r\n attrs = arg;\r\n }\r\n }\r\n return new VirtualElement(tag, attrs, children);\r\n function extend(array, values) {\r\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\r\n var child = values_1[_i];\r\n if (typeof child === 'string') {\r\n array.push(new VirtualText(child));\r\n }\r\n else if (child instanceof VirtualText) {\r\n array.push(child);\r\n }\r\n else if (child instanceof VirtualElement) {\r\n array.push(child);\r\n }\r\n }\r\n }\r\n}\r\nexports.h = h;\r\n/**\r\n * The namespace for the `h` function statics.\r\n */\r\n(function (h) {\r\n h.a = h.bind(undefined, 'a');\r\n h.abbr = h.bind(undefined, 'abbr');\r\n h.address = h.bind(undefined, 'address');\r\n h.area = h.bind(undefined, 'area');\r\n h.article = h.bind(undefined, 'article');\r\n h.aside = h.bind(undefined, 'aside');\r\n h.audio = h.bind(undefined, 'audio');\r\n h.b = h.bind(undefined, 'b');\r\n h.bdi = h.bind(undefined, 'bdi');\r\n h.bdo = h.bind(undefined, 'bdo');\r\n h.blockquote = h.bind(undefined, 'blockquote');\r\n h.br = h.bind(undefined, 'br');\r\n h.button = h.bind(undefined, 'button');\r\n h.canvas = h.bind(undefined, 'canvas');\r\n h.caption = h.bind(undefined, 'caption');\r\n h.cite = h.bind(undefined, 'cite');\r\n h.code = h.bind(undefined, 'code');\r\n h.col = h.bind(undefined, 'col');\r\n h.colgroup = h.bind(undefined, 'colgroup');\r\n h.data = h.bind(undefined, 'data');\r\n h.datalist = h.bind(undefined, 'datalist');\r\n h.dd = h.bind(undefined, 'dd');\r\n h.del = h.bind(undefined, 'del');\r\n h.dfn = h.bind(undefined, 'dfn');\r\n h.div = h.bind(undefined, 'div');\r\n h.dl = h.bind(undefined, 'dl');\r\n h.dt = h.bind(undefined, 'dt');\r\n h.em = h.bind(undefined, 'em');\r\n h.embed = h.bind(undefined, 'embed');\r\n h.fieldset = h.bind(undefined, 'fieldset');\r\n h.figcaption = h.bind(undefined, 'figcaption');\r\n h.figure = h.bind(undefined, 'figure');\r\n h.footer = h.bind(undefined, 'footer');\r\n h.form = h.bind(undefined, 'form');\r\n h.h1 = h.bind(undefined, 'h1');\r\n h.h2 = h.bind(undefined, 'h2');\r\n h.h3 = h.bind(undefined, 'h3');\r\n h.h4 = h.bind(undefined, 'h4');\r\n h.h5 = h.bind(undefined, 'h5');\r\n h.h6 = h.bind(undefined, 'h6');\r\n h.header = h.bind(undefined, 'header');\r\n h.hr = h.bind(undefined, 'hr');\r\n h.i = h.bind(undefined, 'i');\r\n h.iframe = h.bind(undefined, 'iframe');\r\n h.img = h.bind(undefined, 'img');\r\n h.input = h.bind(undefined, 'input');\r\n h.ins = h.bind(undefined, 'ins');\r\n h.kbd = h.bind(undefined, 'kbd');\r\n h.label = h.bind(undefined, 'label');\r\n h.legend = h.bind(undefined, 'legend');\r\n h.li = h.bind(undefined, 'li');\r\n h.main = h.bind(undefined, 'main');\r\n h.map = h.bind(undefined, 'map');\r\n h.mark = h.bind(undefined, 'mark');\r\n h.meter = h.bind(undefined, 'meter');\r\n h.nav = h.bind(undefined, 'nav');\r\n h.noscript = h.bind(undefined, 'noscript');\r\n h.object = h.bind(undefined, 'object');\r\n h.ol = h.bind(undefined, 'ol');\r\n h.optgroup = h.bind(undefined, 'optgroup');\r\n h.option = h.bind(undefined, 'option');\r\n h.output = h.bind(undefined, 'output');\r\n h.p = h.bind(undefined, 'p');\r\n h.param = h.bind(undefined, 'param');\r\n h.pre = h.bind(undefined, 'pre');\r\n h.progress = h.bind(undefined, 'progress');\r\n h.q = h.bind(undefined, 'q');\r\n h.rp = h.bind(undefined, 'rp');\r\n h.rt = h.bind(undefined, 'rt');\r\n h.ruby = h.bind(undefined, 'ruby');\r\n h.s = h.bind(undefined, 's');\r\n h.samp = h.bind(undefined, 'samp');\r\n h.section = h.bind(undefined, 'section');\r\n h.select = h.bind(undefined, 'select');\r\n h.small = h.bind(undefined, 'small');\r\n h.source = h.bind(undefined, 'source');\r\n h.span = h.bind(undefined, 'span');\r\n h.strong = h.bind(undefined, 'strong');\r\n h.sub = h.bind(undefined, 'sub');\r\n h.summary = h.bind(undefined, 'summary');\r\n h.sup = h.bind(undefined, 'sup');\r\n h.table = h.bind(undefined, 'table');\r\n h.tbody = h.bind(undefined, 'tbody');\r\n h.td = h.bind(undefined, 'td');\r\n h.textarea = h.bind(undefined, 'textarea');\r\n h.tfoot = h.bind(undefined, 'tfoot');\r\n h.th = h.bind(undefined, 'th');\r\n h.thead = h.bind(undefined, 'thead');\r\n h.time = h.bind(undefined, 'time');\r\n h.title = h.bind(undefined, 'title');\r\n h.tr = h.bind(undefined, 'tr');\r\n h.track = h.bind(undefined, 'track');\r\n h.u = h.bind(undefined, 'u');\r\n h.ul = h.bind(undefined, 'ul');\r\n h.var_ = h.bind(undefined, 'var');\r\n h.video = h.bind(undefined, 'video');\r\n h.wbr = h.bind(undefined, 'wbr');\r\n})(h = exports.h || (exports.h = {}));\r\n/**\r\n * The namespace for the virtual DOM rendering functions.\r\n */\r\nvar VirtualDOM;\r\n(function (VirtualDOM) {\r\n /**\r\n * Create a real DOM element from a virtual element node.\r\n *\r\n * @param node - The virtual element node to realize.\r\n *\r\n * @returns A new DOM element for the given virtual element node.\r\n *\r\n * #### Notes\r\n * This creates a brand new *real* DOM element with a structure which\r\n * matches the given virtual DOM node.\r\n *\r\n * If virtual diffing is desired, use the `render` function instead.\r\n */\r\n function realize(node) {\r\n return Private.createDOMNode(node);\r\n }\r\n VirtualDOM.realize = realize;\r\n /**\r\n * Render virtual DOM content into a host element.\r\n *\r\n * @param content - The virtual DOM content to render.\r\n *\r\n * @param host - The host element for the rendered content.\r\n *\r\n * #### Notes\r\n * This renders the delta from the previous rendering. It assumes that\r\n * the content of the host element is not manipulated by external code.\r\n *\r\n * Providing `null` content will clear the rendering.\r\n *\r\n * Externally modifying the provided content or the host element will\r\n * result in undefined rendering behavior.\r\n */\r\n function render(content, host) {\r\n var oldContent = Private.hostMap.get(host) || [];\r\n var newContent = Private.asContentArray(content);\r\n Private.hostMap.set(host, newContent);\r\n Private.updateContent(host, oldContent, newContent);\r\n }\r\n VirtualDOM.render = render;\r\n})(VirtualDOM = exports.VirtualDOM || (exports.VirtualDOM = {}));\r\n/**\r\n * The namespace for the module implementation details.\r\n */\r\nvar Private;\r\n(function (Private) {\r\n /**\r\n * A weak mapping of host element to virtual DOM content.\r\n */\r\n Private.hostMap = new WeakMap();\r\n /**\r\n * Cast a content value to a content array.\r\n */\r\n function asContentArray(value) {\r\n if (!value) {\r\n return [];\r\n }\r\n if (value instanceof Array) {\r\n return value;\r\n }\r\n return [value];\r\n }\r\n Private.asContentArray = asContentArray;\r\n function createDOMNode(node) {\r\n // Create a text node for a virtual text node.\r\n if (node.type === 'text') {\r\n return document.createTextNode(node.content);\r\n }\r\n // Create the HTML element with the specified tag.\r\n var element = document.createElement(node.tag);\r\n // Add the attributes for the new element.\r\n addAttrs(element, node.attrs);\r\n // Recursively populate the element with child content.\r\n for (var i = 0, n = node.children.length; i < n; ++i) {\r\n element.appendChild(createDOMNode(node.children[i]));\r\n }\r\n // Return the populated element.\r\n return element;\r\n }\r\n Private.createDOMNode = createDOMNode;\r\n /**\r\n * Update a host element with the delta of the virtual content.\r\n *\r\n * This is the core \"diff\" algorithm. There is no explicit \"patch\"\r\n * phase. The host is patched at each step as the diff progresses.\r\n */\r\n function updateContent(host, oldContent, newContent) {\r\n // Bail early if the content is identical.\r\n if (oldContent === newContent) {\r\n return;\r\n }\r\n // Collect the old keyed elems into a mapping.\r\n var oldKeyed = collectKeys(host, oldContent);\r\n // Create a copy of the old content which can be modified in-place.\r\n var oldCopy = oldContent.slice();\r\n // Update the host with the new content. The diff always proceeds\r\n // forward and never modifies a previously visited index. The old\r\n // copy array is modified in-place to reflect the changes made to\r\n // the host children. This causes the stale nodes to be pushed to\r\n // the end of the host node and removed at the end of the loop.\r\n var currElem = host.firstChild;\r\n var newCount = newContent.length;\r\n for (var i = 0; i < newCount; ++i) {\r\n // If the old content is exhausted, create a new node.\r\n if (i >= oldCopy.length) {\r\n host.appendChild(createDOMNode(newContent[i]));\r\n continue;\r\n }\r\n // Lookup the old and new virtual nodes.\r\n var oldVNode = oldCopy[i];\r\n var newVNode = newContent[i];\r\n // If both elements are identical, there is nothing to do.\r\n if (oldVNode === newVNode) {\r\n currElem = currElem.nextSibling;\r\n continue;\r\n }\r\n // Handle the simplest case of in-place text update first.\r\n if (oldVNode.type === 'text' && newVNode.type === 'text') {\r\n currElem.textContent = newVNode.content;\r\n currElem = currElem.nextSibling;\r\n continue;\r\n }\r\n // If the old or new node is a text node, the other node is now\r\n // known to be an element node, so create and insert a new node.\r\n if (oldVNode.type === 'text' || newVNode.type === 'text') {\r\n algorithm_1.ArrayExt.insert(oldCopy, i, newVNode);\r\n host.insertBefore(createDOMNode(newVNode), currElem);\r\n continue;\r\n }\r\n // At this point, both nodes are known to be element nodes.\r\n // If the new elem is keyed, move an old keyed elem to the proper\r\n // location before proceeding with the diff. The search can start\r\n // at the current index, since the unmatched old keyed elems are\r\n // pushed forward in the old copy array.\r\n var newKey = newVNode.attrs.key;\r\n if (newKey && newKey in oldKeyed) {\r\n var pair = oldKeyed[newKey];\r\n if (pair.vNode !== oldVNode) {\r\n algorithm_1.ArrayExt.move(oldCopy, oldCopy.indexOf(pair.vNode, i + 1), i);\r\n host.insertBefore(pair.element, currElem);\r\n oldVNode = pair.vNode;\r\n currElem = pair.element;\r\n }\r\n }\r\n // If both elements are identical, there is nothing to do.\r\n if (oldVNode === newVNode) {\r\n currElem = currElem.nextSibling;\r\n continue;\r\n }\r\n // If the old elem is keyed and does not match the new elem key,\r\n // create a new node. This is necessary since the old keyed elem\r\n // may be matched at a later point in the diff.\r\n var oldKey = oldVNode.attrs.key;\r\n if (oldKey && oldKey !== newKey) {\r\n algorithm_1.ArrayExt.insert(oldCopy, i, newVNode);\r\n host.insertBefore(createDOMNode(newVNode), currElem);\r\n continue;\r\n }\r\n // If the tags are different, create a new node.\r\n if (oldVNode.tag !== newVNode.tag) {\r\n algorithm_1.ArrayExt.insert(oldCopy, i, newVNode);\r\n host.insertBefore(createDOMNode(newVNode), currElem);\r\n continue;\r\n }\r\n // At this point, the element can be updated in-place.\r\n // Update the element attributes.\r\n updateAttrs(currElem, oldVNode.attrs, newVNode.attrs);\r\n // Update the element content.\r\n updateContent(currElem, oldVNode.children, newVNode.children);\r\n // Step to the next sibling element.\r\n currElem = currElem.nextSibling;\r\n }\r\n // Dispose of the old nodes pushed to the end of the host.\r\n for (var i = oldCopy.length - newCount; i > 0; --i) {\r\n host.removeChild(host.lastChild);\r\n }\r\n }\r\n Private.updateContent = updateContent;\r\n /**\r\n * A set of special-cased attribute names.\r\n */\r\n var specialAttrs = {\r\n 'key': true,\r\n 'className': true,\r\n 'htmlFor': true,\r\n 'dataset': true,\r\n 'style': true,\r\n };\r\n /**\r\n * Add element attributes to a newly created HTML element.\r\n */\r\n function addAttrs(element, attrs) {\r\n // Add the inline event listeners and node attributes.\r\n for (var name_1 in attrs) {\r\n if (name_1 in specialAttrs) {\r\n continue;\r\n }\r\n if (name_1.substr(0, 2) === 'on') {\r\n element[name_1] = attrs[name_1];\r\n }\r\n else {\r\n element.setAttribute(name_1, attrs[name_1]);\r\n }\r\n }\r\n // Add the element `class` attribute.\r\n if (attrs.className !== undefined) {\r\n element.setAttribute('class', attrs.className);\r\n }\r\n // Add the element `for` attribute.\r\n if (attrs.htmlFor !== undefined) {\r\n element.setAttribute('for', attrs.htmlFor);\r\n }\r\n // Add the dataset values.\r\n if (attrs.dataset) {\r\n addDataset(element, attrs.dataset);\r\n }\r\n // Add the inline styles.\r\n if (attrs.style) {\r\n addStyle(element, attrs.style);\r\n }\r\n }\r\n /**\r\n * Update the element attributes of an HTML element.\r\n */\r\n function updateAttrs(element, oldAttrs, newAttrs) {\r\n // Do nothing if the attrs are the same object.\r\n if (oldAttrs === newAttrs) {\r\n return;\r\n }\r\n // Setup the strongly typed loop variable.\r\n var name;\r\n // Remove attributes and listeners which no longer exist.\r\n for (name in oldAttrs) {\r\n if (name in specialAttrs || name in newAttrs) {\r\n continue;\r\n }\r\n if (name.substr(0, 2) === 'on') {\r\n element[name] = null;\r\n }\r\n else {\r\n element.removeAttribute(name);\r\n }\r\n }\r\n // Add and update new and existing attributes and listeners.\r\n for (name in newAttrs) {\r\n if (name in specialAttrs || oldAttrs[name] === newAttrs[name]) {\r\n continue;\r\n }\r\n if (name.substr(0, 2) === 'on') {\r\n element[name] = newAttrs[name];\r\n }\r\n else {\r\n element.setAttribute(name, newAttrs[name]);\r\n }\r\n }\r\n // Update the element `class` attribute.\r\n if (oldAttrs.className !== newAttrs.className) {\r\n if (newAttrs.className !== undefined) {\r\n element.setAttribute('class', newAttrs.className);\r\n }\r\n else {\r\n element.removeAttribute('class');\r\n }\r\n }\r\n // Add the element `for` attribute.\r\n if (oldAttrs.htmlFor !== newAttrs.htmlFor) {\r\n if (newAttrs.htmlFor !== undefined) {\r\n element.setAttribute('for', newAttrs.htmlFor);\r\n }\r\n else {\r\n element.removeAttribute('for');\r\n }\r\n }\r\n // Update the dataset values.\r\n if (oldAttrs.dataset !== newAttrs.dataset) {\r\n updateDataset(element, oldAttrs.dataset || {}, newAttrs.dataset || {});\r\n }\r\n // Update the inline styles.\r\n if (oldAttrs.style !== newAttrs.style) {\r\n updateStyle(element, oldAttrs.style || {}, newAttrs.style || {});\r\n }\r\n }\r\n /**\r\n * Add dataset values to a newly created HTML element.\r\n */\r\n function addDataset(element, dataset) {\r\n for (var name_2 in dataset) {\r\n element.setAttribute(\"data-\" + name_2, dataset[name_2]);\r\n }\r\n }\r\n /**\r\n * Update the dataset values of an HTML element.\r\n */\r\n function updateDataset(element, oldDataset, newDataset) {\r\n for (var name_3 in oldDataset) {\r\n if (!(name_3 in newDataset)) {\r\n element.removeAttribute(\"data-\" + name_3);\r\n }\r\n }\r\n for (var name_4 in newDataset) {\r\n if (oldDataset[name_4] !== newDataset[name_4]) {\r\n element.setAttribute(\"data-\" + name_4, newDataset[name_4]);\r\n }\r\n }\r\n }\r\n /**\r\n * Add inline style values to a newly created HTML element.\r\n */\r\n function addStyle(element, style) {\r\n var elemStyle = element.style;\r\n var name;\r\n for (name in style) {\r\n elemStyle[name] = style[name];\r\n }\r\n }\r\n /**\r\n * Update the inline style values of an HTML element.\r\n */\r\n function updateStyle(element, oldStyle, newStyle) {\r\n var elemStyle = element.style;\r\n var name;\r\n for (name in oldStyle) {\r\n if (!(name in newStyle)) {\r\n elemStyle[name] = '';\r\n }\r\n }\r\n for (name in newStyle) {\r\n if (oldStyle[name] !== newStyle[name]) {\r\n elemStyle[name] = newStyle[name];\r\n }\r\n }\r\n }\r\n /**\r\n * Collect a mapping of keyed elements for the host content.\r\n */\r\n function collectKeys(host, content) {\r\n var node = host.firstChild;\r\n var keyMap = Object.create(null);\r\n for (var _i = 0, content_1 = content; _i < content_1.length; _i++) {\r\n var vNode = content_1[_i];\r\n if (vNode.type === 'element' && vNode.attrs.key) {\r\n keyMap[vNode.attrs.key] = { vNode: vNode, element: node };\r\n }\r\n node = node.nextSibling;\r\n }\r\n return keyMap;\r\n }\r\n})(Private || (Private = {}));\r\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/virtualdom/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/boxengine.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/boxengine.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * A sizer object for use with the box engine layout functions.\n *\n * #### Notes\n * A box sizer holds the geometry information for an object along an\n * arbitrary layout orientation.\n *\n * For best performance, this class should be treated as a raw data\n * struct. It should not typically be subclassed.\n */\nvar BoxSizer = /** @class */ (function () {\n function BoxSizer() {\n /**\n * The preferred size for the sizer.\n *\n * #### Notes\n * The sizer will be given this initial size subject to its size\n * bounds. The sizer will not deviate from this size unless such\n * deviation is required to fit into the available layout space.\n *\n * There is no limit to this value, but it will be clamped to the\n * bounds defined by [[minSize]] and [[maxSize]].\n *\n * The default value is `0`.\n */\n this.sizeHint = 0;\n /**\n * The minimum size of the sizer.\n *\n * #### Notes\n * The sizer will never be sized less than this value, even if\n * it means the sizer will overflow the available layout space.\n *\n * It is assumed that this value lies in the range `[0, Infinity)`\n * and that it is `<=` to [[maxSize]]. Failure to adhere to this\n * constraint will yield undefined results.\n *\n * The default value is `0`.\n */\n this.minSize = 0;\n /**\n * The maximum size of the sizer.\n *\n * #### Notes\n * The sizer will never be sized greater than this value, even if\n * it means the sizer will underflow the available layout space.\n *\n * It is assumed that this value lies in the range `[0, Infinity]`\n * and that it is `>=` to [[minSize]]. Failure to adhere to this\n * constraint will yield undefined results.\n *\n * The default value is `Infinity`.\n */\n this.maxSize = Infinity;\n /**\n * The stretch factor for the sizer.\n *\n * #### Notes\n * This controls how much the sizer stretches relative to its sibling\n * sizers when layout space is distributed. A stretch factor of zero\n * is special and will cause the sizer to only be resized after all\n * other sizers with a stretch factor greater than zero have been\n * resized to their limits.\n *\n * It is assumed that this value is an integer that lies in the range\n * `[0, Infinity)`. Failure to adhere to this constraint will yield\n * undefined results.\n *\n * The default value is `1`.\n */\n this.stretch = 1;\n /**\n * The computed size of the sizer.\n *\n * #### Notes\n * This value is the output of a call to [[boxCalc]]. It represents\n * the computed size for the object along the layout orientation,\n * and will always lie in the range `[minSize, maxSize]`.\n *\n * This value is output only.\n *\n * Changing this value will have no effect.\n */\n this.size = 0;\n /**\n * An internal storage property for the layout algorithm.\n *\n * #### Notes\n * This value is used as temporary storage by the layout algorithm.\n *\n * Changing this value will have no effect.\n */\n this.done = false;\n }\n return BoxSizer;\n}());\nexports.BoxSizer = BoxSizer;\n/**\n * The namespace for the box engine layout functions.\n */\nvar BoxEngine;\n(function (BoxEngine) {\n /**\n * Calculate the optimal layout sizes for a sequence of box sizers.\n *\n * This distributes the available layout space among the box sizers\n * according to the following algorithm:\n *\n * 1. Initialize the sizers's size to its size hint and compute the\n * sums for each of size hint, min size, and max size.\n *\n * 2. If the total size hint equals the available space, return.\n *\n * 3. If the available space is less than the total min size, set all\n * sizers to their min size and return.\n *\n * 4. If the available space is greater than the total max size, set\n * all sizers to their max size and return.\n *\n * 5. If the layout space is less than the total size hint, distribute\n * the negative delta as follows:\n *\n * a. Shrink each sizer with a stretch factor greater than zero by\n * an amount proportional to the negative space and the sum of\n * stretch factors. If the sizer reaches its min size, remove\n * it and its stretch factor from the computation.\n *\n * b. If after adjusting all stretch sizers there remains negative\n * space, distribute the space equally among the sizers with a\n * stretch factor of zero. If a sizer reaches its min size,\n * remove it from the computation.\n *\n * 6. If the layout space is greater than the total size hint,\n * distribute the positive delta as follows:\n *\n * a. Expand each sizer with a stretch factor greater than zero by\n * an amount proportional to the postive space and the sum of\n * stretch factors. If the sizer reaches its max size, remove\n * it and its stretch factor from the computation.\n *\n * b. If after adjusting all stretch sizers there remains positive\n * space, distribute the space equally among the sizers with a\n * stretch factor of zero. If a sizer reaches its max size,\n * remove it from the computation.\n *\n * 7. return\n *\n * @param sizers - The sizers for a particular layout line.\n *\n * @param space - The available layout space for the sizers.\n *\n * @returns The delta between the provided available space and the\n * actual consumed space. This value will be zero if the sizers\n * can be adjusted to fit, negative if the available space is too\n * small, and positive if the available space is too large.\n *\n * #### Notes\n * The [[size]] of each sizer is updated with the computed size.\n *\n * This function can be called at any time to recompute the layout for\n * an existing sequence of sizers. The previously computed results will\n * have no effect on the new output. It is therefore not necessary to\n * create new sizer objects on each resize event.\n */\n function calc(sizers, space) {\n // Bail early if there is nothing to do.\n var count = sizers.length;\n if (count === 0) {\n return space;\n }\n // Setup the size and stretch counters.\n var totalMin = 0;\n var totalMax = 0;\n var totalSize = 0;\n var totalStretch = 0;\n var stretchCount = 0;\n // Setup the sizers and compute the totals.\n for (var i = 0; i < count; ++i) {\n var sizer = sizers[i];\n var min = sizer.minSize;\n var max = sizer.maxSize;\n var hint = sizer.sizeHint;\n sizer.done = false;\n sizer.size = Math.max(min, Math.min(hint, max));\n totalSize += sizer.size;\n totalMin += min;\n totalMax += max;\n if (sizer.stretch > 0) {\n totalStretch += sizer.stretch;\n stretchCount++;\n }\n }\n // If the space is equal to the total size, return early.\n if (space === totalSize) {\n return 0;\n }\n // If the space is less than the total min, minimize each sizer.\n if (space <= totalMin) {\n for (var i = 0; i < count; ++i) {\n var sizer = sizers[i];\n sizer.size = sizer.minSize;\n }\n return space - totalMin;\n }\n // If the space is greater than the total max, maximize each sizer.\n if (space >= totalMax) {\n for (var i = 0; i < count; ++i) {\n var sizer = sizers[i];\n sizer.size = sizer.maxSize;\n }\n return space - totalMax;\n }\n // The loops below perform sub-pixel precision sizing. A near zero\n // value is used for compares instead of zero to ensure that the\n // loop terminates when the subdivided space is reasonably small.\n var nearZero = 0.01;\n // A counter which is decremented each time a sizer is resized to\n // its limit. This ensures the loops terminate even if there is\n // space remaining to distribute.\n var notDoneCount = count;\n // Distribute negative delta space.\n if (space < totalSize) {\n // Shrink each stretchable sizer by an amount proportional to its\n // stretch factor. If a sizer reaches its min size it's marked as\n // done. The loop progresses in phases where each sizer is given\n // a chance to consume its fair share for the pass, regardless of\n // whether a sizer before it reached its limit. This continues\n // until the stretchable sizers or the free space is exhausted.\n var freeSpace = totalSize - space;\n while (stretchCount > 0 && freeSpace > nearZero) {\n var distSpace = freeSpace;\n var distStretch = totalStretch;\n for (var i = 0; i < count; ++i) {\n var sizer = sizers[i];\n if (sizer.done || sizer.stretch === 0) {\n continue;\n }\n var amt = sizer.stretch * distSpace / distStretch;\n if (sizer.size - amt <= sizer.minSize) {\n freeSpace -= sizer.size - sizer.minSize;\n totalStretch -= sizer.stretch;\n sizer.size = sizer.minSize;\n sizer.done = true;\n notDoneCount--;\n stretchCount--;\n }\n else {\n freeSpace -= amt;\n sizer.size -= amt;\n }\n }\n }\n // Distribute any remaining space evenly among the non-stretchable\n // sizers. This progresses in phases in the same manner as above.\n while (notDoneCount > 0 && freeSpace > nearZero) {\n var amt = freeSpace / notDoneCount;\n for (var i = 0; i < count; ++i) {\n var sizer = sizers[i];\n if (sizer.done) {\n continue;\n }\n if (sizer.size - amt <= sizer.minSize) {\n freeSpace -= sizer.size - sizer.minSize;\n sizer.size = sizer.minSize;\n sizer.done = true;\n notDoneCount--;\n }\n else {\n freeSpace -= amt;\n sizer.size -= amt;\n }\n }\n }\n }\n // Distribute positive delta space.\n else {\n // Expand each stretchable sizer by an amount proportional to its\n // stretch factor. If a sizer reaches its max size it's marked as\n // done. The loop progresses in phases where each sizer is given\n // a chance to consume its fair share for the pass, regardless of\n // whether a sizer before it reached its limit. This continues\n // until the stretchable sizers or the free space is exhausted.\n var freeSpace = space - totalSize;\n while (stretchCount > 0 && freeSpace > nearZero) {\n var distSpace = freeSpace;\n var distStretch = totalStretch;\n for (var i = 0; i < count; ++i) {\n var sizer = sizers[i];\n if (sizer.done || sizer.stretch === 0) {\n continue;\n }\n var amt = sizer.stretch * distSpace / distStretch;\n if (sizer.size + amt >= sizer.maxSize) {\n freeSpace -= sizer.maxSize - sizer.size;\n totalStretch -= sizer.stretch;\n sizer.size = sizer.maxSize;\n sizer.done = true;\n notDoneCount--;\n stretchCount--;\n }\n else {\n freeSpace -= amt;\n sizer.size += amt;\n }\n }\n }\n // Distribute any remaining space evenly among the non-stretchable\n // sizers. This progresses in phases in the same manner as above.\n while (notDoneCount > 0 && freeSpace > nearZero) {\n var amt = freeSpace / notDoneCount;\n for (var i = 0; i < count; ++i) {\n var sizer = sizers[i];\n if (sizer.done) {\n continue;\n }\n if (sizer.size + amt >= sizer.maxSize) {\n freeSpace -= sizer.maxSize - sizer.size;\n sizer.size = sizer.maxSize;\n sizer.done = true;\n notDoneCount--;\n }\n else {\n freeSpace -= amt;\n sizer.size += amt;\n }\n }\n }\n }\n // Indicate that the consumed space equals the available space.\n return 0;\n }\n BoxEngine.calc = calc;\n /**\n * Adjust a sizer by a delta and update its neighbors accordingly.\n *\n * @param sizers - The sizers which should be adjusted.\n *\n * @param index - The index of the sizer to grow.\n *\n * @param delta - The amount to adjust the sizer, positive or negative.\n *\n * #### Notes\n * This will adjust the indicated sizer by the specified amount, along\n * with the sizes of the appropriate neighbors, subject to the limits\n * specified by each of the sizers.\n *\n * This is useful when implementing box layouts where the boundaries\n * between the sizers are interactively adjustable by the user.\n */\n function adjust(sizers, index, delta) {\n // Bail early when there is nothing to do.\n if (sizers.length === 0 || delta === 0) {\n return;\n }\n // Dispatch to the proper implementation.\n if (delta > 0) {\n growSizer(sizers, index, delta);\n }\n else {\n shrinkSizer(sizers, index, -delta);\n }\n }\n BoxEngine.adjust = adjust;\n /**\n * Grow a sizer by a positive delta and adjust neighbors.\n */\n function growSizer(sizers, index, delta) {\n // Compute how much the items to the left can expand.\n var growLimit = 0;\n for (var i = 0; i <= index; ++i) {\n var sizer = sizers[i];\n growLimit += sizer.maxSize - sizer.size;\n }\n // Compute how much the items to the right can shrink.\n var shrinkLimit = 0;\n for (var i = index + 1, n = sizers.length; i < n; ++i) {\n var sizer = sizers[i];\n shrinkLimit += sizer.size - sizer.minSize;\n }\n // Clamp the delta adjustment to the limits.\n delta = Math.min(delta, growLimit, shrinkLimit);\n // Grow the sizers to the left by the delta.\n var grow = delta;\n for (var i = index; i >= 0 && grow > 0; --i) {\n var sizer = sizers[i];\n var limit = sizer.maxSize - sizer.size;\n if (limit >= grow) {\n sizer.sizeHint = sizer.size + grow;\n grow = 0;\n }\n else {\n sizer.sizeHint = sizer.size + limit;\n grow -= limit;\n }\n }\n // Shrink the sizers to the right by the delta.\n var shrink = delta;\n for (var i = index + 1, n = sizers.length; i < n && shrink > 0; ++i) {\n var sizer = sizers[i];\n var limit = sizer.size - sizer.minSize;\n if (limit >= shrink) {\n sizer.sizeHint = sizer.size - shrink;\n shrink = 0;\n }\n else {\n sizer.sizeHint = sizer.size - limit;\n shrink -= limit;\n }\n }\n }\n /**\n * Shrink a sizer by a positive delta and adjust neighbors.\n */\n function shrinkSizer(sizers, index, delta) {\n // Compute how much the items to the right can expand.\n var growLimit = 0;\n for (var i = index + 1, n = sizers.length; i < n; ++i) {\n var sizer = sizers[i];\n growLimit += sizer.maxSize - sizer.size;\n }\n // Compute how much the items to the left can shrink.\n var shrinkLimit = 0;\n for (var i = 0; i <= index; ++i) {\n var sizer = sizers[i];\n shrinkLimit += sizer.size - sizer.minSize;\n }\n // Clamp the delta adjustment to the limits.\n delta = Math.min(delta, growLimit, shrinkLimit);\n // Grow the sizers to the right by the delta.\n var grow = delta;\n for (var i = index + 1, n = sizers.length; i < n && grow > 0; ++i) {\n var sizer = sizers[i];\n var limit = sizer.maxSize - sizer.size;\n if (limit >= grow) {\n sizer.sizeHint = sizer.size + grow;\n grow = 0;\n }\n else {\n sizer.sizeHint = sizer.size + limit;\n grow -= limit;\n }\n }\n // Shrink the sizers to the left by the delta.\n var shrink = delta;\n for (var i = index; i >= 0 && shrink > 0; --i) {\n var sizer = sizers[i];\n var limit = sizer.size - sizer.minSize;\n if (limit >= shrink) {\n sizer.sizeHint = sizer.size - shrink;\n shrink = 0;\n }\n else {\n sizer.sizeHint = sizer.size - limit;\n shrink -= limit;\n }\n }\n }\n})(BoxEngine = exports.BoxEngine || (exports.BoxEngine = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/boxengine.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/boxlayout.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/boxlayout.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar properties_1 = __webpack_require__(/*! @phosphor/properties */ \"./node_modules/@phosphor/properties/lib/index.js\");\nvar boxengine_1 = __webpack_require__(/*! ./boxengine */ \"./node_modules/@phosphor/widgets/lib/boxengine.js\");\nvar layout_1 = __webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\");\nvar panellayout_1 = __webpack_require__(/*! ./panellayout */ \"./node_modules/@phosphor/widgets/lib/panellayout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A layout which arranges its widgets in a single row or column.\n */\nvar BoxLayout = /** @class */ (function (_super) {\n __extends(BoxLayout, _super);\n /**\n * Construct a new box layout.\n *\n * @param options - The options for initializing the layout.\n */\n function BoxLayout(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this._fixed = 0;\n _this._spacing = 4;\n _this._dirty = false;\n _this._sizers = [];\n _this._items = [];\n _this._box = null;\n _this._alignment = 'start';\n _this._direction = 'top-to-bottom';\n if (options.direction !== undefined) {\n _this._direction = options.direction;\n }\n if (options.alignment !== undefined) {\n _this._alignment = options.alignment;\n }\n if (options.spacing !== undefined) {\n _this._spacing = Private.clampSpacing(options.spacing);\n }\n return _this;\n }\n /**\n * Dispose of the resources held by the layout.\n */\n BoxLayout.prototype.dispose = function () {\n // Dispose of the layout items.\n algorithm_1.each(this._items, function (item) { item.dispose(); });\n // Clear the layout state.\n this._box = null;\n this._items.length = 0;\n this._sizers.length = 0;\n // Dispose of the rest of the layout.\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(BoxLayout.prototype, \"direction\", {\n /**\n * Get the layout direction for the box layout.\n */\n get: function () {\n return this._direction;\n },\n /**\n * Set the layout direction for the box layout.\n */\n set: function (value) {\n if (this._direction === value) {\n return;\n }\n this._direction = value;\n if (!this.parent) {\n return;\n }\n this.parent.dataset['direction'] = value;\n this.parent.fit();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BoxLayout.prototype, \"alignment\", {\n /**\n * Get the content alignment for the box layout.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire box layout.\n */\n get: function () {\n return this._alignment;\n },\n /**\n * Set the content alignment for the box layout.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire box layout.\n */\n set: function (value) {\n if (this._alignment === value) {\n return;\n }\n this._alignment = value;\n if (!this.parent) {\n return;\n }\n this.parent.dataset['alignment'] = value;\n this.parent.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BoxLayout.prototype, \"spacing\", {\n /**\n * Get the inter-element spacing for the box layout.\n */\n get: function () {\n return this._spacing;\n },\n /**\n * Set the inter-element spacing for the box layout.\n */\n set: function (value) {\n value = Private.clampSpacing(value);\n if (this._spacing === value) {\n return;\n }\n this._spacing = value;\n if (!this.parent) {\n return;\n }\n this.parent.fit();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Perform layout initialization which requires the parent widget.\n */\n BoxLayout.prototype.init = function () {\n this.parent.dataset['direction'] = this.direction;\n this.parent.dataset['alignment'] = this.alignment;\n _super.prototype.init.call(this);\n };\n /**\n * Attach a widget to the parent's DOM node.\n *\n * @param index - The current index of the widget in the layout.\n *\n * @param widget - The widget to attach to the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n BoxLayout.prototype.attachWidget = function (index, widget) {\n // Create and add a new layout item for the widget.\n algorithm_1.ArrayExt.insert(this._items, index, new layout_1.LayoutItem(widget));\n // Create and add a new sizer for the widget.\n algorithm_1.ArrayExt.insert(this._sizers, index, new boxengine_1.BoxSizer());\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Add the widget's node to the parent.\n this.parent.node.appendChild(widget.node);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * Move a widget in the parent's DOM node.\n *\n * @param fromIndex - The previous index of the widget in the layout.\n *\n * @param toIndex - The current index of the widget in the layout.\n *\n * @param widget - The widget to move in the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n BoxLayout.prototype.moveWidget = function (fromIndex, toIndex, widget) {\n // Move the layout item for the widget.\n algorithm_1.ArrayExt.move(this._items, fromIndex, toIndex);\n // Move the sizer for the widget.\n algorithm_1.ArrayExt.move(this._sizers, fromIndex, toIndex);\n // Post an update request for the parent widget.\n this.parent.update();\n };\n /**\n * Detach a widget from the parent's DOM node.\n *\n * @param index - The previous index of the widget in the layout.\n *\n * @param widget - The widget to detach from the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n BoxLayout.prototype.detachWidget = function (index, widget) {\n // Remove the layout item for the widget.\n var item = algorithm_1.ArrayExt.removeAt(this._items, index);\n // Remove the sizer for the widget.\n algorithm_1.ArrayExt.removeAt(this._sizers, index);\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget's node from the parent.\n this.parent.node.removeChild(widget.node);\n // Send an `'after-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n // Dispose of the layout item.\n item.dispose();\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'before-show'` message.\n */\n BoxLayout.prototype.onBeforeShow = function (msg) {\n _super.prototype.onBeforeShow.call(this, msg);\n this.parent.update();\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n BoxLayout.prototype.onBeforeAttach = function (msg) {\n _super.prototype.onBeforeAttach.call(this, msg);\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-shown'` message.\n */\n BoxLayout.prototype.onChildShown = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-hidden'` message.\n */\n BoxLayout.prototype.onChildHidden = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'resize'` message.\n */\n BoxLayout.prototype.onResize = function (msg) {\n if (this.parent.isVisible) {\n this._update(msg.width, msg.height);\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n BoxLayout.prototype.onUpdateRequest = function (msg) {\n if (this.parent.isVisible) {\n this._update(-1, -1);\n }\n };\n /**\n * A message handler invoked on a `'fit-request'` message.\n */\n BoxLayout.prototype.onFitRequest = function (msg) {\n if (this.parent.isAttached) {\n this._fit();\n }\n };\n /**\n * Fit the layout to the total size required by the widgets.\n */\n BoxLayout.prototype._fit = function () {\n // Compute the visible item count.\n var nVisible = 0;\n for (var i = 0, n = this._items.length; i < n; ++i) {\n nVisible += +!this._items[i].isHidden;\n }\n // Update the fixed space for the visible items.\n this._fixed = this._spacing * Math.max(0, nVisible - 1);\n // Setup the computed minimum size.\n var horz = Private.isHorizontal(this._direction);\n var minW = horz ? this._fixed : 0;\n var minH = horz ? 0 : this._fixed;\n // Update the sizers and computed minimum size.\n for (var i = 0, n = this._items.length; i < n; ++i) {\n // Fetch the item and corresponding box sizer.\n var item = this._items[i];\n var sizer = this._sizers[i];\n // If the item is hidden, it should consume zero size.\n if (item.isHidden) {\n sizer.minSize = 0;\n sizer.maxSize = 0;\n continue;\n }\n // Update the size limits for the item.\n item.fit();\n // Update the size basis and stretch factor.\n sizer.sizeHint = BoxLayout.getSizeBasis(item.widget);\n sizer.stretch = BoxLayout.getStretch(item.widget);\n // Update the sizer limits and computed min size.\n if (horz) {\n sizer.minSize = item.minWidth;\n sizer.maxSize = item.maxWidth;\n minW += item.minWidth;\n minH = Math.max(minH, item.minHeight);\n }\n else {\n sizer.minSize = item.minHeight;\n sizer.maxSize = item.maxHeight;\n minH += item.minHeight;\n minW = Math.max(minW, item.minWidth);\n }\n }\n // Update the box sizing and add it to the computed min size.\n var box = this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n minW += box.horizontalSum;\n minH += box.verticalSum;\n // Update the parent's min size constraints.\n var style = this.parent.node.style;\n style.minWidth = minW + \"px\";\n style.minHeight = minH + \"px\";\n // Set the dirty flag to ensure only a single update occurs.\n this._dirty = true;\n // Notify the ancestor that it should fit immediately. This may\n // cause a resize of the parent, fulfilling the required update.\n if (this.parent.parent) {\n messaging_1.MessageLoop.sendMessage(this.parent.parent, widget_1.Widget.Msg.FitRequest);\n }\n // If the dirty flag is still set, the parent was not resized.\n // Trigger the required update on the parent widget immediately.\n if (this._dirty) {\n messaging_1.MessageLoop.sendMessage(this.parent, widget_1.Widget.Msg.UpdateRequest);\n }\n };\n /**\n * Update the layout position and size of the widgets.\n *\n * The parent offset dimensions should be `-1` if unknown.\n */\n BoxLayout.prototype._update = function (offsetWidth, offsetHeight) {\n // Clear the dirty flag to indicate the update occurred.\n this._dirty = false;\n // Compute the visible item count.\n var nVisible = 0;\n for (var i = 0, n = this._items.length; i < n; ++i) {\n nVisible += +!this._items[i].isHidden;\n }\n // Bail early if there are no visible items to layout.\n if (nVisible === 0) {\n return;\n }\n // Measure the parent if the offset dimensions are unknown.\n if (offsetWidth < 0) {\n offsetWidth = this.parent.node.offsetWidth;\n }\n if (offsetHeight < 0) {\n offsetHeight = this.parent.node.offsetHeight;\n }\n // Ensure the parent box sizing data is computed.\n if (!this._box) {\n this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n }\n // Compute the layout area adjusted for border and padding.\n var top = this._box.paddingTop;\n var left = this._box.paddingLeft;\n var width = offsetWidth - this._box.horizontalSum;\n var height = offsetHeight - this._box.verticalSum;\n // Distribute the layout space and adjust the start position.\n var delta;\n switch (this._direction) {\n case 'left-to-right':\n delta = boxengine_1.BoxEngine.calc(this._sizers, Math.max(0, width - this._fixed));\n break;\n case 'top-to-bottom':\n delta = boxengine_1.BoxEngine.calc(this._sizers, Math.max(0, height - this._fixed));\n break;\n case 'right-to-left':\n delta = boxengine_1.BoxEngine.calc(this._sizers, Math.max(0, width - this._fixed));\n left += width;\n break;\n case 'bottom-to-top':\n delta = boxengine_1.BoxEngine.calc(this._sizers, Math.max(0, height - this._fixed));\n top += height;\n break;\n default:\n throw 'unreachable';\n }\n // Setup the variables for justification and alignment offset.\n var extra = 0;\n var offset = 0;\n // Account for alignment if there is extra layout space.\n if (delta > 0) {\n switch (this._alignment) {\n case 'start':\n break;\n case 'center':\n extra = 0;\n offset = delta / 2;\n break;\n case 'end':\n extra = 0;\n offset = delta;\n break;\n case 'justify':\n extra = delta / nVisible;\n offset = 0;\n break;\n default:\n throw 'unreachable';\n }\n }\n // Layout the items using the computed box sizes.\n for (var i = 0, n = this._items.length; i < n; ++i) {\n // Fetch the item.\n var item = this._items[i];\n // Ignore hidden items.\n if (item.isHidden) {\n continue;\n }\n // Fetch the computed size for the widget.\n var size = this._sizers[i].size;\n // Update the widget geometry and advance the relevant edge.\n switch (this._direction) {\n case 'left-to-right':\n item.update(left + offset, top, size + extra, height);\n left += size + extra + this._spacing;\n break;\n case 'top-to-bottom':\n item.update(left, top + offset, width, size + extra);\n top += size + extra + this._spacing;\n break;\n case 'right-to-left':\n item.update(left - offset - size - extra, top, size + extra, height);\n left -= size + extra + this._spacing;\n break;\n case 'bottom-to-top':\n item.update(left, top - offset - size - extra, width, size + extra);\n top -= size + extra + this._spacing;\n break;\n default:\n throw 'unreachable';\n }\n }\n };\n return BoxLayout;\n}(panellayout_1.PanelLayout));\nexports.BoxLayout = BoxLayout;\n/**\n * The namespace for the `BoxLayout` class statics.\n */\n(function (BoxLayout) {\n /**\n * Get the box layout stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The box layout stretch factor for the widget.\n */\n function getStretch(widget) {\n return Private.stretchProperty.get(widget);\n }\n BoxLayout.getStretch = getStretch;\n /**\n * Set the box layout stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the stretch factor.\n */\n function setStretch(widget, value) {\n Private.stretchProperty.set(widget, value);\n }\n BoxLayout.setStretch = setStretch;\n /**\n * Get the box layout size basis for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The box layout size basis for the widget.\n */\n function getSizeBasis(widget) {\n return Private.sizeBasisProperty.get(widget);\n }\n BoxLayout.getSizeBasis = getSizeBasis;\n /**\n * Set the box layout size basis for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the size basis.\n */\n function setSizeBasis(widget, value) {\n Private.sizeBasisProperty.set(widget, value);\n }\n BoxLayout.setSizeBasis = setSizeBasis;\n})(BoxLayout = exports.BoxLayout || (exports.BoxLayout = {}));\nexports.BoxLayout = BoxLayout;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The property descriptor for a widget stretch factor.\n */\n Private.stretchProperty = new properties_1.AttachedProperty({\n name: 'stretch',\n create: function () { return 0; },\n coerce: function (owner, value) { return Math.max(0, Math.floor(value)); },\n changed: onChildSizingChanged\n });\n /**\n * The property descriptor for a widget size basis.\n */\n Private.sizeBasisProperty = new properties_1.AttachedProperty({\n name: 'sizeBasis',\n create: function () { return 0; },\n coerce: function (owner, value) { return Math.max(0, Math.floor(value)); },\n changed: onChildSizingChanged\n });\n /**\n * Test whether a direction has horizontal orientation.\n */\n function isHorizontal(dir) {\n return dir === 'left-to-right' || dir === 'right-to-left';\n }\n Private.isHorizontal = isHorizontal;\n /**\n * Clamp a spacing value to an integer >= 0.\n */\n function clampSpacing(value) {\n return Math.max(0, Math.floor(value));\n }\n Private.clampSpacing = clampSpacing;\n /**\n * The change handler for the attached sizing properties.\n */\n function onChildSizingChanged(child) {\n if (child.parent && child.parent.layout instanceof BoxLayout) {\n child.parent.fit();\n }\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/boxlayout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/boxpanel.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/boxpanel.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar boxlayout_1 = __webpack_require__(/*! ./boxlayout */ \"./node_modules/@phosphor/widgets/lib/boxlayout.js\");\nvar panel_1 = __webpack_require__(/*! ./panel */ \"./node_modules/@phosphor/widgets/lib/panel.js\");\n/**\n * A panel which arranges its widgets in a single row or column.\n *\n * #### Notes\n * This class provides a convenience wrapper around a [[BoxLayout]].\n */\nvar BoxPanel = /** @class */ (function (_super) {\n __extends(BoxPanel, _super);\n /**\n * Construct a new box panel.\n *\n * @param options - The options for initializing the box panel.\n */\n function BoxPanel(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, { layout: Private.createLayout(options) }) || this;\n _this.addClass('p-BoxPanel');\n return _this;\n }\n Object.defineProperty(BoxPanel.prototype, \"direction\", {\n /**\n * Get the layout direction for the box panel.\n */\n get: function () {\n return this.layout.direction;\n },\n /**\n * Set the layout direction for the box panel.\n */\n set: function (value) {\n this.layout.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BoxPanel.prototype, \"alignment\", {\n /**\n * Get the content alignment for the box panel.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire box layout.\n */\n get: function () {\n return this.layout.alignment;\n },\n /**\n * Set the content alignment for the box panel.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire box layout.\n */\n set: function (value) {\n this.layout.alignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BoxPanel.prototype, \"spacing\", {\n /**\n * Get the inter-element spacing for the box panel.\n */\n get: function () {\n return this.layout.spacing;\n },\n /**\n * Set the inter-element spacing for the box panel.\n */\n set: function (value) {\n this.layout.spacing = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * A message handler invoked on a `'child-added'` message.\n */\n BoxPanel.prototype.onChildAdded = function (msg) {\n msg.child.addClass('p-BoxPanel-child');\n };\n /**\n * A message handler invoked on a `'child-removed'` message.\n */\n BoxPanel.prototype.onChildRemoved = function (msg) {\n msg.child.removeClass('p-BoxPanel-child');\n };\n return BoxPanel;\n}(panel_1.Panel));\nexports.BoxPanel = BoxPanel;\n/**\n * The namespace for the `BoxPanel` class statics.\n */\n(function (BoxPanel) {\n /**\n * Get the box panel stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The box panel stretch factor for the widget.\n */\n function getStretch(widget) {\n return boxlayout_1.BoxLayout.getStretch(widget);\n }\n BoxPanel.getStretch = getStretch;\n /**\n * Set the box panel stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the stretch factor.\n */\n function setStretch(widget, value) {\n boxlayout_1.BoxLayout.setStretch(widget, value);\n }\n BoxPanel.setStretch = setStretch;\n /**\n * Get the box panel size basis for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The box panel size basis for the widget.\n */\n function getSizeBasis(widget) {\n return boxlayout_1.BoxLayout.getSizeBasis(widget);\n }\n BoxPanel.getSizeBasis = getSizeBasis;\n /**\n * Set the box panel size basis for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the size basis.\n */\n function setSizeBasis(widget, value) {\n boxlayout_1.BoxLayout.setSizeBasis(widget, value);\n }\n BoxPanel.setSizeBasis = setSizeBasis;\n})(BoxPanel = exports.BoxPanel || (exports.BoxPanel = {}));\nexports.BoxPanel = BoxPanel;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create a box layout for the given panel options.\n */\n function createLayout(options) {\n return options.layout || new boxlayout_1.BoxLayout(options);\n }\n Private.createLayout = createLayout;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/boxpanel.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/commandpalette.js": +/*!**************************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/commandpalette.js ***! + \**************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar coreutils_1 = __webpack_require__(/*! @phosphor/coreutils */ \"./node_modules/@phosphor/coreutils/lib/index.js\");\nvar commands_1 = __webpack_require__(/*! @phosphor/commands */ \"./node_modules/@phosphor/commands/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar virtualdom_1 = __webpack_require__(/*! @phosphor/virtualdom */ \"./node_modules/@phosphor/virtualdom/lib/index.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A widget which displays command items as a searchable palette.\n */\nvar CommandPalette = /** @class */ (function (_super) {\n __extends(CommandPalette, _super);\n /**\n * Construct a new command palette.\n *\n * @param options - The options for initializing the palette.\n */\n function CommandPalette(options) {\n var _this = _super.call(this, { node: Private.createNode() }) || this;\n _this._activeIndex = -1;\n _this._items = [];\n _this._results = null;\n _this.addClass('p-CommandPalette');\n _this.setFlag(widget_1.Widget.Flag.DisallowLayout);\n _this.commands = options.commands;\n _this.renderer = options.renderer || CommandPalette.defaultRenderer;\n _this.commands.commandChanged.connect(_this._onGenericChange, _this);\n _this.commands.keyBindingChanged.connect(_this._onGenericChange, _this);\n return _this;\n }\n /**\n * Dispose of the resources held by the widget.\n */\n CommandPalette.prototype.dispose = function () {\n this._items.length = 0;\n this._results = null;\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(CommandPalette.prototype, \"searchNode\", {\n /**\n * The command palette search node.\n *\n * #### Notes\n * This is the node which contains the search-related elements.\n */\n get: function () {\n return this.node.getElementsByClassName('p-CommandPalette-search')[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandPalette.prototype, \"inputNode\", {\n /**\n * The command palette input node.\n *\n * #### Notes\n * This is the actual input node for the search area.\n */\n get: function () {\n return this.node.getElementsByClassName('p-CommandPalette-input')[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandPalette.prototype, \"contentNode\", {\n /**\n * The command palette content node.\n *\n * #### Notes\n * This is the node which holds the command item nodes.\n *\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-CommandPalette-content')[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandPalette.prototype, \"items\", {\n /**\n * A read-only array of the command items in the palette.\n */\n get: function () {\n return this._items;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Add a command item to the command palette.\n *\n * @param options - The options for creating the command item.\n *\n * @returns The command item added to the palette.\n */\n CommandPalette.prototype.addItem = function (options) {\n // Create a new command item for the options.\n var item = Private.createItem(this.commands, options);\n // Add the item to the array.\n this._items.push(item);\n // Refresh the search results.\n this.refresh();\n // Return the item added to the palette.\n return item;\n };\n /**\n * Remove an item from the command palette.\n *\n * @param item - The item to remove from the palette.\n *\n * #### Notes\n * This is a no-op if the item is not in the palette.\n */\n CommandPalette.prototype.removeItem = function (item) {\n this.removeItemAt(this._items.indexOf(item));\n };\n /**\n * Remove the item at a given index from the command palette.\n *\n * @param index - The index of the item to remove.\n *\n * #### Notes\n * This is a no-op if the index is out of range.\n */\n CommandPalette.prototype.removeItemAt = function (index) {\n // Remove the item from the array.\n var item = algorithm_1.ArrayExt.removeAt(this._items, index);\n // Bail if the index is out of range.\n if (!item) {\n return;\n }\n // Refresh the search results.\n this.refresh();\n };\n /**\n * Remove all items from the command palette.\n */\n CommandPalette.prototype.clearItems = function () {\n // Bail if there is nothing to remove.\n if (this._items.length === 0) {\n return;\n }\n // Clear the array of items.\n this._items.length = 0;\n // Refresh the search results.\n this.refresh();\n };\n /**\n * Clear the search results and schedule an update.\n *\n * #### Notes\n * This should be called whenever the search results of the palette\n * should be updated.\n *\n * This is typically called automatically by the palette as needed,\n * but can be called manually if the input text is programatically\n * changed.\n *\n * The rendered results are updated asynchronously.\n */\n CommandPalette.prototype.refresh = function () {\n this._results = null;\n this.update();\n };\n /**\n * Handle the DOM events for the command palette.\n *\n * @param event - The DOM event sent to the command palette.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the command palette's DOM node.\n * It should not be called directly by user code.\n */\n CommandPalette.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'click':\n this._evtClick(event);\n break;\n case 'keydown':\n this._evtKeyDown(event);\n break;\n case 'input':\n this.refresh();\n break;\n case 'focus':\n case 'blur':\n this._toggleFocused();\n break;\n }\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n CommandPalette.prototype.onBeforeAttach = function (msg) {\n this.node.addEventListener('click', this);\n this.node.addEventListener('keydown', this);\n this.node.addEventListener('input', this);\n this.node.addEventListener('focus', this, true);\n this.node.addEventListener('blur', this, true);\n };\n /**\n * A message handler invoked on an `'after-detach'` message.\n */\n CommandPalette.prototype.onAfterDetach = function (msg) {\n this.node.removeEventListener('click', this);\n this.node.removeEventListener('keydown', this);\n this.node.removeEventListener('input', this);\n this.node.removeEventListener('focus', this, true);\n this.node.removeEventListener('blur', this, true);\n };\n /**\n * A message handler invoked on an `'activate-request'` message.\n */\n CommandPalette.prototype.onActivateRequest = function (msg) {\n if (this.isAttached) {\n var input = this.inputNode;\n input.focus();\n input.select();\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n CommandPalette.prototype.onUpdateRequest = function (msg) {\n // Fetch the current query text and content node.\n var query = this.inputNode.value;\n var contentNode = this.contentNode;\n // Ensure the search results are generated.\n var results = this._results;\n if (!results) {\n // Generate and store the new search results.\n results = this._results = Private.search(this._items, query);\n // Reset the active index.\n this._activeIndex = (query ? algorithm_1.ArrayExt.findFirstIndex(results, Private.canActivate) : -1);\n }\n // If there is no query and no results, clear the content.\n if (!query && results.length === 0) {\n virtualdom_1.VirtualDOM.render(null, contentNode);\n return;\n }\n // If the is a query but no results, render the empty message.\n if (query && results.length === 0) {\n var content_1 = this.renderer.renderEmptyMessage({ query: query });\n virtualdom_1.VirtualDOM.render(content_1, contentNode);\n return;\n }\n // Create the render content for the search results.\n var renderer = this.renderer;\n var activeIndex = this._activeIndex;\n var content = new Array(results.length);\n for (var i = 0, n = results.length; i < n; ++i) {\n var result = results[i];\n if (result.type === 'header') {\n var indices = result.indices;\n var category = result.category;\n content[i] = renderer.renderHeader({ category: category, indices: indices });\n }\n else {\n var item = result.item;\n var indices = result.indices;\n var active = i === activeIndex;\n content[i] = renderer.renderItem({ item: item, indices: indices, active: active });\n }\n }\n // Render the search result content.\n virtualdom_1.VirtualDOM.render(content, contentNode);\n // Adjust the scroll position as needed.\n if (activeIndex < 0 || activeIndex >= results.length) {\n contentNode.scrollTop = 0;\n }\n else {\n var element = contentNode.children[activeIndex];\n domutils_1.ElementExt.scrollIntoViewIfNeeded(contentNode, element);\n }\n };\n /**\n * Handle the `'click'` event for the command palette.\n */\n CommandPalette.prototype._evtClick = function (event) {\n // Bail if the click is not the left button.\n if (event.button !== 0) {\n return;\n }\n // Find the index of the item which was clicked.\n var index = algorithm_1.ArrayExt.findFirstIndex(this.contentNode.children, function (node) {\n return node.contains(event.target);\n });\n // Bail if the click was not on an item.\n if (index === -1) {\n return;\n }\n // Kill the event when a content item is clicked.\n event.preventDefault();\n event.stopPropagation();\n // Execute the item if possible.\n this._execute(index);\n };\n /**\n * Handle the `'keydown'` event for the command palette.\n */\n CommandPalette.prototype._evtKeyDown = function (event) {\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n switch (event.keyCode) {\n case 13: // Enter\n event.preventDefault();\n event.stopPropagation();\n this._execute(this._activeIndex);\n break;\n case 38: // Up Arrow\n event.preventDefault();\n event.stopPropagation();\n this._activatePreviousItem();\n break;\n case 40: // Down Arrow\n event.preventDefault();\n event.stopPropagation();\n this._activateNextItem();\n break;\n }\n };\n /**\n * Activate the next enabled command item.\n */\n CommandPalette.prototype._activateNextItem = function () {\n // Bail if there are no search results.\n if (!this._results || this._results.length === 0) {\n return;\n }\n // Find the next enabled item index.\n var ai = this._activeIndex;\n var n = this._results.length;\n var start = ai < n - 1 ? ai + 1 : 0;\n var stop = start === 0 ? n - 1 : start - 1;\n this._activeIndex = algorithm_1.ArrayExt.findFirstIndex(this._results, Private.canActivate, start, stop);\n // Schedule an update of the items.\n this.update();\n };\n /**\n * Activate the previous enabled command item.\n */\n CommandPalette.prototype._activatePreviousItem = function () {\n // Bail if there are no search results.\n if (!this._results || this._results.length === 0) {\n return;\n }\n // Find the previous enabled item index.\n var ai = this._activeIndex;\n var n = this._results.length;\n var start = ai <= 0 ? n - 1 : ai - 1;\n var stop = start === n - 1 ? 0 : start + 1;\n this._activeIndex = algorithm_1.ArrayExt.findLastIndex(this._results, Private.canActivate, start, stop);\n // Schedule an update of the items.\n this.update();\n };\n /**\n * Execute the command item at the given index, if possible.\n */\n CommandPalette.prototype._execute = function (index) {\n // Bail if there are no search results.\n if (!this._results) {\n return;\n }\n // Bail if the index is out of range.\n var part = this._results[index];\n if (!part) {\n return;\n }\n // Update the search text if the item is a header.\n if (part.type === 'header') {\n var input = this.inputNode;\n input.value = part.category.toLowerCase() + \" \";\n input.focus();\n this.refresh();\n return;\n }\n // Bail if item is not enabled.\n if (!part.item.isEnabled) {\n return;\n }\n // Execute the item.\n this.commands.execute(part.item.command, part.item.args);\n // Clear the query text.\n this.inputNode.value = '';\n // Refresh the search results.\n this.refresh();\n };\n /**\n * Toggle the focused modifier based on the input node focus state.\n */\n CommandPalette.prototype._toggleFocused = function () {\n var focused = document.activeElement === this.inputNode;\n this.toggleClass('p-mod-focused', focused);\n };\n /**\n * A signal handler for generic command changes.\n */\n CommandPalette.prototype._onGenericChange = function () {\n this.refresh();\n };\n return CommandPalette;\n}(widget_1.Widget));\nexports.CommandPalette = CommandPalette;\n/**\n * The namespace for the `CommandPalette` class statics.\n */\n(function (CommandPalette) {\n /**\n * The default implementation of `IRenderer`.\n */\n var Renderer = /** @class */ (function () {\n function Renderer() {\n }\n /**\n * Render the virtual element for a command palette header.\n *\n * @param data - The data to use for rendering the header.\n *\n * @returns A virtual element representing the header.\n */\n Renderer.prototype.renderHeader = function (data) {\n var content = this.formatHeader(data);\n return virtualdom_1.h.li({ className: 'p-CommandPalette-header' }, content);\n };\n /**\n * Render the virtual element for a command palette item.\n *\n * @param data - The data to use for rendering the item.\n *\n * @returns A virtual element representing the item.\n */\n Renderer.prototype.renderItem = function (data) {\n var className = this.createItemClass(data);\n var dataset = this.createItemDataset(data);\n return (virtualdom_1.h.li({ className: className, dataset: dataset }, this.renderItemIcon(data), this.renderItemContent(data), this.renderItemShortcut(data)));\n };\n /**\n * Render the empty results message for a command palette.\n *\n * @param data - The data to use for rendering the message.\n *\n * @returns A virtual element representing the message.\n */\n Renderer.prototype.renderEmptyMessage = function (data) {\n var content = this.formatEmptyMessage(data);\n return virtualdom_1.h.li({ className: 'p-CommandPalette-emptyMessage' }, content);\n };\n /**\n * Render the icon for a command palette item.\n *\n * @param data - The data to use for rendering the icon.\n *\n * @returns A virtual element representing the icon.\n */\n Renderer.prototype.renderItemIcon = function (data) {\n var className = this.createIconClass(data);\n return virtualdom_1.h.div({ className: className }, data.item.iconLabel);\n };\n /**\n * Render the content for a command palette item.\n *\n * @param data - The data to use for rendering the content.\n *\n * @returns A virtual element representing the content.\n */\n Renderer.prototype.renderItemContent = function (data) {\n return (virtualdom_1.h.div({ className: 'p-CommandPalette-itemContent' }, this.renderItemLabel(data), this.renderItemCaption(data)));\n };\n /**\n * Render the label for a command palette item.\n *\n * @param data - The data to use for rendering the label.\n *\n * @returns A virtual element representing the label.\n */\n Renderer.prototype.renderItemLabel = function (data) {\n var content = this.formatItemLabel(data);\n return virtualdom_1.h.div({ className: 'p-CommandPalette-itemLabel' }, content);\n };\n /**\n * Render the caption for a command palette item.\n *\n * @param data - The data to use for rendering the caption.\n *\n * @returns A virtual element representing the caption.\n */\n Renderer.prototype.renderItemCaption = function (data) {\n var content = this.formatItemCaption(data);\n return virtualdom_1.h.div({ className: 'p-CommandPalette-itemCaption' }, content);\n };\n /**\n * Render the shortcut for a command palette item.\n *\n * @param data - The data to use for rendering the shortcut.\n *\n * @returns A virtual element representing the shortcut.\n */\n Renderer.prototype.renderItemShortcut = function (data) {\n var content = this.formatItemShortcut(data);\n return virtualdom_1.h.div({ className: 'p-CommandPalette-itemShortcut' }, content);\n };\n /**\n * Create the class name for the command palette item.\n *\n * @param data - The data to use for the class name.\n *\n * @returns The full class name for the command palette item.\n */\n Renderer.prototype.createItemClass = function (data) {\n // Set up the initial class name.\n var name = 'p-CommandPalette-item';\n // Add the boolean state classes.\n if (!data.item.isEnabled) {\n name += ' p-mod-disabled';\n }\n if (data.item.isToggled) {\n name += ' p-mod-toggled';\n }\n if (data.active) {\n name += ' p-mod-active';\n }\n // Add the extra class.\n var extra = data.item.className;\n if (extra) {\n name += \" \" + extra;\n }\n // Return the complete class name.\n return name;\n };\n /**\n * Create the dataset for the command palette item.\n *\n * @param data - The data to use for creating the dataset.\n *\n * @returns The dataset for the command palette item.\n */\n Renderer.prototype.createItemDataset = function (data) {\n return __assign({}, data.item.dataset, { command: data.item.command });\n };\n /**\n * Create the class name for the command item icon.\n *\n * @param data - The data to use for the class name.\n *\n * @returns The full class name for the item icon.\n */\n Renderer.prototype.createIconClass = function (data) {\n var name = 'p-CommandPalette-itemIcon';\n var extra = data.item.iconClass;\n return extra ? name + \" \" + extra : name;\n };\n /**\n * Create the render content for the header node.\n *\n * @param data - The data to use for the header content.\n *\n * @returns The content to add to the header node.\n */\n Renderer.prototype.formatHeader = function (data) {\n if (!data.indices || data.indices.length === 0) {\n return data.category;\n }\n return algorithm_1.StringExt.highlight(data.category, data.indices, virtualdom_1.h.mark);\n };\n /**\n * Create the render content for the empty message node.\n *\n * @param data - The data to use for the empty message content.\n *\n * @returns The content to add to the empty message node.\n */\n Renderer.prototype.formatEmptyMessage = function (data) {\n return \"No commands found that match '\" + data.query + \"'\";\n };\n /**\n * Create the render content for the item shortcut node.\n *\n * @param data - The data to use for the shortcut content.\n *\n * @returns The content to add to the shortcut node.\n */\n Renderer.prototype.formatItemShortcut = function (data) {\n var kb = data.item.keyBinding;\n return kb ? kb.keys.map(commands_1.CommandRegistry.formatKeystroke).join(', ') : null;\n };\n /**\n * Create the render content for the item label node.\n *\n * @param data - The data to use for the label content.\n *\n * @returns The content to add to the label node.\n */\n Renderer.prototype.formatItemLabel = function (data) {\n if (!data.indices || data.indices.length === 0) {\n return data.item.label;\n }\n return algorithm_1.StringExt.highlight(data.item.label, data.indices, virtualdom_1.h.mark);\n };\n /**\n * Create the render content for the item caption node.\n *\n * @param data - The data to use for the caption content.\n *\n * @returns The content to add to the caption node.\n */\n Renderer.prototype.formatItemCaption = function (data) {\n return data.item.caption;\n };\n return Renderer;\n }());\n CommandPalette.Renderer = Renderer;\n /**\n * The default `Renderer` instance.\n */\n CommandPalette.defaultRenderer = new Renderer();\n})(CommandPalette = exports.CommandPalette || (exports.CommandPalette = {}));\nexports.CommandPalette = CommandPalette;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create the DOM node for a command palette.\n */\n function createNode() {\n var node = document.createElement('div');\n var search = document.createElement('div');\n var wrapper = document.createElement('div');\n var input = document.createElement('input');\n var content = document.createElement('ul');\n search.className = 'p-CommandPalette-search';\n wrapper.className = 'p-CommandPalette-wrapper';\n input.className = 'p-CommandPalette-input';\n content.className = 'p-CommandPalette-content';\n input.spellcheck = false;\n wrapper.appendChild(input);\n search.appendChild(wrapper);\n node.appendChild(search);\n node.appendChild(content);\n return node;\n }\n Private.createNode = createNode;\n /**\n * Create a new command item from a command registry and options.\n */\n function createItem(commands, options) {\n return new CommandItem(commands, options);\n }\n Private.createItem = createItem;\n /**\n * Search an array of command items for fuzzy matches.\n */\n function search(items, query) {\n // Fuzzy match the items for the query.\n var scores = matchItems(items, query);\n // Sort the items based on their score.\n scores.sort(scoreCmp);\n // Create the results for the search.\n return createResults(scores);\n }\n Private.search = search;\n /**\n * Test whether a result item can be activated.\n */\n function canActivate(result) {\n return result.type === 'item' && result.item.isEnabled;\n }\n Private.canActivate = canActivate;\n /**\n * Normalize a category for a command item.\n */\n function normalizeCategory(category) {\n return category.trim().replace(/\\s+/g, ' ');\n }\n /**\n * Normalize the query text for a fuzzy search.\n */\n function normalizeQuery(text) {\n return text.replace(/\\s+/g, '').toLowerCase();\n }\n /**\n * Perform a fuzzy match on an array of command items.\n */\n function matchItems(items, query) {\n // Normalize the query text to lower case with no whitespace.\n query = normalizeQuery(query);\n // Create the array to hold the scores.\n var scores = [];\n // Iterate over the items and match against the query.\n for (var i = 0, n = items.length; i < n; ++i) {\n // Ignore items which are not visible.\n var item = items[i];\n if (!item.isVisible) {\n continue;\n }\n // If the query is empty, all items are matched by default.\n if (!query) {\n scores.push({\n matchType: 3 /* Default */,\n categoryIndices: null,\n labelIndices: null,\n score: 0, item: item\n });\n continue;\n }\n // Run the fuzzy search for the item and query.\n var score = fuzzySearch(item, query);\n // Ignore the item if it is not a match.\n if (!score) {\n continue;\n }\n // Penalize disabled items.\n // TODO - push disabled items all the way down in sort cmp?\n if (!item.isEnabled) {\n score.score += 1000;\n }\n // Add the score to the results.\n scores.push(score);\n }\n // Return the final array of scores.\n return scores;\n }\n /**\n * Perform a fuzzy search on a single command item.\n */\n function fuzzySearch(item, query) {\n // Create the source text to be searched.\n var category = item.category.toLowerCase();\n var label = item.label.toLowerCase();\n var source = category + \" \" + label;\n // Set up the match score and indices array.\n var score = Infinity;\n var indices = null;\n // The regex for search word boundaries\n var rgx = /\\b\\w/g;\n // Search the source by word boundary.\n while (true) {\n // Find the next word boundary in the source.\n var rgxMatch = rgx.exec(source);\n // Break if there is no more source context.\n if (!rgxMatch) {\n break;\n }\n // Run the string match on the relevant substring.\n var match = algorithm_1.StringExt.matchSumOfDeltas(source, query, rgxMatch.index);\n // Break if there is no match.\n if (!match) {\n break;\n }\n // Update the match if the score is better.\n if (match && match.score <= score) {\n score = match.score;\n indices = match.indices;\n }\n }\n // Bail if there was no match.\n if (!indices || score === Infinity) {\n return null;\n }\n // Compute the pivot index between category and label text.\n var pivot = category.length + 1;\n // Find the slice index to separate matched indices.\n var j = algorithm_1.ArrayExt.lowerBound(indices, pivot, function (a, b) { return a - b; });\n // Extract the matched category and label indices.\n var categoryIndices = indices.slice(0, j);\n var labelIndices = indices.slice(j);\n // Adjust the label indices for the pivot offset.\n for (var i = 0, n = labelIndices.length; i < n; ++i) {\n labelIndices[i] -= pivot;\n }\n // Handle a pure label match.\n if (categoryIndices.length === 0) {\n return {\n matchType: 0 /* Label */,\n categoryIndices: null,\n labelIndices: labelIndices,\n score: score, item: item\n };\n }\n // Handle a pure category match.\n if (labelIndices.length === 0) {\n return {\n matchType: 1 /* Category */,\n categoryIndices: categoryIndices,\n labelIndices: null,\n score: score, item: item\n };\n }\n // Handle a split match.\n return {\n matchType: 2 /* Split */,\n categoryIndices: categoryIndices,\n labelIndices: labelIndices,\n score: score, item: item\n };\n }\n /**\n * A sort comparison function for a match score.\n */\n function scoreCmp(a, b) {\n // First compare based on the match type\n var m1 = a.matchType - b.matchType;\n if (m1 !== 0) {\n return m1;\n }\n // Otherwise, compare based on the match score.\n var d1 = a.score - b.score;\n if (d1 !== 0) {\n return d1;\n }\n // Find the match index based on the match type.\n var i1 = 0;\n var i2 = 0;\n switch (a.matchType) {\n case 0 /* Label */:\n i1 = a.labelIndices[0];\n i2 = b.labelIndices[0];\n break;\n case 1 /* Category */:\n case 2 /* Split */:\n i1 = a.categoryIndices[0];\n i2 = b.categoryIndices[0];\n break;\n }\n // Compare based on the match index.\n if (i1 !== i2) {\n return i1 - i2;\n }\n // Otherwise, compare by category.\n var d2 = a.item.category.localeCompare(b.item.category);\n if (d2 !== 0) {\n return d2;\n }\n // Otherwise, compare by rank.\n var r1 = a.item.rank;\n var r2 = b.item.rank;\n if (r1 !== r2) {\n return r1 < r2 ? -1 : 1; // Infinity safe\n }\n // Finally, compare by label.\n return a.item.label.localeCompare(b.item.label);\n }\n /**\n * Create the results from an array of sorted scores.\n */\n function createResults(scores) {\n // Set up an array to track which scores have been visited.\n var visited = new Array(scores.length);\n algorithm_1.ArrayExt.fill(visited, false);\n // Set up the search results array.\n var results = [];\n // Iterate over each score in the array.\n for (var i = 0, n = scores.length; i < n; ++i) {\n // Ignore a score which has already been processed.\n if (visited[i]) {\n continue;\n }\n // Extract the current item and indices.\n var _a = scores[i], item = _a.item, categoryIndices = _a.categoryIndices;\n // Extract the category for the current item.\n var category = item.category;\n // Add the header result for the category.\n results.push({ type: 'header', category: category, indices: categoryIndices });\n // Find the rest of the scores with the same category.\n for (var j = i; j < n; ++j) {\n // Ignore a score which has already been processed.\n if (visited[j]) {\n continue;\n }\n // Extract the data for the current score.\n var _b = scores[j], item_1 = _b.item, labelIndices = _b.labelIndices;\n // Ignore an item with a different category.\n if (item_1.category !== category) {\n continue;\n }\n // Create the item result for the score.\n results.push({ type: 'item', item: item_1, indices: labelIndices });\n // Mark the score as processed.\n visited[j] = true;\n }\n }\n // Return the final results.\n return results;\n }\n /**\n * A concrete implementation of `CommandPalette.IItem`.\n */\n var CommandItem = /** @class */ (function () {\n /**\n * Construct a new command item.\n */\n function CommandItem(commands, options) {\n this._commands = commands;\n this.category = normalizeCategory(options.category);\n this.command = options.command;\n this.args = options.args || coreutils_1.JSONExt.emptyObject;\n this.rank = options.rank !== undefined ? options.rank : Infinity;\n }\n Object.defineProperty(CommandItem.prototype, \"label\", {\n /**\n * The display label for the command item.\n */\n get: function () {\n return this._commands.label(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"iconClass\", {\n /**\n * The icon class for the command item.\n */\n get: function () {\n return this._commands.iconClass(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"iconLabel\", {\n /**\n * The icon label for the command item.\n */\n get: function () {\n return this._commands.iconLabel(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"caption\", {\n /**\n * The display caption for the command item.\n */\n get: function () {\n return this._commands.caption(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"className\", {\n /**\n * The extra class name for the command item.\n */\n get: function () {\n return this._commands.className(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"dataset\", {\n /**\n * The dataset for the command item.\n */\n get: function () {\n return this._commands.dataset(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"isEnabled\", {\n /**\n * Whether the command item is enabled.\n */\n get: function () {\n return this._commands.isEnabled(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"isToggled\", {\n /**\n * Whether the command item is toggled.\n */\n get: function () {\n return this._commands.isToggled(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"isVisible\", {\n /**\n * Whether the command item is visible.\n */\n get: function () {\n return this._commands.isVisible(this.command, this.args);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommandItem.prototype, \"keyBinding\", {\n /**\n * The key binding for the command item.\n */\n get: function () {\n var _a = this, command = _a.command, args = _a.args;\n return algorithm_1.ArrayExt.findLastValue(this._commands.keyBindings, function (kb) {\n return kb.command === command && coreutils_1.JSONExt.deepEqual(kb.args, args);\n }) || null;\n },\n enumerable: true,\n configurable: true\n });\n return CommandItem;\n }());\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/commandpalette.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/contextmenu.js": +/*!***********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/contextmenu.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar disposable_1 = __webpack_require__(/*! @phosphor/disposable */ \"./node_modules/@phosphor/disposable/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar menu_1 = __webpack_require__(/*! ./menu */ \"./node_modules/@phosphor/widgets/lib/menu.js\");\n/**\n * An object which implements a universal context menu.\n *\n * #### Notes\n * The items shown in the context menu are determined by CSS selector\n * matching against the DOM hierarchy at the site of the mouse click.\n * This is similar in concept to how keyboard shortcuts are matched\n * in the command registry.\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Construct a new context menu.\n *\n * @param options - The options for initializing the menu.\n */\n function ContextMenu(options) {\n this._idTick = 0;\n this._items = [];\n this.menu = new menu_1.Menu(options);\n }\n /**\n * Add an item to the context menu.\n *\n * @param options - The options for creating the item.\n *\n * @returns A disposable which will remove the item from the menu.\n */\n ContextMenu.prototype.addItem = function (options) {\n var _this = this;\n // Create an item from the given options.\n var item = Private.createItem(options, this._idTick++);\n // Add the item to the internal array.\n this._items.push(item);\n // Return a disposable which will remove the item.\n return new disposable_1.DisposableDelegate(function () {\n algorithm_1.ArrayExt.removeFirstOf(_this._items, item);\n });\n };\n /**\n * Open the context menu in response to a `'contextmenu'` event.\n *\n * @param event - The `'contextmenu'` event of interest.\n *\n * @returns `true` if the menu was opened, or `false` if no items\n * matched the event and the menu was not opened.\n *\n * #### Notes\n * This method will populate the context menu with items which match\n * the propagation path of the event, then open the menu at the mouse\n * position indicated by the event.\n */\n ContextMenu.prototype.open = function (event) {\n var _this = this;\n // Clear the current contents of the context menu.\n this.menu.clearItems();\n // Bail early if there are no items to match.\n if (this._items.length === 0) {\n return false;\n }\n // Find the matching items for the event.\n var items = Private.matchItems(this._items, event);\n // Bail if there are no matching items.\n if (!items || items.length === 0) {\n return false;\n }\n // Add the filtered items to the menu.\n algorithm_1.each(items, function (item) { _this.menu.addItem(item); });\n // Open the context menu at the current mouse position.\n this.menu.open(event.clientX, event.clientY);\n // Indicate success.\n return true;\n };\n return ContextMenu;\n}());\nexports.ContextMenu = ContextMenu;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create a normalized context menu item from an options object.\n */\n function createItem(options, id) {\n var selector = validateSelector(options.selector);\n var rank = options.rank !== undefined ? options.rank : Infinity;\n return __assign({}, options, { selector: selector, rank: rank, id: id });\n }\n Private.createItem = createItem;\n /**\n * Find the items which match a context menu event.\n *\n * The results are sorted by DOM level, specificity, and rank.\n */\n function matchItems(items, event) {\n // Look up the target of the event.\n var target = event.target;\n // Bail if there is no target.\n if (!target) {\n return null;\n }\n // Look up the current target of the event.\n var currentTarget = event.currentTarget;\n // Bail if there is no current target.\n if (!currentTarget) {\n return null;\n }\n // There are some third party libraries that cause the `target` to\n // be detached from the DOM before Phosphor can process the event.\n // If that happens, search for a new target node by point. If that\n // node is still dangling, bail.\n if (!currentTarget.contains(target)) {\n target = document.elementFromPoint(event.clientX, event.clientY);\n if (!target || !currentTarget.contains(target)) {\n return null;\n }\n }\n // Set up the result array.\n var result = [];\n // Copy the items array to allow in-place modification.\n var availableItems = items.slice();\n // Walk up the DOM hierarchy searching for matches.\n while (target !== null) {\n // Set up the match array for this DOM level.\n var matches = [];\n // Search the remaining items for matches.\n for (var i = 0, n = availableItems.length; i < n; ++i) {\n // Fetch the item.\n var item = availableItems[i];\n // Skip items which are already consumed.\n if (!item) {\n continue;\n }\n // Skip items which do not match the element.\n if (!domutils_1.Selector.matches(target, item.selector)) {\n continue;\n }\n // Add the matched item to the result for this DOM level.\n matches.push(item);\n // Mark the item as consumed.\n availableItems[i] = null;\n }\n // Sort the matches for this level and add them to the results.\n if (matches.length !== 0) {\n matches.sort(itemCmp);\n result.push.apply(result, matches);\n }\n // Stop searching at the limits of the DOM range.\n if (target === currentTarget) {\n break;\n }\n // Step to the parent DOM level.\n target = target.parentElement;\n }\n // Return the matched and sorted results.\n return result;\n }\n Private.matchItems = matchItems;\n /**\n * Validate the selector for a menu item.\n *\n * This returns the validated selector, or throws if the selector is\n * invalid or contains commas.\n */\n function validateSelector(selector) {\n if (selector.indexOf(',') !== -1) {\n throw new Error(\"Selector cannot contain commas: \" + selector);\n }\n if (!domutils_1.Selector.isValid(selector)) {\n throw new Error(\"Invalid selector: \" + selector);\n }\n return selector;\n }\n /**\n * A sort comparison function for a context menu item.\n */\n function itemCmp(a, b) {\n // Sort first based on selector specificity.\n var s1 = domutils_1.Selector.calculateSpecificity(a.selector);\n var s2 = domutils_1.Selector.calculateSpecificity(b.selector);\n if (s1 !== s2) {\n return s2 - s1;\n }\n // If specificities are equal, sort based on rank.\n var r1 = a.rank;\n var r2 = b.rank;\n if (r1 !== r2) {\n return r1 < r2 ? -1 : 1; // Infinity-safe\n }\n // When all else fails, sort by item id.\n return a.id - b.id;\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/contextmenu.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/docklayout.js": +/*!**********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/docklayout.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar boxengine_1 = __webpack_require__(/*! ./boxengine */ \"./node_modules/@phosphor/widgets/lib/boxengine.js\");\nvar layout_1 = __webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A layout which provides a flexible docking arrangement.\n *\n * #### Notes\n * The consumer of this layout is responsible for handling all signals\n * from the generated tab bars and managing the visibility of widgets\n * and tab bars as needed.\n */\nvar DockLayout = /** @class */ (function (_super) {\n __extends(DockLayout, _super);\n /**\n * Construct a new dock layout.\n *\n * @param options - The options for initializing the layout.\n */\n function DockLayout(options) {\n var _this = _super.call(this) || this;\n _this._spacing = 4;\n _this._dirty = false;\n _this._root = null;\n _this._box = null;\n _this._items = new Map();\n _this.renderer = options.renderer;\n if (options.spacing !== undefined) {\n _this._spacing = Private.clampSpacing(options.spacing);\n }\n return _this;\n }\n /**\n * Dispose of the resources held by the layout.\n *\n * #### Notes\n * This will clear and dispose all widgets in the layout.\n */\n DockLayout.prototype.dispose = function () {\n // Get an iterator over the widgets in the layout.\n var widgets = this.iter();\n // Dispose of the layout items.\n this._items.forEach(function (item) { item.dispose(); });\n // Clear the layout state before disposing the widgets.\n this._box = null;\n this._root = null;\n this._items.clear();\n // Dispose of the widgets contained in the old layout root.\n algorithm_1.each(widgets, function (widget) { widget.dispose(); });\n // Dispose of the base class.\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(DockLayout.prototype, \"spacing\", {\n /**\n * Get the inter-element spacing for the dock layout.\n */\n get: function () {\n return this._spacing;\n },\n /**\n * Set the inter-element spacing for the dock layout.\n */\n set: function (value) {\n value = Private.clampSpacing(value);\n if (this._spacing === value) {\n return;\n }\n this._spacing = value;\n if (!this.parent) {\n return;\n }\n this.parent.fit();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockLayout.prototype, \"isEmpty\", {\n /**\n * Whether the dock layout is empty.\n */\n get: function () {\n return this._root === null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Create an iterator over all widgets in the layout.\n *\n * @returns A new iterator over the widgets in the layout.\n *\n * #### Notes\n * This iterator includes the generated tab bars.\n */\n DockLayout.prototype.iter = function () {\n return this._root ? this._root.iterAllWidgets() : algorithm_1.empty();\n };\n /**\n * Create an iterator over the user widgets in the layout.\n *\n * @returns A new iterator over the user widgets in the layout.\n *\n * #### Notes\n * This iterator does not include the generated tab bars.\n */\n DockLayout.prototype.widgets = function () {\n return this._root ? this._root.iterUserWidgets() : algorithm_1.empty();\n };\n /**\n * Create an iterator over the selected widgets in the layout.\n *\n * @returns A new iterator over the selected user widgets.\n *\n * #### Notes\n * This iterator yields the widgets corresponding to the current tab\n * of each tab bar in the layout.\n */\n DockLayout.prototype.selectedWidgets = function () {\n return this._root ? this._root.iterSelectedWidgets() : algorithm_1.empty();\n };\n /**\n * Create an iterator over the tab bars in the layout.\n *\n * @returns A new iterator over the tab bars in the layout.\n *\n * #### Notes\n * This iterator does not include the user widgets.\n */\n DockLayout.prototype.tabBars = function () {\n return this._root ? this._root.iterTabBars() : algorithm_1.empty();\n };\n /**\n * Create an iterator over the handles in the layout.\n *\n * @returns A new iterator over the handles in the layout.\n */\n DockLayout.prototype.handles = function () {\n return this._root ? this._root.iterHandles() : algorithm_1.empty();\n };\n /**\n * Move a handle to the given offset position.\n *\n * @param handle - The handle to move.\n *\n * @param offsetX - The desired offset X position of the handle.\n *\n * @param offsetY - The desired offset Y position of the handle.\n *\n * #### Notes\n * If the given handle is not contained in the layout, this is no-op.\n *\n * The handle will be moved as close as possible to the desired\n * position without violating any of the layout constraints.\n *\n * Only one of the coordinates is used depending on the orientation\n * of the handle. This method accepts both coordinates to make it\n * easy to invoke from a mouse move event without needing to know\n * the handle orientation.\n */\n DockLayout.prototype.moveHandle = function (handle, offsetX, offsetY) {\n // Bail early if there is no root or if the handle is hidden.\n if (!this._root || handle.classList.contains('p-mod-hidden')) {\n return;\n }\n // Lookup the split node for the handle.\n var data = this._root.findSplitNode(handle);\n if (!data) {\n return;\n }\n // Compute the desired delta movement for the handle.\n var delta;\n if (data.node.orientation === 'horizontal') {\n delta = offsetX - handle.offsetLeft;\n }\n else {\n delta = offsetY - handle.offsetTop;\n }\n // Bail if there is no handle movement.\n if (delta === 0) {\n return;\n }\n // Prevent sibling resizing unless needed.\n data.node.holdSizes();\n // Adjust the sizers to reflect the handle movement.\n boxengine_1.BoxEngine.adjust(data.node.sizers, data.index, delta);\n // Update the layout of the widgets.\n if (this.parent) {\n this.parent.update();\n }\n };\n /**\n * Save the current configuration of the dock layout.\n *\n * @returns A new config object for the current layout state.\n *\n * #### Notes\n * The return value can be provided to the `restoreLayout` method\n * in order to restore the layout to its current configuration.\n */\n DockLayout.prototype.saveLayout = function () {\n // Bail early if there is no root.\n if (!this._root) {\n return { main: null };\n }\n // Hold the current sizes in the layout tree.\n this._root.holdAllSizes();\n // Return the layout config.\n return { main: this._root.createConfig() };\n };\n /**\n * Restore the layout to a previously saved configuration.\n *\n * @param config - The layout configuration to restore.\n *\n * #### Notes\n * Widgets which currently belong to the layout but which are not\n * contained in the config will be unparented.\n */\n DockLayout.prototype.restoreLayout = function (config) {\n var _this = this;\n // Create the widget set for validating the config.\n var widgetSet = new Set();\n // Normalize the main area config and collect the widgets.\n var mainConfig;\n if (config.main) {\n mainConfig = Private.normalizeAreaConfig(config.main, widgetSet);\n }\n else {\n mainConfig = null;\n }\n // Create iterators over the old content.\n var oldWidgets = this.widgets();\n var oldTabBars = this.tabBars();\n var oldHandles = this.handles();\n // Clear the root before removing the old content.\n this._root = null;\n // Unparent the old widgets which are not in the new config.\n algorithm_1.each(oldWidgets, function (widget) {\n if (!widgetSet.has(widget)) {\n widget.parent = null;\n }\n });\n // Dispose of the old tab bars.\n algorithm_1.each(oldTabBars, function (tabBar) {\n tabBar.dispose();\n });\n // Remove the old handles.\n algorithm_1.each(oldHandles, function (handle) {\n if (handle.parentNode) {\n handle.parentNode.removeChild(handle);\n }\n });\n // Reparent the new widgets to the current parent.\n widgetSet.forEach(function (widget) {\n widget.parent = _this.parent;\n });\n // Create the root node for the new config.\n if (mainConfig) {\n this._root = Private.realizeAreaConfig(mainConfig, {\n createTabBar: function () { return _this._createTabBar(); },\n createHandle: function () { return _this._createHandle(); }\n });\n }\n else {\n this._root = null;\n }\n // If there is no parent, there is nothing more to do.\n if (!this.parent) {\n return;\n }\n // Attach the new widgets to the parent.\n widgetSet.forEach(function (widget) {\n _this.attachWidget(widget);\n });\n // Post a fit request to the parent.\n this.parent.fit();\n };\n /**\n * Add a widget to the dock layout.\n *\n * @param widget - The widget to add to the dock layout.\n *\n * @param options - The additional options for adding the widget.\n *\n * #### Notes\n * The widget will be moved if it is already contained in the layout.\n *\n * An error will be thrown if the reference widget is invalid.\n */\n DockLayout.prototype.addWidget = function (widget, options) {\n if (options === void 0) { options = {}; }\n // Parse the options.\n var ref = options.ref || null;\n var mode = options.mode || 'tab-after';\n // Find the tab node which holds the reference widget.\n var refNode = null;\n if (this._root && ref) {\n refNode = this._root.findTabNode(ref);\n }\n // Throw an error if the reference widget is invalid.\n if (ref && !refNode) {\n throw new Error('Reference widget is not in the layout.');\n }\n // Reparent the widget to the current layout parent.\n widget.parent = this.parent;\n // Insert the widget according to the insert mode.\n switch (mode) {\n case 'tab-after':\n this._insertTab(widget, ref, refNode, true);\n break;\n case 'tab-before':\n this._insertTab(widget, ref, refNode, false);\n break;\n case 'split-top':\n this._insertSplit(widget, ref, refNode, 'vertical', false);\n break;\n case 'split-left':\n this._insertSplit(widget, ref, refNode, 'horizontal', false);\n break;\n case 'split-right':\n this._insertSplit(widget, ref, refNode, 'horizontal', true);\n break;\n case 'split-bottom':\n this._insertSplit(widget, ref, refNode, 'vertical', true);\n break;\n }\n // Do nothing else if there is no parent widget.\n if (!this.parent) {\n return;\n }\n // Ensure the widget is attached to the parent widget.\n this.attachWidget(widget);\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * Remove a widget from the layout.\n *\n * @param widget - The widget to remove from the layout.\n *\n * #### Notes\n * A widget is automatically removed from the layout when its `parent`\n * is set to `null`. This method should only be invoked directly when\n * removing a widget from a layout which has yet to be installed on a\n * parent widget.\n *\n * This method does *not* modify the widget's `parent`.\n */\n DockLayout.prototype.removeWidget = function (widget) {\n // Remove the widget from its current layout location.\n this._removeWidget(widget);\n // Do nothing else if there is no parent widget.\n if (!this.parent) {\n return;\n }\n // Detach the widget from the parent widget.\n this.detachWidget(widget);\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * Find the tab area which contains the given client position.\n *\n * @param clientX - The client X position of interest.\n *\n * @param clientY - The client Y position of interest.\n *\n * @returns The geometry of the tab area at the given position, or\n * `null` if there is no tab area at the given position.\n */\n DockLayout.prototype.hitTestTabAreas = function (clientX, clientY) {\n // Bail early if hit testing cannot produce valid results.\n if (!this._root || !this.parent || !this.parent.isVisible) {\n return null;\n }\n // Ensure the parent box sizing data is computed.\n if (!this._box) {\n this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n }\n // Convert from client to local coordinates.\n var rect = this.parent.node.getBoundingClientRect();\n var x = clientX - rect.left - this._box.borderLeft;\n var y = clientY - rect.top - this._box.borderTop;\n // Find the tab layout node at the local position.\n var tabNode = this._root.hitTestTabNodes(x, y);\n // Bail if a tab layout node was not found.\n if (!tabNode) {\n return null;\n }\n // Extract the data from the tab node.\n var tabBar = tabNode.tabBar, top = tabNode.top, left = tabNode.left, width = tabNode.width, height = tabNode.height;\n // Compute the right and bottom edges of the tab area.\n var borderWidth = this._box.borderLeft + this._box.borderRight;\n var borderHeight = this._box.borderTop + this._box.borderBottom;\n var right = rect.width - borderWidth - (left + width);\n var bottom = rect.height - borderHeight - (top + height);\n // Return the hit test results.\n return { tabBar: tabBar, x: x, y: y, top: top, left: left, right: right, bottom: bottom, width: width, height: height };\n };\n /**\n * Perform layout initialization which requires the parent widget.\n */\n DockLayout.prototype.init = function () {\n var _this = this;\n // Perform superclass initialization.\n _super.prototype.init.call(this);\n // Attach each widget to the parent.\n algorithm_1.each(this, function (widget) { _this.attachWidget(widget); });\n // Attach each handle to the parent.\n algorithm_1.each(this.handles(), function (handle) { _this.parent.node.appendChild(handle); });\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * Attach the widget to the layout parent widget.\n *\n * @param widget - The widget to attach to the parent.\n *\n * #### Notes\n * This is a no-op if the widget is already attached.\n */\n DockLayout.prototype.attachWidget = function (widget) {\n // Do nothing if the widget is already attached.\n if (this.parent.node === widget.node.parentNode) {\n return;\n }\n // Create the layout item for the widget.\n this._items.set(widget, new layout_1.LayoutItem(widget));\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Add the widget's node to the parent.\n this.parent.node.appendChild(widget.node);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n };\n /**\n * Detach the widget from the layout parent widget.\n *\n * @param widget - The widget to detach from the parent.\n *\n * #### Notes\n * This is a no-op if the widget is not attached.\n */\n DockLayout.prototype.detachWidget = function (widget) {\n // Do nothing if the widget is not attached.\n if (this.parent.node !== widget.node.parentNode) {\n return;\n }\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget's node from the parent.\n this.parent.node.removeChild(widget.node);\n // Send an `'after-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n // Delete the layout item for the widget.\n var item = this._items.get(widget);\n if (item) {\n this._items.delete(widget);\n item.dispose();\n }\n };\n /**\n * A message handler invoked on a `'before-show'` message.\n */\n DockLayout.prototype.onBeforeShow = function (msg) {\n _super.prototype.onBeforeShow.call(this, msg);\n this.parent.update();\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n DockLayout.prototype.onBeforeAttach = function (msg) {\n _super.prototype.onBeforeAttach.call(this, msg);\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-shown'` message.\n */\n DockLayout.prototype.onChildShown = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-hidden'` message.\n */\n DockLayout.prototype.onChildHidden = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'resize'` message.\n */\n DockLayout.prototype.onResize = function (msg) {\n if (this.parent.isVisible) {\n this._update(msg.width, msg.height);\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n DockLayout.prototype.onUpdateRequest = function (msg) {\n if (this.parent.isVisible) {\n this._update(-1, -1);\n }\n };\n /**\n * A message handler invoked on a `'fit-request'` message.\n */\n DockLayout.prototype.onFitRequest = function (msg) {\n if (this.parent.isAttached) {\n this._fit();\n }\n };\n /**\n * Remove the specified widget from the layout structure.\n *\n * #### Notes\n * This is a no-op if the widget is not in the layout tree.\n *\n * This does not detach the widget from the parent node.\n */\n DockLayout.prototype._removeWidget = function (widget) {\n // Bail early if there is no layout root.\n if (!this._root) {\n return;\n }\n // Find the tab node which contains the given widget.\n var tabNode = this._root.findTabNode(widget);\n // Bail early if the tab node is not found.\n if (!tabNode) {\n return;\n }\n // If there are multiple tabs, just remove the widget's tab.\n if (tabNode.tabBar.titles.length > 1) {\n tabNode.tabBar.removeTab(widget.title);\n return;\n }\n // Otherwise, the tab node needs to be removed...\n // Dispose the tab bar.\n tabNode.tabBar.dispose();\n // Handle the case where the tab node is the root.\n if (this._root === tabNode) {\n this._root = null;\n return;\n }\n // Otherwise, remove the tab node from its parent...\n // Prevent widget resizing unless needed.\n this._root.holdAllSizes();\n // Clear the parent reference on the tab node.\n var splitNode = tabNode.parent;\n tabNode.parent = null;\n // Remove the tab node from its parent split node.\n var i = algorithm_1.ArrayExt.removeFirstOf(splitNode.children, tabNode);\n var handle = algorithm_1.ArrayExt.removeAt(splitNode.handles, i);\n algorithm_1.ArrayExt.removeAt(splitNode.sizers, i);\n // Remove the handle from its parent DOM node.\n if (handle.parentNode) {\n handle.parentNode.removeChild(handle);\n }\n // If there are multiple children, just update the handles.\n if (splitNode.children.length > 1) {\n splitNode.syncHandles();\n return;\n }\n // Otherwise, the split node also needs to be removed...\n // Clear the parent reference on the split node.\n var maybeParent = splitNode.parent;\n splitNode.parent = null;\n // Lookup the remaining child node and handle.\n var childNode = splitNode.children[0];\n var childHandle = splitNode.handles[0];\n // Clear the split node data.\n splitNode.children.length = 0;\n splitNode.handles.length = 0;\n splitNode.sizers.length = 0;\n // Remove the child handle from its parent node.\n if (childHandle.parentNode) {\n childHandle.parentNode.removeChild(childHandle);\n }\n // Handle the case where the split node is the root.\n if (this._root === splitNode) {\n childNode.parent = null;\n this._root = childNode;\n return;\n }\n // Otherwise, move the child node to the parent node...\n var parentNode = maybeParent;\n // Lookup the index of the split node.\n var j = parentNode.children.indexOf(splitNode);\n // Handle the case where the child node is a tab node.\n if (childNode instanceof Private.TabLayoutNode) {\n childNode.parent = parentNode;\n parentNode.children[j] = childNode;\n return;\n }\n // Remove the split data from the parent.\n var splitHandle = algorithm_1.ArrayExt.removeAt(parentNode.handles, j);\n algorithm_1.ArrayExt.removeAt(parentNode.children, j);\n algorithm_1.ArrayExt.removeAt(parentNode.sizers, j);\n // Remove the handle from its parent node.\n if (splitHandle.parentNode) {\n splitHandle.parentNode.removeChild(splitHandle);\n }\n // The child node and the split parent node will have the same\n // orientation. Merge the grand-children with the parent node.\n for (var i_1 = 0, n = childNode.children.length; i_1 < n; ++i_1) {\n var gChild = childNode.children[i_1];\n var gHandle = childNode.handles[i_1];\n var gSizer = childNode.sizers[i_1];\n algorithm_1.ArrayExt.insert(parentNode.children, j + i_1, gChild);\n algorithm_1.ArrayExt.insert(parentNode.handles, j + i_1, gHandle);\n algorithm_1.ArrayExt.insert(parentNode.sizers, j + i_1, gSizer);\n gChild.parent = parentNode;\n }\n // Clear the child node.\n childNode.children.length = 0;\n childNode.handles.length = 0;\n childNode.sizers.length = 0;\n childNode.parent = null;\n // Sync the handles on the parent node.\n parentNode.syncHandles();\n };\n /**\n * Insert a widget next to an existing tab.\n *\n * #### Notes\n * This does not attach the widget to the parent widget.\n */\n DockLayout.prototype._insertTab = function (widget, ref, refNode, after) {\n // Do nothing if the tab is inserted next to itself.\n if (widget === ref) {\n return;\n }\n // Create the root if it does not exist.\n if (!this._root) {\n var tabNode = new Private.TabLayoutNode(this._createTabBar());\n tabNode.tabBar.addTab(widget.title);\n this._root = tabNode;\n return;\n }\n // Use the first tab node as the ref node if needed.\n if (!refNode) {\n refNode = this._root.findFirstTabNode();\n }\n // If the widget is not contained in the ref node, ensure it is\n // removed from the layout and hidden before being added again.\n if (refNode.tabBar.titles.indexOf(widget.title) === -1) {\n this._removeWidget(widget);\n widget.hide();\n }\n // Lookup the target index for inserting the tab.\n var index;\n if (ref) {\n index = refNode.tabBar.titles.indexOf(ref.title);\n }\n else {\n index = refNode.tabBar.currentIndex;\n }\n // Insert the widget's tab relative to the target index.\n refNode.tabBar.insertTab(index + (after ? 1 : 0), widget.title);\n };\n /**\n * Insert a widget as a new split area.\n *\n * #### Notes\n * This does not attach the widget to the parent widget.\n */\n DockLayout.prototype._insertSplit = function (widget, ref, refNode, orientation, after) {\n // Do nothing if there is no effective split.\n if (widget === ref && refNode && refNode.tabBar.titles.length === 1) {\n return;\n }\n // Ensure the widget is removed from the current layout.\n this._removeWidget(widget);\n // Create the tab layout node to hold the widget.\n var tabNode = new Private.TabLayoutNode(this._createTabBar());\n tabNode.tabBar.addTab(widget.title);\n // Set the root if it does not exist.\n if (!this._root) {\n this._root = tabNode;\n return;\n }\n // If the ref node parent is null, split the root.\n if (!refNode || !refNode.parent) {\n // Ensure the root is split with the correct orientation.\n var root = this._splitRoot(orientation);\n // Determine the insert index for the new tab node.\n var i_2 = after ? root.children.length : 0;\n // Normalize the split node.\n root.normalizeSizes();\n // Create the sizer for new tab node.\n var sizer = Private.createSizer(refNode ? 1 : Private.GOLDEN_RATIO);\n // Insert the tab node sized to the golden ratio.\n algorithm_1.ArrayExt.insert(root.children, i_2, tabNode);\n algorithm_1.ArrayExt.insert(root.sizers, i_2, sizer);\n algorithm_1.ArrayExt.insert(root.handles, i_2, this._createHandle());\n tabNode.parent = root;\n // Re-normalize the split node to maintain the ratios.\n root.normalizeSizes();\n // Finally, synchronize the visibility of the handles.\n root.syncHandles();\n return;\n }\n // Lookup the split node for the ref widget.\n var splitNode = refNode.parent;\n // If the split node already had the correct orientation,\n // the widget can be inserted into the split node directly.\n if (splitNode.orientation === orientation) {\n // Find the index of the ref node.\n var i_3 = splitNode.children.indexOf(refNode);\n // Normalize the split node.\n splitNode.normalizeSizes();\n // Consume half the space for the insert location.\n var s = splitNode.sizers[i_3].sizeHint /= 2;\n // Insert the tab node sized to the other half.\n var j_1 = i_3 + (after ? 1 : 0);\n algorithm_1.ArrayExt.insert(splitNode.children, j_1, tabNode);\n algorithm_1.ArrayExt.insert(splitNode.sizers, j_1, Private.createSizer(s));\n algorithm_1.ArrayExt.insert(splitNode.handles, j_1, this._createHandle());\n tabNode.parent = splitNode;\n // Finally, synchronize the visibility of the handles.\n splitNode.syncHandles();\n return;\n }\n // Remove the ref node from the split node.\n var i = algorithm_1.ArrayExt.removeFirstOf(splitNode.children, refNode);\n // Create a new normalized split node for the children.\n var childNode = new Private.SplitLayoutNode(orientation);\n childNode.normalized = true;\n // Add the ref node sized to half the space.\n childNode.children.push(refNode);\n childNode.sizers.push(Private.createSizer(0.5));\n childNode.handles.push(this._createHandle());\n refNode.parent = childNode;\n // Add the tab node sized to the other half.\n var j = after ? 1 : 0;\n algorithm_1.ArrayExt.insert(childNode.children, j, tabNode);\n algorithm_1.ArrayExt.insert(childNode.sizers, j, Private.createSizer(0.5));\n algorithm_1.ArrayExt.insert(childNode.handles, j, this._createHandle());\n tabNode.parent = childNode;\n // Synchronize the visibility of the handles.\n childNode.syncHandles();\n // Finally, add the new child node to the original split node.\n algorithm_1.ArrayExt.insert(splitNode.children, i, childNode);\n childNode.parent = splitNode;\n };\n /**\n * Ensure the root is a split node with the given orientation.\n */\n DockLayout.prototype._splitRoot = function (orientation) {\n // Bail early if the root already meets the requirements.\n var oldRoot = this._root;\n if (oldRoot instanceof Private.SplitLayoutNode) {\n if (oldRoot.orientation === orientation) {\n return oldRoot;\n }\n }\n // Create a new root node with the specified orientation.\n var newRoot = this._root = new Private.SplitLayoutNode(orientation);\n // Add the old root to the new root.\n if (oldRoot) {\n newRoot.children.push(oldRoot);\n newRoot.sizers.push(Private.createSizer(0));\n newRoot.handles.push(this._createHandle());\n oldRoot.parent = newRoot;\n }\n // Return the new root as a convenience.\n return newRoot;\n };\n /**\n * Fit the layout to the total size required by the widgets.\n */\n DockLayout.prototype._fit = function () {\n // Set up the computed minimum size.\n var minW = 0;\n var minH = 0;\n // Update the size limits for the layout tree.\n if (this._root) {\n var limits = this._root.fit(this._spacing, this._items);\n minW = limits.minWidth;\n minH = limits.minHeight;\n }\n // Update the box sizing and add it to the computed min size.\n var box = this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n minW += box.horizontalSum;\n minH += box.verticalSum;\n // Update the parent's min size constraints.\n var style = this.parent.node.style;\n style.minWidth = minW + \"px\";\n style.minHeight = minH + \"px\";\n // Set the dirty flag to ensure only a single update occurs.\n this._dirty = true;\n // Notify the ancestor that it should fit immediately. This may\n // cause a resize of the parent, fulfilling the required update.\n if (this.parent.parent) {\n messaging_1.MessageLoop.sendMessage(this.parent.parent, widget_1.Widget.Msg.FitRequest);\n }\n // If the dirty flag is still set, the parent was not resized.\n // Trigger the required update on the parent widget immediately.\n if (this._dirty) {\n messaging_1.MessageLoop.sendMessage(this.parent, widget_1.Widget.Msg.UpdateRequest);\n }\n };\n /**\n * Update the layout position and size of the widgets.\n *\n * The parent offset dimensions should be `-1` if unknown.\n */\n DockLayout.prototype._update = function (offsetWidth, offsetHeight) {\n // Clear the dirty flag to indicate the update occurred.\n this._dirty = false;\n // Bail early if there is no root layout node.\n if (!this._root) {\n return;\n }\n // Measure the parent if the offset dimensions are unknown.\n if (offsetWidth < 0) {\n offsetWidth = this.parent.node.offsetWidth;\n }\n if (offsetHeight < 0) {\n offsetHeight = this.parent.node.offsetHeight;\n }\n // Ensure the parent box sizing data is computed.\n if (!this._box) {\n this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n }\n // Compute the actual layout bounds adjusted for border and padding.\n var x = this._box.paddingTop;\n var y = this._box.paddingLeft;\n var width = offsetWidth - this._box.horizontalSum;\n var height = offsetHeight - this._box.verticalSum;\n // Update the geometry of the layout tree.\n this._root.update(x, y, width, height, this._spacing, this._items);\n };\n /**\n * Create a new tab bar for use by the dock layout.\n *\n * #### Notes\n * The tab bar will be attached to the parent if it exists.\n */\n DockLayout.prototype._createTabBar = function () {\n // Create the tab bar using the renderer.\n var tabBar = this.renderer.createTabBar();\n // Enforce necessary tab bar behavior.\n tabBar.orientation = 'horizontal';\n // Reparent and attach the tab bar to the parent if possible.\n if (this.parent) {\n tabBar.parent = this.parent;\n this.attachWidget(tabBar);\n }\n // Return the initialized tab bar.\n return tabBar;\n };\n /**\n * Create a new handle for the dock layout.\n *\n * #### Notes\n * The handle will be attached to the parent if it exists.\n */\n DockLayout.prototype._createHandle = function () {\n // Create the handle using the renderer.\n var handle = this.renderer.createHandle();\n // Initialize the handle layout behavior.\n var style = handle.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style.width = '0';\n style.height = '0';\n // Attach the handle to the parent if it exists.\n if (this.parent) {\n this.parent.node.appendChild(handle);\n }\n // Return the initialized handle.\n return handle;\n };\n return DockLayout;\n}(layout_1.Layout));\nexports.DockLayout = DockLayout;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * A fraction used for sizing root panels; ~= `1 / golden_ratio`.\n */\n Private.GOLDEN_RATIO = 0.618;\n /**\n * Clamp a spacing value to an integer >= 0.\n */\n function clampSpacing(value) {\n return Math.max(0, Math.floor(value));\n }\n Private.clampSpacing = clampSpacing;\n /**\n * Create a box sizer with an initial size hint.\n */\n function createSizer(hint) {\n var sizer = new boxengine_1.BoxSizer();\n sizer.sizeHint = hint;\n sizer.size = hint;\n return sizer;\n }\n Private.createSizer = createSizer;\n /**\n * Normalize an area config object and collect the visited widgets.\n */\n function normalizeAreaConfig(config, widgetSet) {\n var result;\n if (config.type === 'tab-area') {\n result = normalizeTabAreaConfig(config, widgetSet);\n }\n else {\n result = normalizeSplitAreaConfig(config, widgetSet);\n }\n return result;\n }\n Private.normalizeAreaConfig = normalizeAreaConfig;\n /**\n * Convert a normalized area config into a layout tree.\n */\n function realizeAreaConfig(config, renderer) {\n var node;\n if (config.type === 'tab-area') {\n node = realizeTabAreaConfig(config, renderer);\n }\n else {\n node = realizeSplitAreaConfig(config, renderer);\n }\n return node;\n }\n Private.realizeAreaConfig = realizeAreaConfig;\n /**\n * A layout node which holds the data for a tabbed area.\n */\n var TabLayoutNode = /** @class */ (function () {\n /**\n * Construct a new tab layout node.\n *\n * @param tabBar - The tab bar to use for the layout node.\n */\n function TabLayoutNode(tabBar) {\n /**\n * The parent of the layout node.\n */\n this.parent = null;\n this._top = 0;\n this._left = 0;\n this._width = 0;\n this._height = 0;\n var tabSizer = new boxengine_1.BoxSizer();\n var widgetSizer = new boxengine_1.BoxSizer();\n tabSizer.stretch = 0;\n widgetSizer.stretch = 1;\n this.tabBar = tabBar;\n this.sizers = [tabSizer, widgetSizer];\n }\n Object.defineProperty(TabLayoutNode.prototype, \"top\", {\n /**\n * The most recent value for the `top` edge of the layout box.\n */\n get: function () {\n return this._top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabLayoutNode.prototype, \"left\", {\n /**\n * The most recent value for the `left` edge of the layout box.\n */\n get: function () {\n return this._left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabLayoutNode.prototype, \"width\", {\n /**\n * The most recent value for the `width` of the layout box.\n */\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabLayoutNode.prototype, \"height\", {\n /**\n * The most recent value for the `height` of the layout box.\n */\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Create an iterator for all widgets in the layout tree.\n */\n TabLayoutNode.prototype.iterAllWidgets = function () {\n return algorithm_1.chain(algorithm_1.once(this.tabBar), this.iterUserWidgets());\n };\n /**\n * Create an iterator for the user widgets in the layout tree.\n */\n TabLayoutNode.prototype.iterUserWidgets = function () {\n return algorithm_1.map(this.tabBar.titles, function (title) { return title.owner; });\n };\n /**\n * Create an iterator for the selected widgets in the layout tree.\n */\n TabLayoutNode.prototype.iterSelectedWidgets = function () {\n var title = this.tabBar.currentTitle;\n return title ? algorithm_1.once(title.owner) : algorithm_1.empty();\n };\n /**\n * Create an iterator for the tab bars in the layout tree.\n */\n TabLayoutNode.prototype.iterTabBars = function () {\n return algorithm_1.once(this.tabBar);\n };\n /**\n * Create an iterator for the handles in the layout tree.\n */\n TabLayoutNode.prototype.iterHandles = function () {\n return algorithm_1.empty();\n };\n /**\n * Find the tab layout node which contains the given widget.\n */\n TabLayoutNode.prototype.findTabNode = function (widget) {\n return this.tabBar.titles.indexOf(widget.title) !== -1 ? this : null;\n };\n /**\n * Find the split layout node which contains the given handle.\n */\n TabLayoutNode.prototype.findSplitNode = function (handle) {\n return null;\n };\n /**\n * Find the first tab layout node in a layout tree.\n */\n TabLayoutNode.prototype.findFirstTabNode = function () {\n return this;\n };\n /**\n * Find the tab layout node which contains the local point.\n */\n TabLayoutNode.prototype.hitTestTabNodes = function (x, y) {\n if (x < this._left || x >= this._left + this._width) {\n return null;\n }\n if (y < this._top || y >= this._top + this._height) {\n return null;\n }\n return this;\n };\n /**\n * Create a configuration object for the layout tree.\n */\n TabLayoutNode.prototype.createConfig = function () {\n var widgets = this.tabBar.titles.map(function (title) { return title.owner; });\n var currentIndex = this.tabBar.currentIndex;\n return { type: 'tab-area', widgets: widgets, currentIndex: currentIndex };\n };\n /**\n * Recursively hold all of the sizes in the layout tree.\n *\n * This ignores the sizers of tab layout nodes.\n */\n TabLayoutNode.prototype.holdAllSizes = function () {\n return;\n };\n /**\n * Fit the layout tree.\n */\n TabLayoutNode.prototype.fit = function (spacing, items) {\n // Set up the limit variables.\n var minWidth = 0;\n var minHeight = 0;\n var maxWidth = Infinity;\n var maxHeight = Infinity;\n // Lookup the tab bar layout item.\n var tabBarItem = items.get(this.tabBar);\n // Lookup the widget layout item.\n var current = this.tabBar.currentTitle;\n var widgetItem = current ? items.get(current.owner) : undefined;\n // Lookup the tab bar and widget sizers.\n var _a = this.sizers, tabBarSizer = _a[0], widgetSizer = _a[1];\n // Update the tab bar limits.\n if (tabBarItem) {\n tabBarItem.fit();\n }\n // Update the widget limits.\n if (widgetItem) {\n widgetItem.fit();\n }\n // Update the results and sizer for the tab bar.\n if (tabBarItem && !tabBarItem.isHidden) {\n minWidth = Math.max(minWidth, tabBarItem.minWidth);\n minHeight += tabBarItem.minHeight;\n tabBarSizer.minSize = tabBarItem.minHeight;\n tabBarSizer.maxSize = tabBarItem.maxHeight;\n }\n else {\n tabBarSizer.minSize = 0;\n tabBarSizer.maxSize = 0;\n }\n // Update the results and sizer for the current widget.\n if (widgetItem && !widgetItem.isHidden) {\n minWidth = Math.max(minWidth, widgetItem.minWidth);\n minHeight += widgetItem.minHeight;\n widgetSizer.minSize = widgetItem.minHeight;\n widgetSizer.maxSize = Infinity;\n }\n else {\n widgetSizer.minSize = 0;\n widgetSizer.maxSize = Infinity;\n }\n // Return the computed size limits for the layout node.\n return { minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight };\n };\n /**\n * Update the layout tree.\n */\n TabLayoutNode.prototype.update = function (left, top, width, height, spacing, items) {\n // Update the layout box values.\n this._top = top;\n this._left = left;\n this._width = width;\n this._height = height;\n // Lookup the tab bar layout item.\n var tabBarItem = items.get(this.tabBar);\n // Lookup the widget layout item.\n var current = this.tabBar.currentTitle;\n var widgetItem = current ? items.get(current.owner) : undefined;\n // Distribute the layout space to the sizers.\n boxengine_1.BoxEngine.calc(this.sizers, height);\n // Update the tab bar item using the computed size.\n if (tabBarItem && !tabBarItem.isHidden) {\n var size = this.sizers[0].size;\n tabBarItem.update(left, top, width, size);\n top += size;\n }\n // Layout the widget using the computed size.\n if (widgetItem && !widgetItem.isHidden) {\n var size = this.sizers[1].size;\n widgetItem.update(left, top, width, size);\n }\n };\n return TabLayoutNode;\n }());\n Private.TabLayoutNode = TabLayoutNode;\n /**\n * A layout node which holds the data for a split area.\n */\n var SplitLayoutNode = /** @class */ (function () {\n /**\n * Construct a new split layout node.\n *\n * @param orientation - The orientation of the node.\n */\n function SplitLayoutNode(orientation) {\n /**\n * The parent of the layout node.\n */\n this.parent = null;\n /**\n * Whether the sizers have been normalized.\n */\n this.normalized = false;\n /**\n * The child nodes for the split node.\n */\n this.children = [];\n /**\n * The box sizers for the layout children.\n */\n this.sizers = [];\n /**\n * The handles for the layout children.\n */\n this.handles = [];\n this.orientation = orientation;\n }\n /**\n * Create an iterator for all widgets in the layout tree.\n */\n SplitLayoutNode.prototype.iterAllWidgets = function () {\n var children = algorithm_1.map(this.children, function (child) { return child.iterAllWidgets(); });\n return new algorithm_1.ChainIterator(children);\n };\n /**\n * Create an iterator for the user widgets in the layout tree.\n */\n SplitLayoutNode.prototype.iterUserWidgets = function () {\n var children = algorithm_1.map(this.children, function (child) { return child.iterUserWidgets(); });\n return new algorithm_1.ChainIterator(children);\n };\n /**\n * Create an iterator for the selected widgets in the layout tree.\n */\n SplitLayoutNode.prototype.iterSelectedWidgets = function () {\n var children = algorithm_1.map(this.children, function (child) { return child.iterSelectedWidgets(); });\n return new algorithm_1.ChainIterator(children);\n };\n /**\n * Create an iterator for the tab bars in the layout tree.\n */\n SplitLayoutNode.prototype.iterTabBars = function () {\n var children = algorithm_1.map(this.children, function (child) { return child.iterTabBars(); });\n return new algorithm_1.ChainIterator(children);\n };\n /**\n * Create an iterator for the handles in the layout tree.\n */\n SplitLayoutNode.prototype.iterHandles = function () {\n var children = algorithm_1.map(this.children, function (child) { return child.iterHandles(); });\n return algorithm_1.chain(this.handles, new algorithm_1.ChainIterator(children));\n };\n /**\n * Find the tab layout node which contains the given widget.\n */\n SplitLayoutNode.prototype.findTabNode = function (widget) {\n for (var i = 0, n = this.children.length; i < n; ++i) {\n var result = this.children[i].findTabNode(widget);\n if (result) {\n return result;\n }\n }\n return null;\n };\n /**\n * Find the split layout node which contains the given handle.\n */\n SplitLayoutNode.prototype.findSplitNode = function (handle) {\n var index = this.handles.indexOf(handle);\n if (index !== -1) {\n return { index: index, node: this };\n }\n for (var i = 0, n = this.children.length; i < n; ++i) {\n var result = this.children[i].findSplitNode(handle);\n if (result) {\n return result;\n }\n }\n return null;\n };\n /**\n * Find the first tab layout node in a layout tree.\n */\n SplitLayoutNode.prototype.findFirstTabNode = function () {\n if (this.children.length === 0) {\n return null;\n }\n return this.children[0].findFirstTabNode();\n };\n /**\n * Find the tab layout node which contains the local point.\n */\n SplitLayoutNode.prototype.hitTestTabNodes = function (x, y) {\n for (var i = 0, n = this.children.length; i < n; ++i) {\n var result = this.children[i].hitTestTabNodes(x, y);\n if (result) {\n return result;\n }\n }\n return null;\n };\n /**\n * Create a configuration object for the layout tree.\n */\n SplitLayoutNode.prototype.createConfig = function () {\n var orientation = this.orientation;\n var sizes = this.createNormalizedSizes();\n var children = this.children.map(function (child) { return child.createConfig(); });\n return { type: 'split-area', orientation: orientation, children: children, sizes: sizes };\n };\n /**\n * Sync the visibility and orientation of the handles.\n */\n SplitLayoutNode.prototype.syncHandles = function () {\n var _this = this;\n algorithm_1.each(this.handles, function (handle, i) {\n handle.setAttribute('data-orientation', _this.orientation);\n if (i === _this.handles.length - 1) {\n handle.classList.add('p-mod-hidden');\n }\n else {\n handle.classList.remove('p-mod-hidden');\n }\n });\n };\n /**\n * Hold the current sizes of the box sizers.\n *\n * This sets the size hint of each sizer to its current size.\n */\n SplitLayoutNode.prototype.holdSizes = function () {\n algorithm_1.each(this.sizers, function (sizer) { sizer.sizeHint = sizer.size; });\n };\n /**\n * Recursively hold all of the sizes in the layout tree.\n *\n * This ignores the sizers of tab layout nodes.\n */\n SplitLayoutNode.prototype.holdAllSizes = function () {\n algorithm_1.each(this.children, function (child) { return child.holdAllSizes(); });\n this.holdSizes();\n };\n /**\n * Normalize the sizes of the split layout node.\n */\n SplitLayoutNode.prototype.normalizeSizes = function () {\n // Bail early if the sizers are empty.\n var n = this.sizers.length;\n if (n === 0) {\n return;\n }\n // Hold the current sizes of the sizers.\n this.holdSizes();\n // Compute the sum of the sizes.\n var sum = algorithm_1.reduce(this.sizers, function (v, sizer) { return v + sizer.sizeHint; }, 0);\n // Normalize the sizes based on the sum.\n if (sum === 0) {\n algorithm_1.each(this.sizers, function (sizer) {\n sizer.size = sizer.sizeHint = 1 / n;\n });\n }\n else {\n algorithm_1.each(this.sizers, function (sizer) {\n sizer.size = sizer.sizeHint /= sum;\n });\n }\n // Mark the sizes as normalized.\n this.normalized = true;\n };\n /**\n * Snap the normalized sizes of the split layout node.\n */\n SplitLayoutNode.prototype.createNormalizedSizes = function () {\n // Bail early if the sizers are empty.\n var n = this.sizers.length;\n if (n === 0) {\n return [];\n }\n // Grab the current sizes of the sizers.\n var sizes = this.sizers.map(function (sizer) { return sizer.size; });\n // Compute the sum of the sizes.\n var sum = algorithm_1.reduce(sizes, function (v, size) { return v + size; }, 0);\n // Normalize the sizes based on the sum.\n if (sum === 0) {\n algorithm_1.each(sizes, function (size, i) { sizes[i] = 1 / n; });\n }\n else {\n algorithm_1.each(sizes, function (size, i) { sizes[i] = size / sum; });\n }\n // Return the normalized sizes.\n return sizes;\n };\n /**\n * Fit the layout tree.\n */\n SplitLayoutNode.prototype.fit = function (spacing, items) {\n // Compute the required fixed space.\n var horizontal = this.orientation === 'horizontal';\n var fixed = Math.max(0, this.children.length - 1) * spacing;\n // Set up the limit variables.\n var minWidth = horizontal ? fixed : 0;\n var minHeight = horizontal ? 0 : fixed;\n var maxWidth = Infinity;\n var maxHeight = Infinity;\n // Fit the children and update the limits.\n for (var i = 0, n = this.children.length; i < n; ++i) {\n var limits = this.children[i].fit(spacing, items);\n if (horizontal) {\n minHeight = Math.max(minHeight, limits.minHeight);\n minWidth += limits.minWidth;\n this.sizers[i].minSize = limits.minWidth;\n }\n else {\n minWidth = Math.max(minWidth, limits.minWidth);\n minHeight += limits.minHeight;\n this.sizers[i].minSize = limits.minHeight;\n }\n }\n // Return the computed limits for the layout node.\n return { minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight };\n };\n /**\n * Update the layout tree.\n */\n SplitLayoutNode.prototype.update = function (left, top, width, height, spacing, items) {\n // Compute the available layout space.\n var horizontal = this.orientation === 'horizontal';\n var fixed = Math.max(0, this.children.length - 1) * spacing;\n var space = Math.max(0, (horizontal ? width : height) - fixed);\n // De-normalize the sizes if needed.\n if (this.normalized) {\n algorithm_1.each(this.sizers, function (sizer) { sizer.sizeHint *= space; });\n this.normalized = false;\n }\n // Distribute the layout space to the sizers.\n boxengine_1.BoxEngine.calc(this.sizers, space);\n // Update the geometry of the child nodes and handles.\n for (var i = 0, n = this.children.length; i < n; ++i) {\n var child = this.children[i];\n var size = this.sizers[i].size;\n var handleStyle = this.handles[i].style;\n if (horizontal) {\n child.update(left, top, size, height, spacing, items);\n left += size;\n handleStyle.top = top + \"px\";\n handleStyle.left = left + \"px\";\n handleStyle.width = spacing + \"px\";\n handleStyle.height = height + \"px\";\n left += spacing;\n }\n else {\n child.update(left, top, width, size, spacing, items);\n top += size;\n handleStyle.top = top + \"px\";\n handleStyle.left = left + \"px\";\n handleStyle.width = width + \"px\";\n handleStyle.height = spacing + \"px\";\n top += spacing;\n }\n }\n };\n return SplitLayoutNode;\n }());\n Private.SplitLayoutNode = SplitLayoutNode;\n /**\n * Normalize a tab area config and collect the visited widgets.\n */\n function normalizeTabAreaConfig(config, widgetSet) {\n // Bail early if there is no content.\n if (config.widgets.length === 0) {\n return null;\n }\n // Setup the filtered widgets array.\n var widgets = [];\n // Filter the config for unique widgets.\n algorithm_1.each(config.widgets, function (widget) {\n if (!widgetSet.has(widget)) {\n widgetSet.add(widget);\n widgets.push(widget);\n }\n });\n // Bail if there are no effective widgets.\n if (widgets.length === 0) {\n return null;\n }\n // Normalize the current index.\n var index = config.currentIndex;\n if (index !== -1 && (index < 0 || index >= widgets.length)) {\n index = 0;\n }\n // Return a normalized config object.\n return { type: 'tab-area', widgets: widgets, currentIndex: index };\n }\n /**\n * Normalize a split area config and collect the visited widgets.\n */\n function normalizeSplitAreaConfig(config, widgetSet) {\n // Set up the result variables.\n var orientation = config.orientation;\n var children = [];\n var sizes = [];\n // Normalize the config children.\n for (var i = 0, n = config.children.length; i < n; ++i) {\n // Normalize the child config.\n var child = normalizeAreaConfig(config.children[i], widgetSet);\n // Ignore an empty child.\n if (!child) {\n continue;\n }\n // Add the child or hoist its content as appropriate.\n if (child.type === 'tab-area' || child.orientation !== orientation) {\n children.push(child);\n sizes.push(Math.abs(config.sizes[i] || 0));\n }\n else {\n children.push.apply(children, child.children);\n sizes.push.apply(sizes, child.sizes);\n }\n }\n // Bail if there are no effective children.\n if (children.length === 0) {\n return null;\n }\n // If there is only one effective child, return that child.\n if (children.length === 1) {\n return children[0];\n }\n // Return a normalized config object.\n return { type: 'split-area', orientation: orientation, children: children, sizes: sizes };\n }\n /**\n * Convert a normalized tab area config into a layout tree.\n */\n function realizeTabAreaConfig(config, renderer) {\n // Create the tab bar for the layout node.\n var tabBar = renderer.createTabBar();\n // Hide each widget and add it to the tab bar.\n algorithm_1.each(config.widgets, function (widget) {\n widget.hide();\n tabBar.addTab(widget.title);\n });\n // Set the current index of the tab bar.\n tabBar.currentIndex = config.currentIndex;\n // Return the new tab layout node.\n return new TabLayoutNode(tabBar);\n }\n /**\n * Convert a normalized split area config into a layout tree.\n */\n function realizeSplitAreaConfig(config, renderer) {\n // Create the split layout node.\n var node = new SplitLayoutNode(config.orientation);\n // Add each child to the layout node.\n algorithm_1.each(config.children, function (child, i) {\n // Create the child data for the layout node.\n var childNode = realizeAreaConfig(child, renderer);\n var sizer = createSizer(config.sizes[i]);\n var handle = renderer.createHandle();\n // Add the child data to the layout node.\n node.children.push(childNode);\n node.handles.push(handle);\n node.sizers.push(sizer);\n // Update the parent for the child node.\n childNode.parent = node;\n });\n // Synchronize the handle state for the layout node.\n node.syncHandles();\n // Normalize the sizes for the layout node.\n node.normalizeSizes();\n // Return the new layout node.\n return node;\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/docklayout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/dockpanel.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/dockpanel.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar coreutils_1 = __webpack_require__(/*! @phosphor/coreutils */ \"./node_modules/@phosphor/coreutils/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar dragdrop_1 = __webpack_require__(/*! @phosphor/dragdrop */ \"./node_modules/@phosphor/dragdrop/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar properties_1 = __webpack_require__(/*! @phosphor/properties */ \"./node_modules/@phosphor/properties/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar docklayout_1 = __webpack_require__(/*! ./docklayout */ \"./node_modules/@phosphor/widgets/lib/docklayout.js\");\nvar tabbar_1 = __webpack_require__(/*! ./tabbar */ \"./node_modules/@phosphor/widgets/lib/tabbar.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A widget which provides a flexible docking area for widgets.\n */\nvar DockPanel = /** @class */ (function (_super) {\n __extends(DockPanel, _super);\n /**\n * Construct a new dock panel.\n *\n * @param options - The options for initializing the panel.\n */\n function DockPanel(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this._drag = null;\n _this._pressData = null;\n _this._layoutModified = new signaling_1.Signal(_this);\n _this.addClass('p-DockPanel');\n _this._mode = options.mode || 'multiple-document';\n _this._renderer = options.renderer || DockPanel.defaultRenderer;\n _this._edges = options.edges || Private.DEFAULT_EDGES;\n // Toggle the CSS mode attribute.\n _this.dataset['mode'] = _this._mode;\n // Create the delegate renderer for the layout.\n var renderer = {\n createTabBar: function () { return _this._createTabBar(); },\n createHandle: function () { return _this._createHandle(); }\n };\n // Set up the dock layout for the panel.\n _this.layout = new docklayout_1.DockLayout({ renderer: renderer, spacing: options.spacing });\n // Set up the overlay drop indicator.\n _this.overlay = options.overlay || new DockPanel.Overlay();\n _this.node.appendChild(_this.overlay.node);\n return _this;\n }\n /**\n * Dispose of the resources held by the panel.\n */\n DockPanel.prototype.dispose = function () {\n // Ensure the mouse is released.\n this._releaseMouse();\n // Hide the overlay.\n this.overlay.hide(0);\n // Cancel a drag if one is in progress.\n if (this._drag) {\n this._drag.dispose();\n }\n // Dispose of the base class.\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(DockPanel.prototype, \"layoutModified\", {\n /**\n * A signal emitted when the layout configuration is modified.\n *\n * #### Notes\n * This signal is emitted whenever the current layout configuration\n * may have changed.\n *\n * This signal is emitted asynchronously in a collapsed fashion, so\n * that multiple synchronous modifications results in only a single\n * emit of the signal.\n */\n get: function () {\n return this._layoutModified;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockPanel.prototype, \"renderer\", {\n /**\n * The renderer used by the dock panel.\n */\n get: function () {\n return this.layout.renderer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockPanel.prototype, \"spacing\", {\n /**\n * Get the spacing between the widgets.\n */\n get: function () {\n return this.layout.spacing;\n },\n /**\n * Set the spacing between the widgets.\n */\n set: function (value) {\n this.layout.spacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockPanel.prototype, \"mode\", {\n /**\n * Get the mode for the dock panel.\n */\n get: function () {\n return this._mode;\n },\n /**\n * Set the mode for the dock panel.\n *\n * #### Notes\n * Changing the mode is a destructive operation with respect to the\n * panel's layout configuration. If layout state must be preserved,\n * save the current layout config before changing the mode.\n */\n set: function (value) {\n // Bail early if the mode does not change.\n if (this._mode === value) {\n return;\n }\n // Update the internal mode.\n this._mode = value;\n // Toggle the CSS mode attribute.\n this.dataset['mode'] = value;\n // Get the layout for the panel.\n var layout = this.layout;\n // Configure the layout for the specified mode.\n switch (value) {\n case 'multiple-document':\n algorithm_1.each(layout.tabBars(), function (tabBar) { tabBar.show(); });\n break;\n case 'single-document':\n layout.restoreLayout(Private.createSingleDocumentConfig(this));\n break;\n default:\n throw 'unreachable';\n }\n // Schedule an emit of the layout modified signal.\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockPanel.prototype, \"isEmpty\", {\n /**\n * Whether the dock panel is empty.\n */\n get: function () {\n return this.layout.isEmpty;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Create an iterator over the user widgets in the panel.\n *\n * @returns A new iterator over the user widgets in the panel.\n *\n * #### Notes\n * This iterator does not include the generated tab bars.\n */\n DockPanel.prototype.widgets = function () {\n return this.layout.widgets();\n };\n /**\n * Create an iterator over the selected widgets in the panel.\n *\n * @returns A new iterator over the selected user widgets.\n *\n * #### Notes\n * This iterator yields the widgets corresponding to the current tab\n * of each tab bar in the panel.\n */\n DockPanel.prototype.selectedWidgets = function () {\n return this.layout.selectedWidgets();\n };\n /**\n * Create an iterator over the tab bars in the panel.\n *\n * @returns A new iterator over the tab bars in the panel.\n *\n * #### Notes\n * This iterator does not include the user widgets.\n */\n DockPanel.prototype.tabBars = function () {\n return this.layout.tabBars();\n };\n /**\n * Create an iterator over the handles in the panel.\n *\n * @returns A new iterator over the handles in the panel.\n */\n DockPanel.prototype.handles = function () {\n return this.layout.handles();\n };\n /**\n * Select a specific widget in the dock panel.\n *\n * @param widget - The widget of interest.\n *\n * #### Notes\n * This will make the widget the current widget in its tab area.\n */\n DockPanel.prototype.selectWidget = function (widget) {\n // Find the tab bar which contains the widget.\n var tabBar = algorithm_1.find(this.tabBars(), function (bar) {\n return bar.titles.indexOf(widget.title) !== -1;\n });\n // Throw an error if no tab bar is found.\n if (!tabBar) {\n throw new Error('Widget is not contained in the dock panel.');\n }\n // Ensure the widget is the current widget.\n tabBar.currentTitle = widget.title;\n };\n /**\n * Activate a specified widget in the dock panel.\n *\n * @param widget - The widget of interest.\n *\n * #### Notes\n * This will select and activate the given widget.\n */\n DockPanel.prototype.activateWidget = function (widget) {\n this.selectWidget(widget);\n widget.activate();\n };\n /**\n * Save the current layout configuration of the dock panel.\n *\n * @returns A new config object for the current layout state.\n *\n * #### Notes\n * The return value can be provided to the `restoreLayout` method\n * in order to restore the layout to its current configuration.\n */\n DockPanel.prototype.saveLayout = function () {\n return this.layout.saveLayout();\n };\n /**\n * Restore the layout to a previously saved configuration.\n *\n * @param config - The layout configuration to restore.\n *\n * #### Notes\n * Widgets which currently belong to the layout but which are not\n * contained in the config will be unparented.\n *\n * The dock panel automatically reverts to `'multiple-document'`\n * mode when a layout config is restored.\n */\n DockPanel.prototype.restoreLayout = function (config) {\n // Reset the mode.\n this._mode = 'multiple-document';\n // Restore the layout.\n this.layout.restoreLayout(config);\n // Flush the message loop on IE and Edge to prevent flicker.\n if (domutils_1.Platform.IS_EDGE || domutils_1.Platform.IS_IE) {\n messaging_1.MessageLoop.flush();\n }\n // Schedule an emit of the layout modified signal.\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n };\n /**\n * Add a widget to the dock panel.\n *\n * @param widget - The widget to add to the dock panel.\n *\n * @param options - The additional options for adding the widget.\n *\n * #### Notes\n * If the panel is in single document mode, the options are ignored\n * and the widget is always added as tab in the hidden tab bar.\n */\n DockPanel.prototype.addWidget = function (widget, options) {\n if (options === void 0) { options = {}; }\n // Add the widget to the layout.\n if (this._mode === 'single-document') {\n this.layout.addWidget(widget);\n }\n else {\n this.layout.addWidget(widget, options);\n }\n // Schedule an emit of the layout modified signal.\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n };\n /**\n * Process a message sent to the widget.\n *\n * @param msg - The message sent to the widget.\n */\n DockPanel.prototype.processMessage = function (msg) {\n if (msg.type === 'layout-modified') {\n this._layoutModified.emit(undefined);\n }\n else {\n _super.prototype.processMessage.call(this, msg);\n }\n };\n /**\n * Handle the DOM events for the dock panel.\n *\n * @param event - The DOM event sent to the panel.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the panel's DOM node. It should\n * not be called directly by user code.\n */\n DockPanel.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'p-dragenter':\n this._evtDragEnter(event);\n break;\n case 'p-dragleave':\n this._evtDragLeave(event);\n break;\n case 'p-dragover':\n this._evtDragOver(event);\n break;\n case 'p-drop':\n this._evtDrop(event);\n break;\n case 'mousedown':\n this._evtMouseDown(event);\n break;\n case 'mousemove':\n this._evtMouseMove(event);\n break;\n case 'mouseup':\n this._evtMouseUp(event);\n break;\n case 'keydown':\n this._evtKeyDown(event);\n break;\n case 'contextmenu':\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n DockPanel.prototype.onBeforeAttach = function (msg) {\n this.node.addEventListener('p-dragenter', this);\n this.node.addEventListener('p-dragleave', this);\n this.node.addEventListener('p-dragover', this);\n this.node.addEventListener('p-drop', this);\n this.node.addEventListener('mousedown', this);\n };\n /**\n * A message handler invoked on an `'after-detach'` message.\n */\n DockPanel.prototype.onAfterDetach = function (msg) {\n this.node.removeEventListener('p-dragenter', this);\n this.node.removeEventListener('p-dragleave', this);\n this.node.removeEventListener('p-dragover', this);\n this.node.removeEventListener('p-drop', this);\n this.node.removeEventListener('mousedown', this);\n this._releaseMouse();\n };\n /**\n * A message handler invoked on a `'child-added'` message.\n */\n DockPanel.prototype.onChildAdded = function (msg) {\n // Ignore the generated tab bars.\n if (Private.isGeneratedTabBarProperty.get(msg.child)) {\n return;\n }\n // Add the widget class to the child.\n msg.child.addClass('p-DockPanel-widget');\n };\n /**\n * A message handler invoked on a `'child-removed'` message.\n */\n DockPanel.prototype.onChildRemoved = function (msg) {\n // Ignore the generated tab bars.\n if (Private.isGeneratedTabBarProperty.get(msg.child)) {\n return;\n }\n // Remove the widget class from the child.\n msg.child.removeClass('p-DockPanel-widget');\n // Schedule an emit of the layout modified signal.\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n };\n /**\n * Handle the `'p-dragenter'` event for the dock panel.\n */\n DockPanel.prototype._evtDragEnter = function (event) {\n // If the factory mime type is present, mark the event as\n // handled in order to get the rest of the drag events.\n if (event.mimeData.hasData('application/vnd.phosphor.widget-factory')) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n /**\n * Handle the `'p-dragleave'` event for the dock panel.\n */\n DockPanel.prototype._evtDragLeave = function (event) {\n // Mark the event as handled.\n event.preventDefault();\n event.stopPropagation();\n // The new target might be a descendant, so we might still handle the drop.\n // Hide asynchronously so that if a p-dragover event bubbles up to us, the\n // hide is cancelled by the p-dragover handler's show overlay logic.\n this.overlay.hide(1);\n };\n /**\n * Handle the `'p-dragover'` event for the dock panel.\n */\n DockPanel.prototype._evtDragOver = function (event) {\n // Mark the event as handled.\n event.preventDefault();\n event.stopPropagation();\n // Show the drop indicator overlay and update the drop\n // action based on the drop target zone under the mouse.\n if (this._showOverlay(event.clientX, event.clientY) === 'invalid') {\n event.dropAction = 'none';\n }\n else {\n event.dropAction = event.proposedAction;\n }\n };\n /**\n * Handle the `'p-drop'` event for the dock panel.\n */\n DockPanel.prototype._evtDrop = function (event) {\n // Mark the event as handled.\n event.preventDefault();\n event.stopPropagation();\n // Hide the drop indicator overlay.\n this.overlay.hide(0);\n // Bail if the proposed action is to do nothing.\n if (event.proposedAction === 'none') {\n event.dropAction = 'none';\n return;\n }\n // Find the drop target under the mouse.\n var clientX = event.clientX, clientY = event.clientY;\n var _a = Private.findDropTarget(this, clientX, clientY, this._edges), zone = _a.zone, target = _a.target;\n // Bail if the drop zone is invalid.\n if (zone === 'invalid') {\n event.dropAction = 'none';\n return;\n }\n // Bail if the factory mime type has invalid data.\n var mimeData = event.mimeData;\n var factory = mimeData.getData('application/vnd.phosphor.widget-factory');\n if (typeof factory !== 'function') {\n event.dropAction = 'none';\n return;\n }\n // Bail if the factory does not produce a widget.\n var widget = factory();\n if (!(widget instanceof widget_1.Widget)) {\n event.dropAction = 'none';\n return;\n }\n // Bail if the widget is an ancestor of the dock panel.\n if (widget.contains(this)) {\n event.dropAction = 'none';\n return;\n }\n // Find the reference widget for the drop target.\n var ref = target ? Private.getDropRef(target.tabBar) : null;\n // Add the widget according to the indicated drop zone.\n switch (zone) {\n case 'root-all':\n this.addWidget(widget);\n break;\n case 'root-top':\n this.addWidget(widget, { mode: 'split-top' });\n break;\n case 'root-left':\n this.addWidget(widget, { mode: 'split-left' });\n break;\n case 'root-right':\n this.addWidget(widget, { mode: 'split-right' });\n break;\n case 'root-bottom':\n this.addWidget(widget, { mode: 'split-bottom' });\n break;\n case 'widget-all':\n this.addWidget(widget, { mode: 'tab-after', ref: ref });\n break;\n case 'widget-top':\n this.addWidget(widget, { mode: 'split-top', ref: ref });\n break;\n case 'widget-left':\n this.addWidget(widget, { mode: 'split-left', ref: ref });\n break;\n case 'widget-right':\n this.addWidget(widget, { mode: 'split-right', ref: ref });\n break;\n case 'widget-bottom':\n this.addWidget(widget, { mode: 'split-bottom', ref: ref });\n break;\n case 'widget-tab':\n this.addWidget(widget, { mode: 'tab-after', ref: ref });\n break;\n default:\n throw 'unreachable';\n }\n // Accept the proposed drop action.\n event.dropAction = event.proposedAction;\n // Activate the dropped widget.\n this.activateWidget(widget);\n };\n /**\n * Handle the `'keydown'` event for the dock panel.\n */\n DockPanel.prototype._evtKeyDown = function (event) {\n // Stop input events during drag.\n event.preventDefault();\n event.stopPropagation();\n // Release the mouse if `Escape` is pressed.\n if (event.keyCode === 27) {\n // Finalize the mouse release.\n this._releaseMouse();\n // Schedule an emit of the layout modified signal.\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n }\n };\n /**\n * Handle the `'mousedown'` event for the dock panel.\n */\n DockPanel.prototype._evtMouseDown = function (event) {\n // Do nothing if the left mouse button is not pressed.\n if (event.button !== 0) {\n return;\n }\n // Find the handle which contains the mouse target, if any.\n var layout = this.layout;\n var target = event.target;\n var handle = algorithm_1.find(layout.handles(), function (handle) { return handle.contains(target); });\n if (!handle) {\n return;\n }\n // Stop the event when a handle is pressed.\n event.preventDefault();\n event.stopPropagation();\n // Add the extra document listeners.\n document.addEventListener('keydown', this, true);\n document.addEventListener('mouseup', this, true);\n document.addEventListener('mousemove', this, true);\n document.addEventListener('contextmenu', this, true);\n // Compute the offset deltas for the handle press.\n var rect = handle.getBoundingClientRect();\n var deltaX = event.clientX - rect.left;\n var deltaY = event.clientY - rect.top;\n // Override the cursor and store the press data.\n var style = window.getComputedStyle(handle);\n var override = dragdrop_1.Drag.overrideCursor(style.cursor);\n this._pressData = { handle: handle, deltaX: deltaX, deltaY: deltaY, override: override };\n };\n /**\n * Handle the `'mousemove'` event for the dock panel.\n */\n DockPanel.prototype._evtMouseMove = function (event) {\n // Bail early if no drag is in progress.\n if (!this._pressData) {\n return;\n }\n // Stop the event when dragging a handle.\n event.preventDefault();\n event.stopPropagation();\n // Compute the desired offset position for the handle.\n var rect = this.node.getBoundingClientRect();\n var xPos = event.clientX - rect.left - this._pressData.deltaX;\n var yPos = event.clientY - rect.top - this._pressData.deltaY;\n // Set the handle as close to the desired position as possible.\n var layout = this.layout;\n layout.moveHandle(this._pressData.handle, xPos, yPos);\n };\n /**\n * Handle the `'mouseup'` event for the dock panel.\n */\n DockPanel.prototype._evtMouseUp = function (event) {\n // Do nothing if the left mouse button is not released.\n if (event.button !== 0) {\n return;\n }\n // Stop the event when releasing a handle.\n event.preventDefault();\n event.stopPropagation();\n // Finalize the mouse release.\n this._releaseMouse();\n // Schedule an emit of the layout modified signal.\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n };\n /**\n * Release the mouse grab for the dock panel.\n */\n DockPanel.prototype._releaseMouse = function () {\n // Bail early if no drag is in progress.\n if (!this._pressData) {\n return;\n }\n // Clear the override cursor.\n this._pressData.override.dispose();\n this._pressData = null;\n // Remove the extra document listeners.\n document.removeEventListener('keydown', this, true);\n document.removeEventListener('mouseup', this, true);\n document.removeEventListener('mousemove', this, true);\n document.removeEventListener('contextmenu', this, true);\n };\n /**\n * Show the overlay indicator at the given client position.\n *\n * Returns the drop zone at the specified client position.\n *\n * #### Notes\n * If the position is not over a valid zone, the overlay is hidden.\n */\n DockPanel.prototype._showOverlay = function (clientX, clientY) {\n // Find the dock target for the given client position.\n var _a = Private.findDropTarget(this, clientX, clientY, this._edges), zone = _a.zone, target = _a.target;\n // If the drop zone is invalid, hide the overlay and bail.\n if (zone === 'invalid') {\n this.overlay.hide(100);\n return zone;\n }\n // Setup the variables needed to compute the overlay geometry.\n var top;\n var left;\n var right;\n var bottom;\n var box = domutils_1.ElementExt.boxSizing(this.node); // TODO cache this?\n var rect = this.node.getBoundingClientRect();\n // Compute the overlay geometry based on the dock zone.\n switch (zone) {\n case 'root-all':\n top = box.paddingTop;\n left = box.paddingLeft;\n right = box.paddingRight;\n bottom = box.paddingBottom;\n break;\n case 'root-top':\n top = box.paddingTop;\n left = box.paddingLeft;\n right = box.paddingRight;\n bottom = rect.height * Private.GOLDEN_RATIO;\n break;\n case 'root-left':\n top = box.paddingTop;\n left = box.paddingLeft;\n right = rect.width * Private.GOLDEN_RATIO;\n bottom = box.paddingBottom;\n break;\n case 'root-right':\n top = box.paddingTop;\n left = rect.width * Private.GOLDEN_RATIO;\n right = box.paddingRight;\n bottom = box.paddingBottom;\n break;\n case 'root-bottom':\n top = rect.height * Private.GOLDEN_RATIO;\n left = box.paddingLeft;\n right = box.paddingRight;\n bottom = box.paddingBottom;\n break;\n case 'widget-all':\n top = target.top;\n left = target.left;\n right = target.right;\n bottom = target.bottom;\n break;\n case 'widget-top':\n top = target.top;\n left = target.left;\n right = target.right;\n bottom = target.bottom + target.height / 2;\n break;\n case 'widget-left':\n top = target.top;\n left = target.left;\n right = target.right + target.width / 2;\n bottom = target.bottom;\n break;\n case 'widget-right':\n top = target.top;\n left = target.left + target.width / 2;\n right = target.right;\n bottom = target.bottom;\n break;\n case 'widget-bottom':\n top = target.top + target.height / 2;\n left = target.left;\n right = target.right;\n bottom = target.bottom;\n break;\n case 'widget-tab':\n var tabHeight = target.tabBar.node.getBoundingClientRect().height;\n top = target.top;\n left = target.left;\n right = target.right;\n bottom = target.bottom + target.height - tabHeight;\n break;\n default:\n throw 'unreachable';\n }\n // Show the overlay with the computed geometry.\n this.overlay.show({ top: top, left: left, right: right, bottom: bottom });\n // Finally, return the computed drop zone.\n return zone;\n };\n /**\n * Create a new tab bar for use by the panel.\n */\n DockPanel.prototype._createTabBar = function () {\n // Create the tab bar.\n var tabBar = this._renderer.createTabBar();\n // Set the generated tab bar property for the tab bar.\n Private.isGeneratedTabBarProperty.set(tabBar, true);\n // Hide the tab bar when in single document mode.\n if (this._mode === 'single-document') {\n tabBar.hide();\n }\n // Enforce necessary tab bar behavior.\n // TODO do we really want to enforce *all* of these?\n tabBar.tabsMovable = true;\n tabBar.allowDeselect = false;\n tabBar.removeBehavior = 'select-previous-tab';\n tabBar.insertBehavior = 'select-tab-if-needed';\n // Connect the signal handlers for the tab bar.\n tabBar.tabMoved.connect(this._onTabMoved, this);\n tabBar.currentChanged.connect(this._onCurrentChanged, this);\n tabBar.tabCloseRequested.connect(this._onTabCloseRequested, this);\n tabBar.tabDetachRequested.connect(this._onTabDetachRequested, this);\n tabBar.tabActivateRequested.connect(this._onTabActivateRequested, this);\n // Return the initialized tab bar.\n return tabBar;\n };\n /**\n * Create a new handle for use by the panel.\n */\n DockPanel.prototype._createHandle = function () {\n return this._renderer.createHandle();\n };\n /**\n * Handle the `tabMoved` signal from a tab bar.\n */\n DockPanel.prototype._onTabMoved = function () {\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n };\n /**\n * Handle the `currentChanged` signal from a tab bar.\n */\n DockPanel.prototype._onCurrentChanged = function (sender, args) {\n // Extract the previous and current title from the args.\n var previousTitle = args.previousTitle, currentTitle = args.currentTitle;\n // Hide the previous widget.\n if (previousTitle) {\n previousTitle.owner.hide();\n }\n // Show the current widget.\n if (currentTitle) {\n currentTitle.owner.show();\n }\n // Flush the message loop on IE and Edge to prevent flicker.\n if (domutils_1.Platform.IS_EDGE || domutils_1.Platform.IS_IE) {\n messaging_1.MessageLoop.flush();\n }\n // Schedule an emit of the layout modified signal.\n messaging_1.MessageLoop.postMessage(this, Private.LayoutModified);\n };\n /**\n * Handle the `tabActivateRequested` signal from a tab bar.\n */\n DockPanel.prototype._onTabActivateRequested = function (sender, args) {\n args.title.owner.activate();\n };\n /**\n * Handle the `tabCloseRequested` signal from a tab bar.\n */\n DockPanel.prototype._onTabCloseRequested = function (sender, args) {\n args.title.owner.close();\n };\n /**\n * Handle the `tabDetachRequested` signal from a tab bar.\n */\n DockPanel.prototype._onTabDetachRequested = function (sender, args) {\n var _this = this;\n // Do nothing if a drag is already in progress.\n if (this._drag) {\n return;\n }\n // Release the tab bar's hold on the mouse.\n sender.releaseMouse();\n // Extract the data from the args.\n var title = args.title, tab = args.tab, clientX = args.clientX, clientY = args.clientY;\n // Setup the mime data for the drag operation.\n var mimeData = new coreutils_1.MimeData();\n var factory = function () { return title.owner; };\n mimeData.setData('application/vnd.phosphor.widget-factory', factory);\n // Create the drag image for the drag operation.\n var dragImage = tab.cloneNode(true);\n // Create the drag object to manage the drag-drop operation.\n this._drag = new dragdrop_1.Drag({\n mimeData: mimeData, dragImage: dragImage,\n proposedAction: 'move',\n supportedActions: 'move',\n });\n // Hide the tab node in the original tab.\n tab.classList.add('p-mod-hidden');\n // Create the cleanup callback.\n var cleanup = (function () {\n _this._drag = null;\n tab.classList.remove('p-mod-hidden');\n });\n // Start the drag operation and cleanup when done.\n this._drag.start(clientX, clientY).then(cleanup);\n };\n return DockPanel;\n}(widget_1.Widget));\nexports.DockPanel = DockPanel;\n/**\n * The namespace for the `DockPanel` class statics.\n */\n(function (DockPanel) {\n ;\n /**\n * A concrete implementation of `IOverlay`.\n *\n * This is the default overlay implementation for a dock panel.\n */\n var Overlay = /** @class */ (function () {\n /**\n * Construct a new overlay.\n */\n function Overlay() {\n this._timer = -1;\n this._hidden = true;\n this.node = document.createElement('div');\n this.node.classList.add('p-DockPanel-overlay');\n this.node.classList.add('p-mod-hidden');\n this.node.style.position = 'absolute';\n }\n /**\n * Show the overlay using the given overlay geometry.\n *\n * @param geo - The desired geometry for the overlay.\n */\n Overlay.prototype.show = function (geo) {\n // Update the position of the overlay.\n var style = this.node.style;\n style.top = geo.top + \"px\";\n style.left = geo.left + \"px\";\n style.right = geo.right + \"px\";\n style.bottom = geo.bottom + \"px\";\n // Clear any pending hide timer.\n clearTimeout(this._timer);\n this._timer = -1;\n // If the overlay is already visible, we're done.\n if (!this._hidden) {\n return;\n }\n // Clear the hidden flag.\n this._hidden = false;\n // Finally, show the overlay.\n this.node.classList.remove('p-mod-hidden');\n };\n /**\n * Hide the overlay node.\n *\n * @param delay - The delay (in ms) before hiding the overlay.\n * A delay value <= 0 will hide the overlay immediately.\n */\n Overlay.prototype.hide = function (delay) {\n var _this = this;\n // Do nothing if the overlay is already hidden.\n if (this._hidden) {\n return;\n }\n // Hide immediately if the delay is <= 0.\n if (delay <= 0) {\n clearTimeout(this._timer);\n this._timer = -1;\n this._hidden = true;\n this.node.classList.add('p-mod-hidden');\n return;\n }\n // Do nothing if a hide is already pending.\n if (this._timer !== -1) {\n return;\n }\n // Otherwise setup the hide timer.\n this._timer = window.setTimeout(function () {\n _this._timer = -1;\n _this._hidden = true;\n _this.node.classList.add('p-mod-hidden');\n }, delay);\n };\n return Overlay;\n }());\n DockPanel.Overlay = Overlay;\n /**\n * The default implementation of `IRenderer`.\n */\n var Renderer = /** @class */ (function () {\n function Renderer() {\n }\n /**\n * Create a new tab bar for use with a dock panel.\n *\n * @returns A new tab bar for a dock panel.\n */\n Renderer.prototype.createTabBar = function () {\n var bar = new tabbar_1.TabBar();\n bar.addClass('p-DockPanel-tabBar');\n return bar;\n };\n /**\n * Create a new handle node for use with a dock panel.\n *\n * @returns A new handle node for a dock panel.\n */\n Renderer.prototype.createHandle = function () {\n var handle = document.createElement('div');\n handle.className = 'p-DockPanel-handle';\n return handle;\n };\n return Renderer;\n }());\n DockPanel.Renderer = Renderer;\n /**\n * The default `Renderer` instance.\n */\n DockPanel.defaultRenderer = new Renderer();\n})(DockPanel = exports.DockPanel || (exports.DockPanel = {}));\nexports.DockPanel = DockPanel;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * A fraction used for sizing root panels; ~= `1 / golden_ratio`.\n */\n Private.GOLDEN_RATIO = 0.618;\n /**\n * The default sizes for the edge drop zones, in pixels.\n */\n Private.DEFAULT_EDGES = {\n /**\n * The size of the top edge dock zone for the root panel, in pixels.\n * This is different from the others to distinguish between the top\n * tab bar and the top root zone.\n */\n top: 12,\n /**\n * The size of the edge dock zone for the root panel, in pixels.\n */\n right: 40,\n /**\n * The size of the edge dock zone for the root panel, in pixels.\n */\n bottom: 40,\n /**\n * The size of the edge dock zone for the root panel, in pixels.\n */\n left: 40\n };\n /**\n * A singleton `'layout-modified'` conflatable message.\n */\n Private.LayoutModified = new messaging_1.ConflatableMessage('layout-modified');\n /**\n * An attached property used to track generated tab bars.\n */\n Private.isGeneratedTabBarProperty = new properties_1.AttachedProperty({\n name: 'isGeneratedTabBar',\n create: function () { return false; }\n });\n /**\n * Create a single document config for the widgets in a dock panel.\n */\n function createSingleDocumentConfig(panel) {\n // Return an empty config if the panel is empty.\n if (panel.isEmpty) {\n return { main: null };\n }\n // Get a flat array of the widgets in the panel.\n var widgets = algorithm_1.toArray(panel.widgets());\n // Get the first selected widget in the panel.\n var selected = panel.selectedWidgets().next();\n // Compute the current index for the new config.\n var currentIndex = selected ? widgets.indexOf(selected) : -1;\n // Return the single document config.\n return { main: { type: 'tab-area', widgets: widgets, currentIndex: currentIndex } };\n }\n Private.createSingleDocumentConfig = createSingleDocumentConfig;\n /**\n * Find the drop target at the given client position.\n */\n function findDropTarget(panel, clientX, clientY, edges) {\n // Bail if the mouse is not over the dock panel.\n if (!domutils_1.ElementExt.hitTest(panel.node, clientX, clientY)) {\n return { zone: 'invalid', target: null };\n }\n // Look up the layout for the panel.\n var layout = panel.layout;\n // If the layout is empty, indicate the entire root drop zone.\n if (layout.isEmpty) {\n return { zone: 'root-all', target: null };\n }\n // Test the edge zones when in multiple document mode.\n if (panel.mode === 'multiple-document') {\n // Get the client rect for the dock panel.\n var panelRect = panel.node.getBoundingClientRect();\n // Compute the distance to each edge of the panel.\n var pl = clientX - panelRect.left + 1;\n var pt = clientY - panelRect.top + 1;\n var pr = panelRect.right - clientX;\n var pb = panelRect.bottom - clientY;\n // Find the minimum distance to an edge.\n var pd = Math.min(pt, pr, pb, pl);\n // Return a root zone if the mouse is within an edge.\n switch (pd) {\n case pt:\n if (pt < edges.top) {\n return { zone: 'root-top', target: null };\n }\n break;\n case pr:\n if (pr < edges.right) {\n return { zone: 'root-right', target: null };\n }\n break;\n case pb:\n if (pb < edges.bottom) {\n return { zone: 'root-bottom', target: null };\n }\n break;\n case pl:\n if (pl < edges.left) {\n return { zone: 'root-left', target: null };\n }\n break;\n default:\n throw 'unreachable';\n }\n }\n // Hit test the dock layout at the given client position.\n var target = layout.hitTestTabAreas(clientX, clientY);\n // Bail if no target area was found.\n if (!target) {\n return { zone: 'invalid', target: null };\n }\n // Return the whole tab area when in single document mode.\n if (panel.mode === 'single-document') {\n return { zone: 'widget-all', target: target };\n }\n // Compute the distance to each edge of the tab area.\n var al = target.x - target.left + 1;\n var at = target.y - target.top + 1;\n var ar = target.left + target.width - target.x;\n var ab = target.top + target.height - target.y;\n var tabHeight = target.tabBar.node.getBoundingClientRect().height;\n if (at < tabHeight) {\n return { zone: 'widget-tab', target: target };\n }\n // Get the X and Y edge sizes for the area.\n var rx = Math.round(target.width / 3);\n var ry = Math.round(target.height / 3);\n // If the mouse is not within an edge, indicate the entire area.\n if (al > rx && ar > rx && at > ry && ab > ry) {\n return { zone: 'widget-all', target: target };\n }\n // Scale the distances by the slenderness ratio.\n al /= rx;\n at /= ry;\n ar /= rx;\n ab /= ry;\n // Find the minimum distance to the area edge.\n var ad = Math.min(al, at, ar, ab);\n // Find the widget zone for the area edge.\n var zone;\n switch (ad) {\n case al:\n zone = 'widget-left';\n break;\n case at:\n zone = 'widget-top';\n break;\n case ar:\n zone = 'widget-right';\n break;\n case ab:\n zone = 'widget-bottom';\n break;\n default:\n throw 'unreachable';\n }\n // Return the final drop target.\n return { zone: zone, target: target };\n }\n Private.findDropTarget = findDropTarget;\n /**\n * Get the drop reference widget for a tab bar.\n */\n function getDropRef(tabBar) {\n if (tabBar.titles.length === 0) {\n return null;\n }\n if (tabBar.currentTitle) {\n return tabBar.currentTitle.owner;\n }\n return tabBar.titles[tabBar.titles.length - 1].owner;\n }\n Private.getDropRef = getDropRef;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/dockpanel.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/focustracker.js": +/*!************************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/focustracker.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\n/**\n * A class which tracks focus among a set of widgets.\n *\n * This class is useful when code needs to keep track of the most\n * recently focused widget(s) among a set of related widgets.\n */\nvar FocusTracker = /** @class */ (function () {\n /**\n * Construct a new focus tracker.\n */\n function FocusTracker() {\n this._counter = 0;\n this._widgets = [];\n this._activeWidget = null;\n this._currentWidget = null;\n this._numbers = new Map();\n this._nodes = new Map();\n this._activeChanged = new signaling_1.Signal(this);\n this._currentChanged = new signaling_1.Signal(this);\n }\n /**\n * Dispose of the resources held by the tracker.\n */\n FocusTracker.prototype.dispose = function () {\n var _this = this;\n // Do nothing if the tracker is already disposed.\n if (this._counter < 0) {\n return;\n }\n // Mark the tracker as disposed.\n this._counter = -1;\n // Clear the connections for the tracker.\n signaling_1.Signal.clearData(this);\n // Remove all event listeners.\n algorithm_1.each(this._widgets, function (w) {\n w.node.removeEventListener('focus', _this, true);\n w.node.removeEventListener('blur', _this, true);\n });\n // Clear the internal data structures.\n this._activeWidget = null;\n this._currentWidget = null;\n this._nodes.clear();\n this._numbers.clear();\n this._widgets.length = 0;\n };\n Object.defineProperty(FocusTracker.prototype, \"currentChanged\", {\n /**\n * A signal emitted when the current widget has changed.\n */\n get: function () {\n return this._currentChanged;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FocusTracker.prototype, \"activeChanged\", {\n /**\n * A signal emitted when the active widget has changed.\n */\n get: function () {\n return this._activeChanged;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FocusTracker.prototype, \"isDisposed\", {\n /**\n * A flag indicating whether the tracker is disposed.\n */\n get: function () {\n return this._counter < 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FocusTracker.prototype, \"currentWidget\", {\n /**\n * The current widget in the tracker.\n *\n * #### Notes\n * The current widget is the widget among the tracked widgets which\n * has the *descendant node* which has most recently been focused.\n *\n * The current widget will not be updated if the node loses focus. It\n * will only be updated when a different tracked widget gains focus.\n *\n * If the current widget is removed from the tracker, the previous\n * current widget will be restored.\n *\n * This behavior is intended to follow a user's conceptual model of\n * a semantically \"current\" widget, where the \"last thing of type X\"\n * to be interacted with is the \"current instance of X\", regardless\n * of whether that instance still has focus.\n */\n get: function () {\n return this._currentWidget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FocusTracker.prototype, \"activeWidget\", {\n /**\n * The active widget in the tracker.\n *\n * #### Notes\n * The active widget is the widget among the tracked widgets which\n * has the *descendant node* which is currently focused.\n */\n get: function () {\n return this._activeWidget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FocusTracker.prototype, \"widgets\", {\n /**\n * A read only array of the widgets being tracked.\n */\n get: function () {\n return this._widgets;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get the focus number for a particular widget in the tracker.\n *\n * @param widget - The widget of interest.\n *\n * @returns The focus number for the given widget, or `-1` if the\n * widget has not had focus since being added to the tracker, or\n * is not contained by the tracker.\n *\n * #### Notes\n * The focus number indicates the relative order in which the widgets\n * have gained focus. A widget with a larger number has gained focus\n * more recently than a widget with a smaller number.\n *\n * The `currentWidget` will always have the largest focus number.\n *\n * All widgets start with a focus number of `-1`, which indicates that\n * the widget has not been focused since being added to the tracker.\n */\n FocusTracker.prototype.focusNumber = function (widget) {\n var n = this._numbers.get(widget);\n return n === undefined ? -1 : n;\n };\n /**\n * Test whether the focus tracker contains a given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns `true` if the widget is tracked, `false` otherwise.\n */\n FocusTracker.prototype.has = function (widget) {\n return this._numbers.has(widget);\n };\n /**\n * Add a widget to the focus tracker.\n *\n * @param widget - The widget of interest.\n *\n * #### Notes\n * A widget will be automatically removed from the tracker if it\n * is disposed after being added.\n *\n * If the widget is already tracked, this is a no-op.\n */\n FocusTracker.prototype.add = function (widget) {\n // Do nothing if the widget is already tracked.\n if (this._numbers.has(widget)) {\n return;\n }\n // Test whether the widget has focus.\n var focused = widget.node.contains(document.activeElement);\n // Set up the initial focus number.\n var n = focused ? this._counter++ : -1;\n // Add the widget to the internal data structures.\n this._widgets.push(widget);\n this._numbers.set(widget, n);\n this._nodes.set(widget.node, widget);\n // Set up the event listeners. The capturing phase must be used\n // since the 'focus' and 'blur' events don't bubble and Firefox\n // doesn't support the 'focusin' or 'focusout' events.\n widget.node.addEventListener('focus', this, true);\n widget.node.addEventListener('blur', this, true);\n // Connect the disposed signal handler.\n widget.disposed.connect(this._onWidgetDisposed, this);\n // Set the current and active widgets if needed.\n if (focused) {\n this._setWidgets(widget, widget);\n }\n };\n /**\n * Remove a widget from the focus tracker.\n *\n * #### Notes\n * If the widget is the `currentWidget`, the previous current widget\n * will become the new `currentWidget`.\n *\n * A widget will be automatically removed from the tracker if it\n * is disposed after being added.\n *\n * If the widget is not tracked, this is a no-op.\n */\n FocusTracker.prototype.remove = function (widget) {\n var _this = this;\n // Bail early if the widget is not tracked.\n if (!this._numbers.has(widget)) {\n return;\n }\n // Disconnect the disposed signal handler.\n widget.disposed.disconnect(this._onWidgetDisposed, this);\n // Remove the event listeners.\n widget.node.removeEventListener('focus', this, true);\n widget.node.removeEventListener('blur', this, true);\n // Remove the widget from the internal data structures.\n algorithm_1.ArrayExt.removeFirstOf(this._widgets, widget);\n this._nodes.delete(widget.node);\n this._numbers.delete(widget);\n // Bail early if the widget is not the current widget.\n if (this._currentWidget !== widget) {\n return;\n }\n // Filter the widgets for those which have had focus.\n var valid = algorithm_1.filter(this._widgets, function (w) { return _this._numbers.get(w) !== -1; });\n // Get the valid widget with the max focus number.\n var previous = algorithm_1.max(valid, function (first, second) {\n var a = _this._numbers.get(first);\n var b = _this._numbers.get(second);\n return a - b;\n }) || null;\n // Set the current and active widgets.\n this._setWidgets(previous, null);\n };\n /**\n * Handle the DOM events for the focus tracker.\n *\n * @param event - The DOM event sent to the panel.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the tracked nodes. It should\n * not be called directly by user code.\n */\n FocusTracker.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'focus':\n this._evtFocus(event);\n break;\n case 'blur':\n this._evtBlur(event);\n break;\n }\n };\n /**\n * Set the current and active widgets for the tracker.\n */\n FocusTracker.prototype._setWidgets = function (current, active) {\n // Swap the current widget.\n var oldCurrent = this._currentWidget;\n this._currentWidget = current;\n // Swap the active widget.\n var oldActive = this._activeWidget;\n this._activeWidget = active;\n // Emit the `currentChanged` signal if needed.\n if (oldCurrent !== current) {\n this._currentChanged.emit({ oldValue: oldCurrent, newValue: current });\n }\n // Emit the `activeChanged` signal if needed.\n if (oldActive !== active) {\n this._activeChanged.emit({ oldValue: oldActive, newValue: active });\n }\n };\n /**\n * Handle the `'focus'` event for a tracked widget.\n */\n FocusTracker.prototype._evtFocus = function (event) {\n // Find the widget which gained focus, which is known to exist.\n var widget = this._nodes.get(event.currentTarget);\n // Update the focus number if necessary.\n if (widget !== this._currentWidget) {\n this._numbers.set(widget, this._counter++);\n }\n // Set the current and active widgets.\n this._setWidgets(widget, widget);\n };\n /**\n * Handle the `'blur'` event for a tracked widget.\n */\n FocusTracker.prototype._evtBlur = function (event) {\n // Find the widget which lost focus, which is known to exist.\n var widget = this._nodes.get(event.currentTarget);\n // Get the node which being focused after this blur.\n var focusTarget = event.relatedTarget;\n // If no other node is being focused, clear the active widget.\n if (!focusTarget) {\n this._setWidgets(this._currentWidget, null);\n return;\n }\n // Bail if the focus widget is not changing.\n if (widget.node.contains(focusTarget)) {\n return;\n }\n // If no tracked widget is being focused, clear the active widget.\n if (!algorithm_1.find(this._widgets, function (w) { return w.node.contains(focusTarget); })) {\n this._setWidgets(this._currentWidget, null);\n return;\n }\n };\n /**\n * Handle the `disposed` signal for a tracked widget.\n */\n FocusTracker.prototype._onWidgetDisposed = function (sender) {\n this.remove(sender);\n };\n return FocusTracker;\n}());\nexports.FocusTracker = FocusTracker;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/focustracker.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/gridlayout.js": +/*!**********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/gridlayout.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar properties_1 = __webpack_require__(/*! @phosphor/properties */ \"./node_modules/@phosphor/properties/lib/index.js\");\nvar boxengine_1 = __webpack_require__(/*! ./boxengine */ \"./node_modules/@phosphor/widgets/lib/boxengine.js\");\nvar layout_1 = __webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A layout which arranges its widgets in a grid.\n */\nvar GridLayout = /** @class */ (function (_super) {\n __extends(GridLayout, _super);\n /**\n * Construct a new grid layout.\n *\n * @param options - The options for initializing the layout.\n */\n function GridLayout(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, options) || this;\n _this._dirty = false;\n _this._rowSpacing = 4;\n _this._columnSpacing = 4;\n _this._items = [];\n _this._rowStarts = [];\n _this._columnStarts = [];\n _this._rowSizers = [new boxengine_1.BoxSizer()];\n _this._columnSizers = [new boxengine_1.BoxSizer()];\n _this._box = null;\n if (options.rowCount !== undefined) {\n Private.reallocSizers(_this._rowSizers, options.rowCount);\n }\n if (options.columnCount !== undefined) {\n Private.reallocSizers(_this._columnSizers, options.columnCount);\n }\n if (options.rowSpacing !== undefined) {\n _this._rowSpacing = Private.clampValue(options.rowSpacing);\n }\n if (options.columnSpacing !== undefined) {\n _this._columnSpacing = Private.clampValue(options.columnSpacing);\n }\n return _this;\n }\n /**\n * Dispose of the resources held by the layout.\n */\n GridLayout.prototype.dispose = function () {\n // Dispose of the widgets and layout items.\n algorithm_1.each(this._items, function (item) {\n var widget = item.widget;\n item.dispose();\n widget.dispose();\n });\n // Clear the layout state.\n this._box = null;\n this._items.length = 0;\n this._rowStarts.length = 0;\n this._rowSizers.length = 0;\n this._columnStarts.length = 0;\n this._columnSizers.length = 0;\n // Dispose of the rest of the layout.\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(GridLayout.prototype, \"rowCount\", {\n /**\n * Get the number of rows in the layout.\n */\n get: function () {\n return this._rowSizers.length;\n },\n /**\n * Set the number of rows in the layout.\n *\n * #### Notes\n * The minimum row count is `1`.\n */\n set: function (value) {\n // Do nothing if the row count does not change.\n if (value === this.rowCount) {\n return;\n }\n // Reallocate the row sizers.\n Private.reallocSizers(this._rowSizers, value);\n // Schedule a fit of the parent.\n if (this.parent) {\n this.parent.fit();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridLayout.prototype, \"columnCount\", {\n /**\n * Get the number of columns in the layout.\n */\n get: function () {\n return this._columnSizers.length;\n },\n /**\n * Set the number of columns in the layout.\n *\n * #### Notes\n * The minimum column count is `1`.\n */\n set: function (value) {\n // Do nothing if the column count does not change.\n if (value === this.columnCount) {\n return;\n }\n // Reallocate the column sizers.\n Private.reallocSizers(this._columnSizers, value);\n // Schedule a fit of the parent.\n if (this.parent) {\n this.parent.fit();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridLayout.prototype, \"rowSpacing\", {\n /**\n * Get the row spacing for the layout.\n */\n get: function () {\n return this._rowSpacing;\n },\n /**\n * Set the row spacing for the layout.\n */\n set: function (value) {\n // Clamp the spacing to the allowed range.\n value = Private.clampValue(value);\n // Bail if the spacing does not change\n if (this._rowSpacing === value) {\n return;\n }\n // Update the internal spacing.\n this._rowSpacing = value;\n // Schedule a fit of the parent.\n if (this.parent) {\n this.parent.fit();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridLayout.prototype, \"columnSpacing\", {\n /**\n * Get the column spacing for the layout.\n */\n get: function () {\n return this._columnSpacing;\n },\n /**\n * Set the col spacing for the layout.\n */\n set: function (value) {\n // Clamp the spacing to the allowed range.\n value = Private.clampValue(value);\n // Bail if the spacing does not change\n if (this._columnSpacing === value) {\n return;\n }\n // Update the internal spacing.\n this._columnSpacing = value;\n // Schedule a fit of the parent.\n if (this.parent) {\n this.parent.fit();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get the stretch factor for a specific row.\n *\n * @param index - The row index of interest.\n *\n * @returns The stretch factor for the row.\n *\n * #### Notes\n * This returns `-1` if the index is out of range.\n */\n GridLayout.prototype.rowStretch = function (index) {\n var sizer = this._rowSizers[index];\n return sizer ? sizer.stretch : -1;\n };\n /**\n * Set the stretch factor for a specific row.\n *\n * @param index - The row index of interest.\n *\n * @param value - The stretch factor for the row.\n *\n * #### Notes\n * This is a no-op if the index is out of range.\n */\n GridLayout.prototype.setRowStretch = function (index, value) {\n // Look up the row sizer.\n var sizer = this._rowSizers[index];\n // Bail if the index is out of range.\n if (!sizer) {\n return;\n }\n // Clamp the value to the allowed range.\n value = Private.clampValue(value);\n // Bail if the stretch does not change.\n if (sizer.stretch === value) {\n return;\n }\n // Update the sizer stretch.\n sizer.stretch = value;\n // Schedule an update of the parent.\n if (this.parent) {\n this.parent.update();\n }\n };\n /**\n * Get the stretch factor for a specific column.\n *\n * @param index - The column index of interest.\n *\n * @returns The stretch factor for the column.\n *\n * #### Notes\n * This returns `-1` if the index is out of range.\n */\n GridLayout.prototype.columnStretch = function (index) {\n var sizer = this._columnSizers[index];\n return sizer ? sizer.stretch : -1;\n };\n /**\n * Set the stretch factor for a specific column.\n *\n * @param index - The column index of interest.\n *\n * @param value - The stretch factor for the column.\n *\n * #### Notes\n * This is a no-op if the index is out of range.\n */\n GridLayout.prototype.setColumnStretch = function (index, value) {\n // Look up the column sizer.\n var sizer = this._columnSizers[index];\n // Bail if the index is out of range.\n if (!sizer) {\n return;\n }\n // Clamp the value to the allowed range.\n value = Private.clampValue(value);\n // Bail if the stretch does not change.\n if (sizer.stretch === value) {\n return;\n }\n // Update the sizer stretch.\n sizer.stretch = value;\n // Schedule an update of the parent.\n if (this.parent) {\n this.parent.update();\n }\n };\n /**\n * Create an iterator over the widgets in the layout.\n *\n * @returns A new iterator over the widgets in the layout.\n */\n GridLayout.prototype.iter = function () {\n return algorithm_1.map(this._items, function (item) { return item.widget; });\n };\n /**\n * Add a widget to the grid layout.\n *\n * @param widget - The widget to add to the layout.\n *\n * #### Notes\n * If the widget is already contained in the layout, this is no-op.\n */\n GridLayout.prototype.addWidget = function (widget) {\n // Look up the index for the widget.\n var i = algorithm_1.ArrayExt.findFirstIndex(this._items, function (it) { return it.widget === widget; });\n // Bail if the widget is already in the layout.\n if (i !== -1) {\n return;\n }\n // Add the widget to the layout.\n this._items.push(new layout_1.LayoutItem(widget));\n // Attach the widget to the parent.\n if (this.parent) {\n this.attachWidget(widget);\n }\n };\n /**\n * Remove a widget from the grid layout.\n *\n * @param widget - The widget to remove from the layout.\n *\n * #### Notes\n * A widget is automatically removed from the layout when its `parent`\n * is set to `null`. This method should only be invoked directly when\n * removing a widget from a layout which has yet to be installed on a\n * parent widget.\n *\n * This method does *not* modify the widget's `parent`.\n */\n GridLayout.prototype.removeWidget = function (widget) {\n // Look up the index for the widget.\n var i = algorithm_1.ArrayExt.findFirstIndex(this._items, function (it) { return it.widget === widget; });\n // Bail if the widget is not in the layout.\n if (i !== -1) {\n return;\n }\n // Remove the widget from the layout.\n var item = algorithm_1.ArrayExt.removeAt(this._items, i);\n // Detach the widget from the parent.\n if (this.parent) {\n this.detachWidget(widget);\n }\n // Dispose the layout item.\n item.dispose();\n };\n /**\n * Perform layout initialization which requires the parent widget.\n */\n GridLayout.prototype.init = function () {\n var _this = this;\n _super.prototype.init.call(this);\n algorithm_1.each(this, function (widget) { _this.attachWidget(widget); });\n };\n /**\n * Attach a widget to the parent's DOM node.\n *\n * @param widget - The widget to attach to the parent.\n */\n GridLayout.prototype.attachWidget = function (widget) {\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Add the widget's node to the parent.\n this.parent.node.appendChild(widget.node);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * Detach a widget from the parent's DOM node.\n *\n * @param widget - The widget to detach from the parent.\n */\n GridLayout.prototype.detachWidget = function (widget) {\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget's node from the parent.\n this.parent.node.removeChild(widget.node);\n // Send an `'after-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'before-show'` message.\n */\n GridLayout.prototype.onBeforeShow = function (msg) {\n _super.prototype.onBeforeShow.call(this, msg);\n this.parent.update();\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n GridLayout.prototype.onBeforeAttach = function (msg) {\n _super.prototype.onBeforeAttach.call(this, msg);\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-shown'` message.\n */\n GridLayout.prototype.onChildShown = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-hidden'` message.\n */\n GridLayout.prototype.onChildHidden = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'resize'` message.\n */\n GridLayout.prototype.onResize = function (msg) {\n if (this.parent.isVisible) {\n this._update(msg.width, msg.height);\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n GridLayout.prototype.onUpdateRequest = function (msg) {\n if (this.parent.isVisible) {\n this._update(-1, -1);\n }\n };\n /**\n * A message handler invoked on a `'fit-request'` message.\n */\n GridLayout.prototype.onFitRequest = function (msg) {\n if (this.parent.isAttached) {\n this._fit();\n }\n };\n /**\n * Fit the layout to the total size required by the widgets.\n */\n GridLayout.prototype._fit = function () {\n // Reset the min sizes of the sizers.\n for (var i = 0, n = this.rowCount; i < n; ++i) {\n this._rowSizers[i].minSize = 0;\n }\n for (var i = 0, n = this.columnCount; i < n; ++i) {\n this._columnSizers[i].minSize = 0;\n }\n // Filter for the visible layout items.\n var items = this._items.filter(function (it) { return !it.isHidden; });\n // Fit the layout items.\n for (var i = 0, n = items.length; i < n; ++i) {\n items[i].fit();\n }\n // Get the max row and column index.\n var maxRow = this.rowCount - 1;\n var maxCol = this.columnCount - 1;\n // Sort the items by row span.\n items.sort(Private.rowSpanCmp);\n // Update the min sizes of the row sizers.\n for (var i = 0, n = items.length; i < n; ++i) {\n // Fetch the item.\n var item = items[i];\n // Get the row bounds for the item.\n var config = GridLayout.getCellConfig(item.widget);\n var r1 = Math.min(config.row, maxRow);\n var r2 = Math.min(config.row + config.rowSpan - 1, maxRow);\n // Distribute the minimum height to the sizers as needed.\n Private.distributeMin(this._rowSizers, r1, r2, item.minHeight);\n }\n // Sort the items by column span.\n items.sort(Private.columnSpanCmp);\n // Update the min sizes of the column sizers.\n for (var i = 0, n = items.length; i < n; ++i) {\n // Fetch the item.\n var item = items[i];\n // Get the column bounds for the item.\n var config = GridLayout.getCellConfig(item.widget);\n var c1 = Math.min(config.column, maxCol);\n var c2 = Math.min(config.column + config.columnSpan - 1, maxCol);\n // Distribute the minimum width to the sizers as needed.\n Private.distributeMin(this._columnSizers, c1, c2, item.minWidth);\n }\n // If no size constraint is needed, just update the parent.\n if (this.fitPolicy === 'set-no-constraint') {\n messaging_1.MessageLoop.sendMessage(this.parent, widget_1.Widget.Msg.UpdateRequest);\n return;\n }\n // Set up the computed min size.\n var minH = maxRow * this._rowSpacing;\n var minW = maxCol * this._columnSpacing;\n // Add the sizer minimums to the computed min size.\n for (var i = 0, n = this.rowCount; i < n; ++i) {\n minH += this._rowSizers[i].minSize;\n }\n for (var i = 0, n = this.columnCount; i < n; ++i) {\n minW += this._columnSizers[i].minSize;\n }\n // Update the box sizing and add it to the computed min size.\n var box = this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n minW += box.horizontalSum;\n minH += box.verticalSum;\n // Update the parent's min size constraints.\n var style = this.parent.node.style;\n style.minWidth = minW + \"px\";\n style.minHeight = minH + \"px\";\n // Set the dirty flag to ensure only a single update occurs.\n this._dirty = true;\n // Notify the ancestor that it should fit immediately. This may\n // cause a resize of the parent, fulfilling the required update.\n if (this.parent.parent) {\n messaging_1.MessageLoop.sendMessage(this.parent.parent, widget_1.Widget.Msg.FitRequest);\n }\n // If the dirty flag is still set, the parent was not resized.\n // Trigger the required update on the parent widget immediately.\n if (this._dirty) {\n messaging_1.MessageLoop.sendMessage(this.parent, widget_1.Widget.Msg.UpdateRequest);\n }\n };\n /**\n * Update the layout position and size of the widgets.\n *\n * The parent offset dimensions should be `-1` if unknown.\n */\n GridLayout.prototype._update = function (offsetWidth, offsetHeight) {\n // Clear the dirty flag to indicate the update occurred.\n this._dirty = false;\n // Measure the parent if the offset dimensions are unknown.\n if (offsetWidth < 0) {\n offsetWidth = this.parent.node.offsetWidth;\n }\n if (offsetHeight < 0) {\n offsetHeight = this.parent.node.offsetHeight;\n }\n // Ensure the parent box sizing data is computed.\n if (!this._box) {\n this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n }\n // Compute the layout area adjusted for border and padding.\n var top = this._box.paddingTop;\n var left = this._box.paddingLeft;\n var width = offsetWidth - this._box.horizontalSum;\n var height = offsetHeight - this._box.verticalSum;\n // Get the max row and column index.\n var maxRow = this.rowCount - 1;\n var maxCol = this.columnCount - 1;\n // Compute the total fixed row and column space.\n var fixedRowSpace = maxRow * this._rowSpacing;\n var fixedColSpace = maxCol * this._columnSpacing;\n // Distribute the available space to the box sizers.\n boxengine_1.BoxEngine.calc(this._rowSizers, Math.max(0, height - fixedRowSpace));\n boxengine_1.BoxEngine.calc(this._columnSizers, Math.max(0, width - fixedColSpace));\n // Update the row start positions.\n for (var i = 0, pos = top, n = this.rowCount; i < n; ++i) {\n this._rowStarts[i] = pos;\n pos += this._rowSizers[i].size + this._rowSpacing;\n }\n // Update the column start positions.\n for (var i = 0, pos = left, n = this.columnCount; i < n; ++i) {\n this._columnStarts[i] = pos;\n pos += this._columnSizers[i].size + this._columnSpacing;\n }\n // Update the geometry of the layout items.\n for (var i = 0, n = this._items.length; i < n; ++i) {\n // Fetch the item.\n var item = this._items[i];\n // Ignore hidden items.\n if (item.isHidden) {\n continue;\n }\n // Fetch the cell bounds for the widget.\n var config = GridLayout.getCellConfig(item.widget);\n var r1 = Math.min(config.row, maxRow);\n var c1 = Math.min(config.column, maxCol);\n var r2 = Math.min(config.row + config.rowSpan - 1, maxRow);\n var c2 = Math.min(config.column + config.columnSpan - 1, maxCol);\n // Compute the cell geometry.\n var x = this._columnStarts[c1];\n var y = this._rowStarts[r1];\n var w = this._columnStarts[c2] + this._columnSizers[c2].size - x;\n var h = this._rowStarts[r2] + this._rowSizers[r2].size - y;\n // Update the geometry of the layout item.\n item.update(x, y, w, h);\n }\n };\n return GridLayout;\n}(layout_1.Layout));\nexports.GridLayout = GridLayout;\n/**\n * The namespace for the `GridLayout` class statics.\n */\n(function (GridLayout) {\n /**\n * Get the cell config for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The cell config for the widget.\n */\n function getCellConfig(widget) {\n return Private.cellConfigProperty.get(widget);\n }\n GridLayout.getCellConfig = getCellConfig;\n /**\n * Set the cell config for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the cell config.\n */\n function setCellConfig(widget, value) {\n Private.cellConfigProperty.set(widget, Private.normalizeConfig(value));\n }\n GridLayout.setCellConfig = setCellConfig;\n})(GridLayout = exports.GridLayout || (exports.GridLayout = {}));\nexports.GridLayout = GridLayout;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The property descriptor for the widget cell config.\n */\n Private.cellConfigProperty = new properties_1.AttachedProperty({\n name: 'cellConfig',\n create: function () { return ({ row: 0, column: 0, rowSpan: 1, columnSpan: 1 }); },\n changed: onChildCellConfigChanged\n });\n /**\n * Normalize a partial cell config object.\n */\n function normalizeConfig(config) {\n var row = Math.max(0, Math.floor(config.row || 0));\n var column = Math.max(0, Math.floor(config.column || 0));\n var rowSpan = Math.max(1, Math.floor(config.rowSpan || 0));\n var columnSpan = Math.max(1, Math.floor(config.columnSpan || 0));\n return { row: row, column: column, rowSpan: rowSpan, columnSpan: columnSpan };\n }\n Private.normalizeConfig = normalizeConfig;\n /**\n * Clamp a value to an integer >= 0.\n */\n function clampValue(value) {\n return Math.max(0, Math.floor(value));\n }\n Private.clampValue = clampValue;\n /**\n * A sort comparison function for row spans.\n */\n function rowSpanCmp(a, b) {\n var c1 = Private.cellConfigProperty.get(a.widget);\n var c2 = Private.cellConfigProperty.get(b.widget);\n return c1.rowSpan - c2.rowSpan;\n }\n Private.rowSpanCmp = rowSpanCmp;\n /**\n * A sort comparison function for column spans.\n */\n function columnSpanCmp(a, b) {\n var c1 = Private.cellConfigProperty.get(a.widget);\n var c2 = Private.cellConfigProperty.get(b.widget);\n return c1.columnSpan - c2.columnSpan;\n }\n Private.columnSpanCmp = columnSpanCmp;\n /**\n * Reallocate the box sizers for the given grid dimensions.\n */\n function reallocSizers(sizers, count) {\n // Coerce the count to the valid range.\n count = Math.max(1, Math.floor(count));\n // Add the missing sizers.\n while (sizers.length < count) {\n sizers.push(new boxengine_1.BoxSizer());\n }\n // Remove the extra sizers.\n if (sizers.length > count) {\n sizers.length = count;\n }\n }\n Private.reallocSizers = reallocSizers;\n /**\n * Distribute a min size constraint across a range of sizers.\n */\n function distributeMin(sizers, i1, i2, minSize) {\n // Sanity check the indices.\n if (i2 < i1) {\n return;\n }\n // Handle the simple case of no cell span.\n if (i1 === i2) {\n var sizer = sizers[i1];\n sizer.minSize = Math.max(sizer.minSize, minSize);\n return;\n }\n // Compute the total current min size of the span.\n var totalMin = 0;\n for (var i = i1; i <= i2; ++i) {\n totalMin += sizers[i].minSize;\n }\n // Do nothing if the total is greater than the required.\n if (totalMin >= minSize) {\n return;\n }\n // Compute the portion of the space to allocate to each sizer.\n var portion = (minSize - totalMin) / (i2 - i1 + 1);\n // Add the portion to each sizer.\n for (var i = i1; i <= i2; ++i) {\n sizers[i].minSize += portion;\n }\n }\n Private.distributeMin = distributeMin;\n /**\n * The change handler for the child cell config property.\n */\n function onChildCellConfigChanged(child) {\n if (child.parent && child.parent.layout instanceof GridLayout) {\n child.parent.fit();\n }\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/gridlayout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n__export(__webpack_require__(/*! ./boxengine */ \"./node_modules/@phosphor/widgets/lib/boxengine.js\"));\n__export(__webpack_require__(/*! ./boxlayout */ \"./node_modules/@phosphor/widgets/lib/boxlayout.js\"));\n__export(__webpack_require__(/*! ./boxpanel */ \"./node_modules/@phosphor/widgets/lib/boxpanel.js\"));\n__export(__webpack_require__(/*! ./commandpalette */ \"./node_modules/@phosphor/widgets/lib/commandpalette.js\"));\n__export(__webpack_require__(/*! ./contextmenu */ \"./node_modules/@phosphor/widgets/lib/contextmenu.js\"));\n__export(__webpack_require__(/*! ./docklayout */ \"./node_modules/@phosphor/widgets/lib/docklayout.js\"));\n__export(__webpack_require__(/*! ./dockpanel */ \"./node_modules/@phosphor/widgets/lib/dockpanel.js\"));\n__export(__webpack_require__(/*! ./focustracker */ \"./node_modules/@phosphor/widgets/lib/focustracker.js\"));\n__export(__webpack_require__(/*! ./gridlayout */ \"./node_modules/@phosphor/widgets/lib/gridlayout.js\"));\n__export(__webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\"));\n__export(__webpack_require__(/*! ./menu */ \"./node_modules/@phosphor/widgets/lib/menu.js\"));\n__export(__webpack_require__(/*! ./menubar */ \"./node_modules/@phosphor/widgets/lib/menubar.js\"));\n__export(__webpack_require__(/*! ./panel */ \"./node_modules/@phosphor/widgets/lib/panel.js\"));\n__export(__webpack_require__(/*! ./panellayout */ \"./node_modules/@phosphor/widgets/lib/panellayout.js\"));\n__export(__webpack_require__(/*! ./scrollbar */ \"./node_modules/@phosphor/widgets/lib/scrollbar.js\"));\n__export(__webpack_require__(/*! ./singletonlayout */ \"./node_modules/@phosphor/widgets/lib/singletonlayout.js\"));\n__export(__webpack_require__(/*! ./splitlayout */ \"./node_modules/@phosphor/widgets/lib/splitlayout.js\"));\n__export(__webpack_require__(/*! ./splitpanel */ \"./node_modules/@phosphor/widgets/lib/splitpanel.js\"));\n__export(__webpack_require__(/*! ./stackedlayout */ \"./node_modules/@phosphor/widgets/lib/stackedlayout.js\"));\n__export(__webpack_require__(/*! ./stackedpanel */ \"./node_modules/@phosphor/widgets/lib/stackedpanel.js\"));\n__export(__webpack_require__(/*! ./tabbar */ \"./node_modules/@phosphor/widgets/lib/tabbar.js\"));\n__export(__webpack_require__(/*! ./tabpanel */ \"./node_modules/@phosphor/widgets/lib/tabpanel.js\"));\n__export(__webpack_require__(/*! ./title */ \"./node_modules/@phosphor/widgets/lib/title.js\"));\n__export(__webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\"));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/layout.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/layout.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar properties_1 = __webpack_require__(/*! @phosphor/properties */ \"./node_modules/@phosphor/properties/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * An abstract base class for creating Phosphor layouts.\n *\n * #### Notes\n * A layout is used to add widgets to a parent and to arrange those\n * widgets within the parent's DOM node.\n *\n * This class implements the base functionality which is required of\n * nearly all layouts. It must be subclassed in order to be useful.\n *\n * Notably, this class does not define a uniform interface for adding\n * widgets to the layout. A subclass should define that API in a way\n * which is meaningful for its intended use.\n */\nvar Layout = /** @class */ (function () {\n /**\n * Construct a new layout.\n *\n * @param options - The options for initializing the layout.\n */\n function Layout(options) {\n if (options === void 0) { options = {}; }\n this._disposed = false;\n this._parent = null;\n this._fitPolicy = options.fitPolicy || 'set-min-size';\n }\n /**\n * Dispose of the resources held by the layout.\n *\n * #### Notes\n * This should be reimplemented to clear and dispose of the widgets.\n *\n * All reimplementations should call the superclass method.\n *\n * This method is called automatically when the parent is disposed.\n */\n Layout.prototype.dispose = function () {\n this._parent = null;\n this._disposed = true;\n signaling_1.Signal.clearData(this);\n properties_1.AttachedProperty.clearData(this);\n };\n Object.defineProperty(Layout.prototype, \"isDisposed\", {\n /**\n * Test whether the layout is disposed.\n */\n get: function () {\n return this._disposed;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Layout.prototype, \"parent\", {\n /**\n * Get the parent widget of the layout.\n */\n get: function () {\n return this._parent;\n },\n /**\n * Set the parent widget of the layout.\n *\n * #### Notes\n * This is set automatically when installing the layout on the parent\n * widget. The parent widget should not be set directly by user code.\n */\n set: function (value) {\n if (this._parent === value) {\n return;\n }\n if (this._parent) {\n throw new Error('Cannot change parent widget.');\n }\n if (value.layout !== this) {\n throw new Error('Invalid parent widget.');\n }\n this._parent = value;\n this.init();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Layout.prototype, \"fitPolicy\", {\n /**\n * Get the fit policy for the layout.\n *\n * #### Notes\n * The fit policy controls the computed size constraints which are\n * applied to the parent widget by the layout.\n *\n * Some layout implementations may ignore the fit policy.\n */\n get: function () {\n return this._fitPolicy;\n },\n /**\n * Set the fit policy for the layout.\n *\n * #### Notes\n * The fit policy controls the computed size constraints which are\n * applied to the parent widget by the layout.\n *\n * Some layout implementations may ignore the fit policy.\n *\n * Changing the fit policy will clear the current size constraint\n * for the parent widget and then re-fit the parent.\n */\n set: function (value) {\n // Bail if the policy does not change\n if (this._fitPolicy === value) {\n return;\n }\n // Update the internal policy.\n this._fitPolicy = value;\n // Clear the size constraints and schedule a fit of the parent.\n if (this._parent) {\n var style = this._parent.node.style;\n style.minWidth = '';\n style.minHeight = '';\n style.maxWidth = '';\n style.maxHeight = '';\n this._parent.fit();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Process a message sent to the parent widget.\n *\n * @param msg - The message sent to the parent widget.\n *\n * #### Notes\n * This method is called by the parent widget to process a message.\n *\n * Subclasses may reimplement this method as needed.\n */\n Layout.prototype.processParentMessage = function (msg) {\n switch (msg.type) {\n case 'resize':\n this.onResize(msg);\n break;\n case 'update-request':\n this.onUpdateRequest(msg);\n break;\n case 'fit-request':\n this.onFitRequest(msg);\n break;\n case 'before-show':\n this.onBeforeShow(msg);\n break;\n case 'after-show':\n this.onAfterShow(msg);\n break;\n case 'before-hide':\n this.onBeforeHide(msg);\n break;\n case 'after-hide':\n this.onAfterHide(msg);\n break;\n case 'before-attach':\n this.onBeforeAttach(msg);\n break;\n case 'after-attach':\n this.onAfterAttach(msg);\n break;\n case 'before-detach':\n this.onBeforeDetach(msg);\n break;\n case 'after-detach':\n this.onAfterDetach(msg);\n break;\n case 'child-removed':\n this.onChildRemoved(msg);\n break;\n case 'child-shown':\n this.onChildShown(msg);\n break;\n case 'child-hidden':\n this.onChildHidden(msg);\n break;\n }\n };\n /**\n * Perform layout initialization which requires the parent widget.\n *\n * #### Notes\n * This method is invoked immediately after the layout is installed\n * on the parent widget.\n *\n * The default implementation reparents all of the widgets to the\n * layout parent widget.\n *\n * Subclasses should reimplement this method and attach the child\n * widget nodes to the parent widget's node.\n */\n Layout.prototype.init = function () {\n var _this = this;\n algorithm_1.each(this, function (widget) {\n widget.parent = _this.parent;\n });\n };\n /**\n * A message handler invoked on a `'resize'` message.\n *\n * #### Notes\n * The layout should ensure that its widgets are resized according\n * to the specified layout space, and that they are sent a `'resize'`\n * message if appropriate.\n *\n * The default implementation of this method sends an `UnknownSize`\n * resize message to all widgets.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onResize = function (msg) {\n algorithm_1.each(this, function (widget) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.ResizeMessage.UnknownSize);\n });\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n *\n * #### Notes\n * The layout should ensure that its widgets are resized according\n * to the available layout space, and that they are sent a `'resize'`\n * message if appropriate.\n *\n * The default implementation of this method sends an `UnknownSize`\n * resize message to all widgets.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onUpdateRequest = function (msg) {\n algorithm_1.each(this, function (widget) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.ResizeMessage.UnknownSize);\n });\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message\n * to all widgets. It assumes all widget nodes are attached to the\n * parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onBeforeAttach = function (msg) {\n algorithm_1.each(this, function (widget) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n });\n };\n /**\n * A message handler invoked on an `'after-attach'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message\n * to all widgets. It assumes all widget nodes are attached to the\n * parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onAfterAttach = function (msg) {\n algorithm_1.each(this, function (widget) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n });\n };\n /**\n * A message handler invoked on a `'before-detach'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message\n * to all widgets. It assumes all widget nodes are attached to the\n * parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onBeforeDetach = function (msg) {\n algorithm_1.each(this, function (widget) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n });\n };\n /**\n * A message handler invoked on an `'after-detach'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message\n * to all widgets. It assumes all widget nodes are attached to the\n * parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onAfterDetach = function (msg) {\n algorithm_1.each(this, function (widget) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n });\n };\n /**\n * A message handler invoked on a `'before-show'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message to\n * all non-hidden widgets. It assumes all widget nodes are attached\n * to the parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onBeforeShow = function (msg) {\n algorithm_1.each(this, function (widget) {\n if (!widget.isHidden) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n }\n });\n };\n /**\n * A message handler invoked on an `'after-show'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message to\n * all non-hidden widgets. It assumes all widget nodes are attached\n * to the parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onAfterShow = function (msg) {\n algorithm_1.each(this, function (widget) {\n if (!widget.isHidden) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n }\n });\n };\n /**\n * A message handler invoked on a `'before-hide'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message to\n * all non-hidden widgets. It assumes all widget nodes are attached\n * to the parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onBeforeHide = function (msg) {\n algorithm_1.each(this, function (widget) {\n if (!widget.isHidden) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n }\n });\n };\n /**\n * A message handler invoked on an `'after-hide'` message.\n *\n * #### Notes\n * The default implementation of this method forwards the message to\n * all non-hidden widgets. It assumes all widget nodes are attached\n * to the parent widget node.\n *\n * This may be reimplemented by subclasses as needed.\n */\n Layout.prototype.onAfterHide = function (msg) {\n algorithm_1.each(this, function (widget) {\n if (!widget.isHidden) {\n messaging_1.MessageLoop.sendMessage(widget, msg);\n }\n });\n };\n /**\n * A message handler invoked on a `'child-removed'` message.\n *\n * #### Notes\n * This will remove the child widget from the layout.\n *\n * Subclasses should **not** typically reimplement this method.\n */\n Layout.prototype.onChildRemoved = function (msg) {\n this.removeWidget(msg.child);\n };\n /**\n * A message handler invoked on a `'fit-request'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Layout.prototype.onFitRequest = function (msg) { };\n /**\n * A message handler invoked on a `'child-shown'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Layout.prototype.onChildShown = function (msg) { };\n /**\n * A message handler invoked on a `'child-hidden'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Layout.prototype.onChildHidden = function (msg) { };\n return Layout;\n}());\nexports.Layout = Layout;\n/**\n * The namespace for the `Layout` class statics.\n */\n(function (Layout) {\n /**\n * Get the horizontal alignment for a widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The horizontal alignment for the widget.\n *\n * #### Notes\n * If the layout width allocated to a widget is larger than its max\n * width, the horizontal alignment controls how the widget is placed\n * within the extra horizontal space.\n *\n * If the allocated width is less than the widget's max width, the\n * horizontal alignment has no effect.\n *\n * Some layout implementations may ignore horizontal alignment.\n */\n function getHorizontalAlignment(widget) {\n return Private.horizontalAlignmentProperty.get(widget);\n }\n Layout.getHorizontalAlignment = getHorizontalAlignment;\n /**\n * Set the horizontal alignment for a widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the horizontal alignment.\n *\n * #### Notes\n * If the layout width allocated to a widget is larger than its max\n * width, the horizontal alignment controls how the widget is placed\n * within the extra horizontal space.\n *\n * If the allocated width is less than the widget's max width, the\n * horizontal alignment has no effect.\n *\n * Some layout implementations may ignore horizontal alignment.\n *\n * Changing the horizontal alignment will post an `update-request`\n * message to widget's parent, provided the parent has a layout\n * installed.\n */\n function setHorizontalAlignment(widget, value) {\n Private.horizontalAlignmentProperty.set(widget, value);\n }\n Layout.setHorizontalAlignment = setHorizontalAlignment;\n /**\n * Get the vertical alignment for a widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The vertical alignment for the widget.\n *\n * #### Notes\n * If the layout height allocated to a widget is larger than its max\n * height, the vertical alignment controls how the widget is placed\n * within the extra vertical space.\n *\n * If the allocated height is less than the widget's max height, the\n * vertical alignment has no effect.\n *\n * Some layout implementations may ignore vertical alignment.\n */\n function getVerticalAlignment(widget) {\n return Private.verticalAlignmentProperty.get(widget);\n }\n Layout.getVerticalAlignment = getVerticalAlignment;\n /**\n * Set the vertical alignment for a widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the vertical alignment.\n *\n * #### Notes\n * If the layout height allocated to a widget is larger than its max\n * height, the vertical alignment controls how the widget is placed\n * within the extra vertical space.\n *\n * If the allocated height is less than the widget's max height, the\n * vertical alignment has no effect.\n *\n * Some layout implementations may ignore vertical alignment.\n *\n * Changing the horizontal alignment will post an `update-request`\n * message to widget's parent, provided the parent has a layout\n * installed.\n */\n function setVerticalAlignment(widget, value) {\n Private.verticalAlignmentProperty.set(widget, value);\n }\n Layout.setVerticalAlignment = setVerticalAlignment;\n})(Layout = exports.Layout || (exports.Layout = {}));\nexports.Layout = Layout;\n/**\n * An object which assists in the absolute layout of widgets.\n *\n * #### Notes\n * This class is useful when implementing a layout which arranges its\n * widgets using absolute positioning.\n *\n * This class is used by nearly all of the built-in Phosphor layouts.\n */\nvar LayoutItem = /** @class */ (function () {\n /**\n * Construct a new layout item.\n *\n * @param widget - The widget to be managed by the item.\n *\n * #### Notes\n * The widget will be set to absolute positioning.\n */\n function LayoutItem(widget) {\n this._top = NaN;\n this._left = NaN;\n this._width = NaN;\n this._height = NaN;\n this._minWidth = 0;\n this._minHeight = 0;\n this._maxWidth = Infinity;\n this._maxHeight = Infinity;\n this._disposed = false;\n this.widget = widget;\n this.widget.node.style.position = 'absolute';\n }\n /**\n * Dispose of the the layout item.\n *\n * #### Notes\n * This will reset the positioning of the widget.\n */\n LayoutItem.prototype.dispose = function () {\n // Do nothing if the item is already disposed.\n if (this._disposed) {\n return;\n }\n // Mark the item as disposed.\n this._disposed = true;\n // Reset the widget style.\n var style = this.widget.node.style;\n style.position = '';\n style.top = '';\n style.left = '';\n style.width = '';\n style.height = '';\n };\n Object.defineProperty(LayoutItem.prototype, \"minWidth\", {\n /**\n * The computed minimum width of the widget.\n *\n * #### Notes\n * This value can be updated by calling the `fit` method.\n */\n get: function () {\n return this._minWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LayoutItem.prototype, \"minHeight\", {\n /**\n * The computed minimum height of the widget.\n *\n * #### Notes\n * This value can be updated by calling the `fit` method.\n */\n get: function () {\n return this._minHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LayoutItem.prototype, \"maxWidth\", {\n /**\n * The computed maximum width of the widget.\n *\n * #### Notes\n * This value can be updated by calling the `fit` method.\n */\n get: function () {\n return this._maxWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LayoutItem.prototype, \"maxHeight\", {\n /**\n * The computed maximum height of the widget.\n *\n * #### Notes\n * This value can be updated by calling the `fit` method.\n */\n get: function () {\n return this._maxHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LayoutItem.prototype, \"isDisposed\", {\n /**\n * Whether the layout item is disposed.\n */\n get: function () {\n return this._disposed;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LayoutItem.prototype, \"isHidden\", {\n /**\n * Whether the managed widget is hidden.\n */\n get: function () {\n return this.widget.isHidden;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LayoutItem.prototype, \"isVisible\", {\n /**\n * Whether the managed widget is visible.\n */\n get: function () {\n return this.widget.isVisible;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LayoutItem.prototype, \"isAttached\", {\n /**\n * Whether the managed widget is attached.\n */\n get: function () {\n return this.widget.isAttached;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Update the computed size limits of the managed widget.\n */\n LayoutItem.prototype.fit = function () {\n var limits = domutils_1.ElementExt.sizeLimits(this.widget.node);\n this._minWidth = limits.minWidth;\n this._minHeight = limits.minHeight;\n this._maxWidth = limits.maxWidth;\n this._maxHeight = limits.maxHeight;\n };\n /**\n * Update the position and size of the managed widget.\n *\n * @param left - The left edge position of the layout box.\n *\n * @param top - The top edge position of the layout box.\n *\n * @param width - The width of the layout box.\n *\n * @param height - The height of the layout box.\n */\n LayoutItem.prototype.update = function (left, top, width, height) {\n // Clamp the size to the computed size limits.\n var clampW = Math.max(this._minWidth, Math.min(width, this._maxWidth));\n var clampH = Math.max(this._minHeight, Math.min(height, this._maxHeight));\n // Adjust the left edge for the horizontal alignment, if needed.\n if (clampW < width) {\n switch (Layout.getHorizontalAlignment(this.widget)) {\n case 'left':\n break;\n case 'center':\n left += (width - clampW) / 2;\n break;\n case 'right':\n left += width - clampW;\n break;\n default:\n throw 'unreachable';\n }\n }\n // Adjust the top edge for the vertical alignment, if needed.\n if (clampH < height) {\n switch (Layout.getVerticalAlignment(this.widget)) {\n case 'top':\n break;\n case 'center':\n top += (height - clampH) / 2;\n break;\n case 'bottom':\n top += height - clampH;\n break;\n default:\n throw 'unreachable';\n }\n }\n // Set up the resize variables.\n var resized = false;\n var style = this.widget.node.style;\n // Update the top edge of the widget if needed.\n if (this._top !== top) {\n this._top = top;\n style.top = top + \"px\";\n }\n // Update the left edge of the widget if needed.\n if (this._left !== left) {\n this._left = left;\n style.left = left + \"px\";\n }\n // Update the width of the widget if needed.\n if (this._width !== clampW) {\n resized = true;\n this._width = clampW;\n style.width = clampW + \"px\";\n }\n // Update the height of the widget if needed.\n if (this._height !== clampH) {\n resized = true;\n this._height = clampH;\n style.height = clampH + \"px\";\n }\n // Send a resize message to the widget if needed.\n if (resized) {\n var msg = new widget_1.Widget.ResizeMessage(clampW, clampH);\n messaging_1.MessageLoop.sendMessage(this.widget, msg);\n }\n };\n return LayoutItem;\n}());\nexports.LayoutItem = LayoutItem;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The attached property for a widget horizontal alignment.\n */\n Private.horizontalAlignmentProperty = new properties_1.AttachedProperty({\n name: 'horizontalAlignment',\n create: function () { return 'center'; },\n changed: onAlignmentChanged\n });\n /**\n * The attached property for a widget vertical alignment.\n */\n Private.verticalAlignmentProperty = new properties_1.AttachedProperty({\n name: 'verticalAlignment',\n create: function () { return 'top'; },\n changed: onAlignmentChanged\n });\n /**\n * The change handler for the attached alignment properties.\n */\n function onAlignmentChanged(child) {\n if (child.parent && child.parent.layout) {\n child.parent.update();\n }\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/layout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/menu.js": +/*!****************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/menu.js ***! + \****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar commands_1 = __webpack_require__(/*! @phosphor/commands */ \"./node_modules/@phosphor/commands/lib/index.js\");\nvar coreutils_1 = __webpack_require__(/*! @phosphor/coreutils */ \"./node_modules/@phosphor/coreutils/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar keyboard_1 = __webpack_require__(/*! @phosphor/keyboard */ \"./node_modules/@phosphor/keyboard/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar virtualdom_1 = __webpack_require__(/*! @phosphor/virtualdom */ \"./node_modules/@phosphor/virtualdom/lib/index.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A widget which displays items as a canonical menu.\n */\nvar Menu = /** @class */ (function (_super) {\n __extends(Menu, _super);\n /**\n * Construct a new menu.\n *\n * @param options - The options for initializing the menu.\n */\n function Menu(options) {\n var _this = _super.call(this, { node: Private.createNode() }) || this;\n _this._childIndex = -1;\n _this._activeIndex = -1;\n _this._openTimerID = 0;\n _this._closeTimerID = 0;\n _this._items = [];\n _this._childMenu = null;\n _this._parentMenu = null;\n _this._aboutToClose = new signaling_1.Signal(_this);\n _this._menuRequested = new signaling_1.Signal(_this);\n _this.addClass('p-Menu');\n _this.setFlag(widget_1.Widget.Flag.DisallowLayout);\n _this.commands = options.commands;\n _this.renderer = options.renderer || Menu.defaultRenderer;\n return _this;\n }\n /**\n * Dispose of the resources held by the menu.\n */\n Menu.prototype.dispose = function () {\n this.close();\n this._items.length = 0;\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(Menu.prototype, \"aboutToClose\", {\n /**\n * A signal emitted just before the menu is closed.\n *\n * #### Notes\n * This signal is emitted when the menu receives a `'close-request'`\n * message, just before it removes itself from the DOM.\n *\n * This signal is not emitted if the menu is already detached from\n * the DOM when it receives the `'close-request'` message.\n */\n get: function () {\n return this._aboutToClose;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"menuRequested\", {\n /**\n * A signal emitted when a new menu is requested by the user.\n *\n * #### Notes\n * This signal is emitted whenever the user presses the right or left\n * arrow keys, and a submenu cannot be opened or closed in response.\n *\n * This signal is useful when implementing menu bars in order to open\n * the next or previous menu in response to a user key press.\n *\n * This signal is only emitted for the root menu in a hierarchy.\n */\n get: function () {\n return this._menuRequested;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"parentMenu\", {\n /**\n * The parent menu of the menu.\n *\n * #### Notes\n * This is `null` unless the menu is an open submenu.\n */\n get: function () {\n return this._parentMenu;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"childMenu\", {\n /**\n * The child menu of the menu.\n *\n * #### Notes\n * This is `null` unless the menu has an open submenu.\n */\n get: function () {\n return this._childMenu;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"rootMenu\", {\n /**\n * The root menu of the menu hierarchy.\n */\n get: function () {\n var menu = this;\n while (menu._parentMenu) {\n menu = menu._parentMenu;\n }\n return menu;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"leafMenu\", {\n /**\n * The leaf menu of the menu hierarchy.\n */\n get: function () {\n var menu = this;\n while (menu._childMenu) {\n menu = menu._childMenu;\n }\n return menu;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"contentNode\", {\n /**\n * The menu content node.\n *\n * #### Notes\n * This is the node which holds the menu item nodes.\n *\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-Menu-content')[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"activeItem\", {\n /**\n * Get the currently active menu item.\n */\n get: function () {\n return this._items[this._activeIndex] || null;\n },\n /**\n * Set the currently active menu item.\n *\n * #### Notes\n * If the item cannot be activated, the item will be set to `null`.\n */\n set: function (value) {\n this.activeIndex = value ? this._items.indexOf(value) : -1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"activeIndex\", {\n /**\n * Get the index of the currently active menu item.\n *\n * #### Notes\n * This will be `-1` if no menu item is active.\n */\n get: function () {\n return this._activeIndex;\n },\n /**\n * Set the index of the currently active menu item.\n *\n * #### Notes\n * If the item cannot be activated, the index will be set to `-1`.\n */\n set: function (value) {\n // Adjust the value for an out of range index.\n if (value < 0 || value >= this._items.length) {\n value = -1;\n }\n // Ensure the item can be activated.\n if (value !== -1 && !Private.canActivate(this._items[value])) {\n value = -1;\n }\n // Bail if the index will not change.\n if (this._activeIndex === value) {\n return;\n }\n // Update the active index.\n this._activeIndex = value;\n // schedule an update of the items.\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu.prototype, \"items\", {\n /**\n * A read-only array of the menu items in the menu.\n */\n get: function () {\n return this._items;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Activate the next selectable item in the menu.\n *\n * #### Notes\n * If no item is selectable, the index will be set to `-1`.\n */\n Menu.prototype.activateNextItem = function () {\n var n = this._items.length;\n var ai = this._activeIndex;\n var start = ai < n - 1 ? ai + 1 : 0;\n var stop = start === 0 ? n - 1 : start - 1;\n this.activeIndex = algorithm_1.ArrayExt.findFirstIndex(this._items, Private.canActivate, start, stop);\n };\n /**\n * Activate the previous selectable item in the menu.\n *\n * #### Notes\n * If no item is selectable, the index will be set to `-1`.\n */\n Menu.prototype.activatePreviousItem = function () {\n var n = this._items.length;\n var ai = this._activeIndex;\n var start = ai <= 0 ? n - 1 : ai - 1;\n var stop = start === n - 1 ? 0 : start + 1;\n this.activeIndex = algorithm_1.ArrayExt.findLastIndex(this._items, Private.canActivate, start, stop);\n };\n /**\n * Trigger the active menu item.\n *\n * #### Notes\n * If the active item is a submenu, it will be opened and the first\n * item will be activated.\n *\n * If the active item is a command, the command will be executed.\n *\n * If the menu is not attached, this is a no-op.\n *\n * If there is no active item, this is a no-op.\n */\n Menu.prototype.triggerActiveItem = function () {\n // Bail if the menu is not attached.\n if (!this.isAttached) {\n return;\n }\n // Bail if there is no active item.\n var item = this.activeItem;\n if (!item) {\n return;\n }\n // Cancel the pending timers.\n this._cancelOpenTimer();\n this._cancelCloseTimer();\n // If the item is a submenu, open it.\n if (item.type === 'submenu') {\n this._openChildMenu(true);\n return;\n }\n // Close the root menu before executing the command.\n this.rootMenu.close();\n // Execute the command for the item.\n var command = item.command, args = item.args;\n if (this.commands.isEnabled(command, args)) {\n this.commands.execute(command, args);\n }\n else {\n console.log(\"Command '\" + command + \"' is disabled.\");\n }\n };\n /**\n * Add a menu item to the end of the menu.\n *\n * @param options - The options for creating the menu item.\n *\n * @returns The menu item added to the menu.\n */\n Menu.prototype.addItem = function (options) {\n return this.insertItem(this._items.length, options);\n };\n /**\n * Insert a menu item into the menu at the specified index.\n *\n * @param index - The index at which to insert the item.\n *\n * @param options - The options for creating the menu item.\n *\n * @returns The menu item added to the menu.\n *\n * #### Notes\n * The index will be clamped to the bounds of the items.\n */\n Menu.prototype.insertItem = function (index, options) {\n // Close the menu if it's attached.\n if (this.isAttached) {\n this.close();\n }\n // Reset the active index.\n this.activeIndex = -1;\n // Clamp the insert index to the array bounds.\n var i = Math.max(0, Math.min(index, this._items.length));\n // Create the item for the options.\n var item = Private.createItem(this, options);\n // Insert the item into the array.\n algorithm_1.ArrayExt.insert(this._items, i, item);\n // Schedule an update of the items.\n this.update();\n // Return the item added to the menu.\n return item;\n };\n /**\n * Remove an item from the menu.\n *\n * @param item - The item to remove from the menu.\n *\n * #### Notes\n * This is a no-op if the item is not in the menu.\n */\n Menu.prototype.removeItem = function (item) {\n this.removeItemAt(this._items.indexOf(item));\n };\n /**\n * Remove the item at a given index from the menu.\n *\n * @param index - The index of the item to remove.\n *\n * #### Notes\n * This is a no-op if the index is out of range.\n */\n Menu.prototype.removeItemAt = function (index) {\n // Close the menu if it's attached.\n if (this.isAttached) {\n this.close();\n }\n // Reset the active index.\n this.activeIndex = -1;\n // Remove the item from the array.\n var item = algorithm_1.ArrayExt.removeAt(this._items, index);\n // Bail if the index is out of range.\n if (!item) {\n return;\n }\n // Schedule an update of the items.\n this.update();\n };\n /**\n * Remove all menu items from the menu.\n */\n Menu.prototype.clearItems = function () {\n // Close the menu if it's attached.\n if (this.isAttached) {\n this.close();\n }\n // Reset the active index.\n this.activeIndex = -1;\n // Bail if there is nothing to remove.\n if (this._items.length === 0) {\n return;\n }\n // Clear the items.\n this._items.length = 0;\n // Schedule an update of the items.\n this.update();\n };\n /**\n * Open the menu at the specified location.\n *\n * @param x - The client X coordinate of the menu location.\n *\n * @param y - The client Y coordinate of the menu location.\n *\n * @param options - The additional options for opening the menu.\n *\n * #### Notes\n * The menu will be opened at the given location unless it will not\n * fully fit on the screen. If it will not fit, it will be adjusted\n * to fit naturally on the screen.\n *\n * This is a no-op if the menu is already attached to the DOM.\n */\n Menu.prototype.open = function (x, y, options) {\n if (options === void 0) { options = {}; }\n // Bail early if the menu is already attached.\n if (this.isAttached) {\n return;\n }\n // Extract the position options.\n var forceX = options.forceX || false;\n var forceY = options.forceY || false;\n // Open the menu as a root menu.\n Private.openRootMenu(this, x, y, forceX, forceY);\n // Activate the menu to accept keyboard input.\n this.activate();\n };\n /**\n * Handle the DOM events for the menu.\n *\n * @param event - The DOM event sent to the menu.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the menu's DOM nodes. It should\n * not be called directly by user code.\n */\n Menu.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'keydown':\n this._evtKeyDown(event);\n break;\n case 'mouseup':\n this._evtMouseUp(event);\n break;\n case 'mousemove':\n this._evtMouseMove(event);\n break;\n case 'mouseenter':\n this._evtMouseEnter(event);\n break;\n case 'mouseleave':\n this._evtMouseLeave(event);\n break;\n case 'mousedown':\n this._evtMouseDown(event);\n break;\n case 'contextmenu':\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n Menu.prototype.onBeforeAttach = function (msg) {\n this.node.addEventListener('keydown', this);\n this.node.addEventListener('mouseup', this);\n this.node.addEventListener('mousemove', this);\n this.node.addEventListener('mouseenter', this);\n this.node.addEventListener('mouseleave', this);\n this.node.addEventListener('contextmenu', this);\n document.addEventListener('mousedown', this, true);\n };\n /**\n * A message handler invoked on an `'after-detach'` message.\n */\n Menu.prototype.onAfterDetach = function (msg) {\n this.node.removeEventListener('keydown', this);\n this.node.removeEventListener('mouseup', this);\n this.node.removeEventListener('mousemove', this);\n this.node.removeEventListener('mouseenter', this);\n this.node.removeEventListener('mouseleave', this);\n this.node.removeEventListener('contextmenu', this);\n document.removeEventListener('mousedown', this, true);\n };\n /**\n * A message handler invoked on an `'activate-request'` message.\n */\n Menu.prototype.onActivateRequest = function (msg) {\n if (this.isAttached) {\n this.node.focus();\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n Menu.prototype.onUpdateRequest = function (msg) {\n var items = this._items;\n var renderer = this.renderer;\n var activeIndex = this._activeIndex;\n var collapsedFlags = Private.computeCollapsed(items);\n var content = new Array(items.length);\n for (var i = 0, n = items.length; i < n; ++i) {\n var item = items[i];\n var active = i === activeIndex;\n var collapsed = collapsedFlags[i];\n content[i] = renderer.renderItem({ item: item, active: active, collapsed: collapsed });\n }\n virtualdom_1.VirtualDOM.render(content, this.contentNode);\n };\n /**\n * A message handler invoked on a `'close-request'` message.\n */\n Menu.prototype.onCloseRequest = function (msg) {\n // Cancel the pending timers.\n this._cancelOpenTimer();\n this._cancelCloseTimer();\n // Reset the active index.\n this.activeIndex = -1;\n // Close any open child menu.\n var childMenu = this._childMenu;\n if (childMenu) {\n this._childIndex = -1;\n this._childMenu = null;\n childMenu._parentMenu = null;\n childMenu.close();\n }\n // Remove this menu from its parent and activate the parent.\n var parentMenu = this._parentMenu;\n if (parentMenu) {\n this._parentMenu = null;\n parentMenu._childIndex = -1;\n parentMenu._childMenu = null;\n parentMenu.activate();\n }\n // Emit the `aboutToClose` signal if the menu is attached.\n if (this.isAttached) {\n this._aboutToClose.emit(undefined);\n }\n // Finish closing the menu.\n _super.prototype.onCloseRequest.call(this, msg);\n };\n /**\n * Handle the `'keydown'` event for the menu.\n *\n * #### Notes\n * This listener is attached to the menu node.\n */\n Menu.prototype._evtKeyDown = function (event) {\n // A menu handles all keydown events.\n event.preventDefault();\n event.stopPropagation();\n // Fetch the key code for the event.\n var kc = event.keyCode;\n // Enter\n if (kc === 13) {\n this.triggerActiveItem();\n return;\n }\n // Escape\n if (kc === 27) {\n this.close();\n return;\n }\n // Left Arrow\n if (kc === 37) {\n if (this._parentMenu) {\n this.close();\n }\n else {\n this._menuRequested.emit('previous');\n }\n return;\n }\n // Up Arrow\n if (kc === 38) {\n this.activatePreviousItem();\n return;\n }\n // Right Arrow\n if (kc === 39) {\n var item = this.activeItem;\n if (item && item.type === 'submenu') {\n this.triggerActiveItem();\n }\n else {\n this.rootMenu._menuRequested.emit('next');\n }\n return;\n }\n // Down Arrow\n if (kc === 40) {\n this.activateNextItem();\n return;\n }\n // Get the pressed key character.\n var key = keyboard_1.getKeyboardLayout().keyForKeydownEvent(event);\n // Bail if the key is not valid.\n if (!key) {\n return;\n }\n // Search for the next best matching mnemonic item.\n var start = this._activeIndex + 1;\n var result = Private.findMnemonic(this._items, key, start);\n // Handle the requested mnemonic based on the search results.\n // If exactly one mnemonic is matched, that item is triggered.\n // Otherwise, the next mnemonic is activated if available,\n // followed by the auto mnemonic if available.\n if (result.index !== -1 && !result.multiple) {\n this.activeIndex = result.index;\n this.triggerActiveItem();\n }\n else if (result.index !== -1) {\n this.activeIndex = result.index;\n }\n else if (result.auto !== -1) {\n this.activeIndex = result.auto;\n }\n };\n /**\n * Handle the `'mouseup'` event for the menu.\n *\n * #### Notes\n * This listener is attached to the menu node.\n */\n Menu.prototype._evtMouseUp = function (event) {\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.triggerActiveItem();\n };\n /**\n * Handle the `'mousemove'` event for the menu.\n *\n * #### Notes\n * This listener is attached to the menu node.\n */\n Menu.prototype._evtMouseMove = function (event) {\n // Hit test the item nodes for the item under the mouse.\n var index = algorithm_1.ArrayExt.findFirstIndex(this.contentNode.children, function (node) {\n return domutils_1.ElementExt.hitTest(node, event.clientX, event.clientY);\n });\n // Bail early if the mouse is already over the active index.\n if (index === this._activeIndex) {\n return;\n }\n // Update and coerce the active index.\n this.activeIndex = index;\n index = this.activeIndex;\n // If the index is the current child index, cancel the timers.\n if (index === this._childIndex) {\n this._cancelOpenTimer();\n this._cancelCloseTimer();\n return;\n }\n // If a child menu is currently open, start the close timer.\n if (this._childIndex !== -1) {\n this._startCloseTimer();\n }\n // Cancel the open timer to give a full delay for opening.\n this._cancelOpenTimer();\n // Bail if the active item is not a valid submenu item.\n var item = this.activeItem;\n if (!item || item.type !== 'submenu' || !item.submenu) {\n return;\n }\n // Start the open timer to open the active item submenu.\n this._startOpenTimer();\n };\n /**\n * Handle the `'mouseenter'` event for the menu.\n *\n * #### Notes\n * This listener is attached to the menu node.\n */\n Menu.prototype._evtMouseEnter = function (event) {\n // Synchronize the active ancestor items.\n for (var menu = this._parentMenu; menu; menu = menu._parentMenu) {\n menu._cancelOpenTimer();\n menu._cancelCloseTimer();\n menu.activeIndex = menu._childIndex;\n }\n };\n /**\n * Handle the `'mouseleave'` event for the menu.\n *\n * #### Notes\n * This listener is attached to the menu node.\n */\n Menu.prototype._evtMouseLeave = function (event) {\n // Cancel any pending submenu opening.\n this._cancelOpenTimer();\n // If there is no open child menu, just reset the active index.\n if (!this._childMenu) {\n this.activeIndex = -1;\n return;\n }\n // If the mouse is over the child menu, cancel the close timer.\n var clientX = event.clientX, clientY = event.clientY;\n if (domutils_1.ElementExt.hitTest(this._childMenu.node, clientX, clientY)) {\n this._cancelCloseTimer();\n return;\n }\n // Otherwise, reset the active index and start the close timer.\n this.activeIndex = -1;\n this._startCloseTimer();\n };\n /**\n * Handle the `'mousedown'` event for the menu.\n *\n * #### Notes\n * This listener is attached to the document node.\n */\n Menu.prototype._evtMouseDown = function (event) {\n // Bail if the menu is not a root menu.\n if (this._parentMenu) {\n return;\n }\n // The mouse button which is pressed is irrelevant. If the press\n // is not on a menu, the entire hierarchy is closed and the event\n // is allowed to propagate. This allows other code to act on the\n // event, such as focusing the clicked element.\n if (Private.hitTestMenus(this, event.clientX, event.clientY)) {\n event.preventDefault();\n event.stopPropagation();\n }\n else {\n this.close();\n }\n };\n /**\n * Open the child menu at the active index immediately.\n *\n * If a different child menu is already open, it will be closed,\n * even if the active item is not a valid submenu.\n */\n Menu.prototype._openChildMenu = function (activateFirst) {\n if (activateFirst === void 0) { activateFirst = false; }\n // If the item is not a valid submenu, close the child menu.\n var item = this.activeItem;\n if (!item || item.type !== 'submenu' || !item.submenu) {\n this._closeChildMenu();\n return;\n }\n // Do nothing if the child menu will not change.\n var submenu = item.submenu;\n if (submenu === this._childMenu) {\n return;\n }\n // Ensure the current child menu is closed.\n this._closeChildMenu();\n // Update the private child state.\n this._childMenu = submenu;\n this._childIndex = this._activeIndex;\n // Set the parent menu reference for the child.\n submenu._parentMenu = this;\n // Ensure the menu is updated and lookup the item node.\n messaging_1.MessageLoop.sendMessage(this, widget_1.Widget.Msg.UpdateRequest);\n var itemNode = this.contentNode.children[this._activeIndex];\n // Open the submenu at the active node.\n Private.openSubmenu(submenu, itemNode);\n // Activate the first item if desired.\n if (activateFirst) {\n submenu.activeIndex = -1;\n submenu.activateNextItem();\n }\n // Activate the child menu.\n submenu.activate();\n };\n /**\n * Close the child menu immediately.\n *\n * This is a no-op if a child menu is not open.\n */\n Menu.prototype._closeChildMenu = function () {\n if (this._childMenu) {\n this._childMenu.close();\n }\n };\n /**\n * Start the open timer, unless it is already pending.\n */\n Menu.prototype._startOpenTimer = function () {\n var _this = this;\n if (this._openTimerID === 0) {\n this._openTimerID = window.setTimeout(function () {\n _this._openTimerID = 0;\n _this._openChildMenu();\n }, Private.TIMER_DELAY);\n }\n };\n /**\n * Start the close timer, unless it is already pending.\n */\n Menu.prototype._startCloseTimer = function () {\n var _this = this;\n if (this._closeTimerID === 0) {\n this._closeTimerID = window.setTimeout(function () {\n _this._closeTimerID = 0;\n _this._closeChildMenu();\n }, Private.TIMER_DELAY);\n }\n };\n /**\n * Cancel the open timer, if the timer is pending.\n */\n Menu.prototype._cancelOpenTimer = function () {\n if (this._openTimerID !== 0) {\n clearTimeout(this._openTimerID);\n this._openTimerID = 0;\n }\n };\n /**\n * Cancel the close timer, if the timer is pending.\n */\n Menu.prototype._cancelCloseTimer = function () {\n if (this._closeTimerID !== 0) {\n clearTimeout(this._closeTimerID);\n this._closeTimerID = 0;\n }\n };\n return Menu;\n}(widget_1.Widget));\nexports.Menu = Menu;\n/**\n * The namespace for the `Menu` class statics.\n */\n(function (Menu) {\n /**\n * The default implementation of `IRenderer`.\n *\n * #### Notes\n * Subclasses are free to reimplement rendering methods as needed.\n */\n var Renderer = /** @class */ (function () {\n /**\n * Construct a new renderer.\n */\n function Renderer() {\n }\n /**\n * Render the virtual element for a menu item.\n *\n * @param data - The data to use for rendering the item.\n *\n * @returns A virtual element representing the item.\n */\n Renderer.prototype.renderItem = function (data) {\n var className = this.createItemClass(data);\n var dataset = this.createItemDataset(data);\n return (virtualdom_1.h.li({ className: className, dataset: dataset }, this.renderIcon(data), this.renderLabel(data), this.renderShortcut(data), this.renderSubmenu(data)));\n };\n /**\n * Render the icon element for a menu item.\n *\n * @param data - The data to use for rendering the icon.\n *\n * @returns A virtual element representing the item icon.\n */\n Renderer.prototype.renderIcon = function (data) {\n var className = this.createIconClass(data);\n return virtualdom_1.h.div({ className: className }, data.item.iconLabel);\n };\n /**\n * Render the label element for a menu item.\n *\n * @param data - The data to use for rendering the label.\n *\n * @returns A virtual element representing the item label.\n */\n Renderer.prototype.renderLabel = function (data) {\n var content = this.formatLabel(data);\n return virtualdom_1.h.div({ className: 'p-Menu-itemLabel' }, content);\n };\n /**\n * Render the shortcut element for a menu item.\n *\n * @param data - The data to use for rendering the shortcut.\n *\n * @returns A virtual element representing the item shortcut.\n */\n Renderer.prototype.renderShortcut = function (data) {\n var content = this.formatShortcut(data);\n return virtualdom_1.h.div({ className: 'p-Menu-itemShortcut' }, content);\n };\n /**\n * Render the submenu icon element for a menu item.\n *\n * @param data - The data to use for rendering the submenu icon.\n *\n * @returns A virtual element representing the submenu icon.\n */\n Renderer.prototype.renderSubmenu = function (data) {\n return virtualdom_1.h.div({ className: 'p-Menu-itemSubmenuIcon' });\n };\n /**\n * Create the class name for the menu item.\n *\n * @param data - The data to use for the class name.\n *\n * @returns The full class name for the menu item.\n */\n Renderer.prototype.createItemClass = function (data) {\n // Setup the initial class name.\n var name = 'p-Menu-item';\n // Add the boolean state classes.\n if (!data.item.isEnabled) {\n name += ' p-mod-disabled';\n }\n if (data.item.isToggled) {\n name += ' p-mod-toggled';\n }\n if (!data.item.isVisible) {\n name += ' p-mod-hidden';\n }\n if (data.active) {\n name += ' p-mod-active';\n }\n if (data.collapsed) {\n name += ' p-mod-collapsed';\n }\n // Add the extra class.\n var extra = data.item.className;\n if (extra) {\n name += \" \" + extra;\n }\n // Return the complete class name.\n return name;\n };\n /**\n * Create the dataset for the menu item.\n *\n * @param data - The data to use for creating the dataset.\n *\n * @returns The dataset for the menu item.\n */\n Renderer.prototype.createItemDataset = function (data) {\n var result;\n var _a = data.item, type = _a.type, command = _a.command, dataset = _a.dataset;\n if (type === 'command') {\n result = __assign({}, dataset, { type: type, command: command });\n }\n else {\n result = __assign({}, dataset, { type: type });\n }\n return result;\n };\n /**\n * Create the class name for the menu item icon.\n *\n * @param data - The data to use for the class name.\n *\n * @returns The full class name for the item icon.\n */\n Renderer.prototype.createIconClass = function (data) {\n var name = 'p-Menu-itemIcon';\n var extra = data.item.iconClass;\n return extra ? name + \" \" + extra : name;\n };\n /**\n * Create the render content for the label node.\n *\n * @param data - The data to use for the label content.\n *\n * @returns The content to add to the label node.\n */\n Renderer.prototype.formatLabel = function (data) {\n // Fetch the label text and mnemonic index.\n var _a = data.item, label = _a.label, mnemonic = _a.mnemonic;\n // If the index is out of range, do not modify the label.\n if (mnemonic < 0 || mnemonic >= label.length) {\n return label;\n }\n // Split the label into parts.\n var prefix = label.slice(0, mnemonic);\n var suffix = label.slice(mnemonic + 1);\n var char = label[mnemonic];\n // Wrap the mnemonic character in a span.\n var span = virtualdom_1.h.span({ className: 'p-Menu-itemMnemonic' }, char);\n // Return the content parts.\n return [prefix, span, suffix];\n };\n /**\n * Create the render content for the shortcut node.\n *\n * @param data - The data to use for the shortcut content.\n *\n * @returns The content to add to the shortcut node.\n */\n Renderer.prototype.formatShortcut = function (data) {\n var kb = data.item.keyBinding;\n return kb ? kb.keys.map(commands_1.CommandRegistry.formatKeystroke).join(', ') : null;\n };\n return Renderer;\n }());\n Menu.Renderer = Renderer;\n /**\n * The default `Renderer` instance.\n */\n Menu.defaultRenderer = new Renderer();\n})(Menu = exports.Menu || (exports.Menu = {}));\nexports.Menu = Menu;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The ms delay for opening and closing a submenu.\n */\n Private.TIMER_DELAY = 300;\n /**\n * The horizontal pixel overlap for an open submenu.\n */\n Private.SUBMENU_OVERLAP = 3;\n /**\n * Create the DOM node for a menu.\n */\n function createNode() {\n var node = document.createElement('div');\n var content = document.createElement('ul');\n content.className = 'p-Menu-content';\n node.appendChild(content);\n node.tabIndex = -1;\n return node;\n }\n Private.createNode = createNode;\n /**\n * Test whether a menu item can be activated.\n */\n function canActivate(item) {\n return item.type !== 'separator' && item.isEnabled && item.isVisible;\n }\n Private.canActivate = canActivate;\n /**\n * Create a new menu item for an owner menu.\n */\n function createItem(owner, options) {\n return new MenuItem(owner.commands, options);\n }\n Private.createItem = createItem;\n /**\n * Hit test a menu hierarchy starting at the given root.\n */\n function hitTestMenus(menu, x, y) {\n for (var temp = menu; temp; temp = temp.childMenu) {\n if (domutils_1.ElementExt.hitTest(temp.node, x, y)) {\n return true;\n }\n }\n return false;\n }\n Private.hitTestMenus = hitTestMenus;\n /**\n * Compute which extra separator items should be collapsed.\n */\n function computeCollapsed(items) {\n // Allocate the return array and fill it with `false`.\n var result = new Array(items.length);\n algorithm_1.ArrayExt.fill(result, false);\n // Collapse the leading separators.\n var k1 = 0;\n var n = items.length;\n for (; k1 < n; ++k1) {\n var item = items[k1];\n if (!item.isVisible) {\n continue;\n }\n if (item.type !== 'separator') {\n break;\n }\n result[k1] = true;\n }\n // Hide the trailing separators.\n var k2 = n - 1;\n for (; k2 >= 0; --k2) {\n var item = items[k2];\n if (!item.isVisible) {\n continue;\n }\n if (item.type !== 'separator') {\n break;\n }\n result[k2] = true;\n }\n // Hide the remaining consecutive separators.\n var hide = false;\n while (++k1 < k2) {\n var item = items[k1];\n if (!item.isVisible) {\n continue;\n }\n if (item.type !== 'separator') {\n hide = false;\n }\n else if (hide) {\n result[k1] = true;\n }\n else {\n hide = true;\n }\n }\n // Return the resulting flags.\n return result;\n }\n Private.computeCollapsed = computeCollapsed;\n /**\n * Open a menu as a root menu at the target location.\n */\n function openRootMenu(menu, x, y, forceX, forceY) {\n // Ensure the menu is updated before attaching and measuring.\n messaging_1.MessageLoop.sendMessage(menu, widget_1.Widget.Msg.UpdateRequest);\n // Get the current position and size of the main viewport.\n var px = window.pageXOffset;\n var py = window.pageYOffset;\n var cw = document.documentElement.clientWidth;\n var ch = document.documentElement.clientHeight;\n // Compute the maximum allowed height for the menu.\n var maxHeight = ch - (forceY ? y : 0);\n // Fetch common variables.\n var node = menu.node;\n var style = node.style;\n // Clear the menu geometry and prepare it for measuring.\n style.top = '';\n style.left = '';\n style.width = '';\n style.height = '';\n style.visibility = 'hidden';\n style.maxHeight = maxHeight + \"px\";\n // Attach the menu to the document.\n widget_1.Widget.attach(menu, document.body);\n // Measure the size of the menu.\n var _a = node.getBoundingClientRect(), width = _a.width, height = _a.height;\n // Adjust the X position of the menu to fit on-screen.\n if (!forceX && (x + width > px + cw)) {\n x = px + cw - width;\n }\n // Adjust the Y position of the menu to fit on-screen.\n if (!forceY && (y + height > py + ch)) {\n if (y > py + ch) {\n y = py + ch - height;\n }\n else {\n y = y - height;\n }\n }\n // Update the position of the menu to the computed position.\n style.top = Math.max(0, y) + \"px\";\n style.left = Math.max(0, x) + \"px\";\n // Finally, make the menu visible on the screen.\n style.visibility = '';\n }\n Private.openRootMenu = openRootMenu;\n /**\n * Open a menu as a submenu using an item node for positioning.\n */\n function openSubmenu(submenu, itemNode) {\n // Ensure the menu is updated before opening.\n messaging_1.MessageLoop.sendMessage(submenu, widget_1.Widget.Msg.UpdateRequest);\n // Get the current position and size of the main viewport.\n var px = window.pageXOffset;\n var py = window.pageYOffset;\n var cw = document.documentElement.clientWidth;\n var ch = document.documentElement.clientHeight;\n // Compute the maximum allowed height for the menu.\n var maxHeight = ch;\n // Fetch common variables.\n var node = submenu.node;\n var style = node.style;\n // Clear the menu geometry and prepare it for measuring.\n style.top = '';\n style.left = '';\n style.width = '';\n style.height = '';\n style.visibility = 'hidden';\n style.maxHeight = maxHeight + \"px\";\n // Attach the menu to the document.\n widget_1.Widget.attach(submenu, document.body);\n // Measure the size of the menu.\n var _a = node.getBoundingClientRect(), width = _a.width, height = _a.height;\n // Compute the box sizing for the menu.\n var box = domutils_1.ElementExt.boxSizing(submenu.node);\n // Get the bounding rect for the target item node.\n var itemRect = itemNode.getBoundingClientRect();\n // Compute the target X position.\n var x = itemRect.right - Private.SUBMENU_OVERLAP;\n // Adjust the X position to fit on the screen.\n if (x + width > px + cw) {\n x = itemRect.left + Private.SUBMENU_OVERLAP - width;\n }\n // Compute the target Y position.\n var y = itemRect.top - box.borderTop - box.paddingTop;\n // Adjust the Y position to fit on the screen.\n if (y + height > py + ch) {\n y = itemRect.bottom + box.borderBottom + box.paddingBottom - height;\n }\n // Update the position of the menu to the computed position.\n style.top = Math.max(0, y) + \"px\";\n style.left = Math.max(0, x) + \"px\";\n // Finally, make the menu visible on the screen.\n style.visibility = '';\n }\n Private.openSubmenu = openSubmenu;\n /**\n * Find the best matching mnemonic item.\n *\n * The search starts at the given index and wraps around.\n */\n function findMnemonic(items, key, start) {\n // Setup the result variables.\n var index = -1;\n var auto = -1;\n var multiple = false;\n // Normalize the key to upper case.\n var upperKey = key.toUpperCase();\n // Search the items from the given start index.\n for (var i = 0, n = items.length; i < n; ++i) {\n // Compute the wrapped index.\n var k = (i + start) % n;\n // Lookup the item\n var item = items[k];\n // Ignore items which cannot be activated.\n if (!canActivate(item)) {\n continue;\n }\n // Ignore items with an empty label.\n var label = item.label;\n if (label.length === 0) {\n continue;\n }\n // Lookup the mnemonic index for the label.\n var mn = item.mnemonic;\n // Handle a valid mnemonic index.\n if (mn >= 0 && mn < label.length) {\n if (label[mn].toUpperCase() === upperKey) {\n if (index === -1) {\n index = k;\n }\n else {\n multiple = true;\n }\n }\n continue;\n }\n // Finally, handle the auto index if possible.\n if (auto === -1 && label[0].toUpperCase() === upperKey) {\n auto = k;\n }\n }\n // Return the search results.\n return { index: index, multiple: multiple, auto: auto };\n }\n Private.findMnemonic = findMnemonic;\n /**\n * A concrete implementation of `Menu.IItem`.\n */\n var MenuItem = /** @class */ (function () {\n /**\n * Construct a new menu item.\n */\n function MenuItem(commands, options) {\n this._commands = commands;\n this.type = options.type || 'command';\n this.command = options.command || '';\n this.args = options.args || coreutils_1.JSONExt.emptyObject;\n this.submenu = options.submenu || null;\n }\n Object.defineProperty(MenuItem.prototype, \"label\", {\n /**\n * The display label for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.label(this.command, this.args);\n }\n if (this.type === 'submenu' && this.submenu) {\n return this.submenu.title.label;\n }\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"mnemonic\", {\n /**\n * The mnemonic index for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.mnemonic(this.command, this.args);\n }\n if (this.type === 'submenu' && this.submenu) {\n return this.submenu.title.mnemonic;\n }\n return -1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"icon\", {\n /**\n * @deprecated Use `iconClass` instead.\n */\n get: function () {\n return this.iconClass;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"iconClass\", {\n /**\n * The icon class for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.iconClass(this.command, this.args);\n }\n if (this.type === 'submenu' && this.submenu) {\n return this.submenu.title.iconClass;\n }\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"iconLabel\", {\n /**\n * The icon label for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.iconLabel(this.command, this.args);\n }\n if (this.type === 'submenu' && this.submenu) {\n return this.submenu.title.iconLabel;\n }\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"caption\", {\n /**\n * The display caption for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.caption(this.command, this.args);\n }\n if (this.type === 'submenu' && this.submenu) {\n return this.submenu.title.caption;\n }\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"className\", {\n /**\n * The extra class name for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.className(this.command, this.args);\n }\n if (this.type === 'submenu' && this.submenu) {\n return this.submenu.title.className;\n }\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"dataset\", {\n /**\n * The dataset for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.dataset(this.command, this.args);\n }\n if (this.type === 'submenu' && this.submenu) {\n return this.submenu.title.dataset;\n }\n return {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"isEnabled\", {\n /**\n * Whether the menu item is enabled.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.isEnabled(this.command, this.args);\n }\n if (this.type === 'submenu') {\n return this.submenu !== null;\n }\n return true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"isToggled\", {\n /**\n * Whether the menu item is toggled.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.isToggled(this.command, this.args);\n }\n return false;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"isVisible\", {\n /**\n * Whether the menu item is visible.\n */\n get: function () {\n if (this.type === 'command') {\n return this._commands.isVisible(this.command, this.args);\n }\n if (this.type === 'submenu') {\n return this.submenu !== null;\n }\n return true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuItem.prototype, \"keyBinding\", {\n /**\n * The key binding for the menu item.\n */\n get: function () {\n if (this.type === 'command') {\n var _a = this, command_1 = _a.command, args_1 = _a.args;\n return algorithm_1.ArrayExt.findLastValue(this._commands.keyBindings, function (kb) {\n return kb.command === command_1 && coreutils_1.JSONExt.deepEqual(kb.args, args_1);\n }) || null;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n return MenuItem;\n }());\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/menu.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/menubar.js": +/*!*******************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/menubar.js ***! + \*******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar keyboard_1 = __webpack_require__(/*! @phosphor/keyboard */ \"./node_modules/@phosphor/keyboard/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar virtualdom_1 = __webpack_require__(/*! @phosphor/virtualdom */ \"./node_modules/@phosphor/virtualdom/lib/index.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A widget which displays menus as a canonical menu bar.\n */\nvar MenuBar = /** @class */ (function (_super) {\n __extends(MenuBar, _super);\n /**\n * Construct a new menu bar.\n *\n * @param options - The options for initializing the menu bar.\n */\n function MenuBar(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, { node: Private.createNode() }) || this;\n _this._activeIndex = -1;\n _this._menus = [];\n _this._childMenu = null;\n _this.addClass('p-MenuBar');\n _this.setFlag(widget_1.Widget.Flag.DisallowLayout);\n _this.renderer = options.renderer || MenuBar.defaultRenderer;\n return _this;\n }\n /**\n * Dispose of the resources held by the widget.\n */\n MenuBar.prototype.dispose = function () {\n this._closeChildMenu();\n this._menus.length = 0;\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(MenuBar.prototype, \"childMenu\", {\n /**\n * The child menu of the menu bar.\n *\n * #### Notes\n * This will be `null` if the menu bar does not have an open menu.\n */\n get: function () {\n return this._childMenu;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuBar.prototype, \"contentNode\", {\n /**\n * Get the menu bar content node.\n *\n * #### Notes\n * This is the node which holds the menu title nodes.\n *\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-MenuBar-content')[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuBar.prototype, \"activeMenu\", {\n /**\n * Get the currently active menu.\n */\n get: function () {\n return this._menus[this._activeIndex] || null;\n },\n /**\n * Set the currently active menu.\n *\n * #### Notes\n * If the menu does not exist, the menu will be set to `null`.\n */\n set: function (value) {\n this.activeIndex = value ? this._menus.indexOf(value) : -1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuBar.prototype, \"activeIndex\", {\n /**\n * Get the index of the currently active menu.\n *\n * #### Notes\n * This will be `-1` if no menu is active.\n */\n get: function () {\n return this._activeIndex;\n },\n /**\n * Set the index of the currently active menu.\n *\n * #### Notes\n * If the menu cannot be activated, the index will be set to `-1`.\n */\n set: function (value) {\n // Adjust the value for an out of range index.\n if (value < 0 || value >= this._menus.length) {\n value = -1;\n }\n // Bail early if the index will not change.\n if (this._activeIndex === value) {\n return;\n }\n // Update the active index.\n this._activeIndex = value;\n // Schedule an update of the items.\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MenuBar.prototype, \"menus\", {\n /**\n * A read-only array of the menus in the menu bar.\n */\n get: function () {\n return this._menus;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Open the active menu and activate its first menu item.\n *\n * #### Notes\n * If there is no active menu, this is a no-op.\n */\n MenuBar.prototype.openActiveMenu = function () {\n // Bail early if there is no active item.\n if (this._activeIndex === -1) {\n return;\n }\n // Open the child menu.\n this._openChildMenu();\n // Activate the first item in the child menu.\n if (this._childMenu) {\n this._childMenu.activeIndex = -1;\n this._childMenu.activateNextItem();\n }\n };\n /**\n * Add a menu to the end of the menu bar.\n *\n * @param menu - The menu to add to the menu bar.\n *\n * #### Notes\n * If the menu is already added to the menu bar, it will be moved.\n */\n MenuBar.prototype.addMenu = function (menu) {\n this.insertMenu(this._menus.length, menu);\n };\n /**\n * Insert a menu into the menu bar at the specified index.\n *\n * @param index - The index at which to insert the menu.\n *\n * @param menu - The menu to insert into the menu bar.\n *\n * #### Notes\n * The index will be clamped to the bounds of the menus.\n *\n * If the menu is already added to the menu bar, it will be moved.\n */\n MenuBar.prototype.insertMenu = function (index, menu) {\n // Close the child menu before making changes.\n this._closeChildMenu();\n // Look up the index of the menu.\n var i = this._menus.indexOf(menu);\n // Clamp the insert index to the array bounds.\n var j = Math.max(0, Math.min(index, this._menus.length));\n // If the menu is not in the array, insert it.\n if (i === -1) {\n // Insert the menu into the array.\n algorithm_1.ArrayExt.insert(this._menus, j, menu);\n // Add the styling class to the menu.\n menu.addClass('p-MenuBar-menu');\n // Connect to the menu signals.\n menu.aboutToClose.connect(this._onMenuAboutToClose, this);\n menu.menuRequested.connect(this._onMenuMenuRequested, this);\n menu.title.changed.connect(this._onTitleChanged, this);\n // Schedule an update of the items.\n this.update();\n // There is nothing more to do.\n return;\n }\n // Otherwise, the menu exists in the array and should be moved.\n // Adjust the index if the location is at the end of the array.\n if (j === this._menus.length) {\n j--;\n }\n // Bail if there is no effective move.\n if (i === j) {\n return;\n }\n // Move the menu to the new locations.\n algorithm_1.ArrayExt.move(this._menus, i, j);\n // Schedule an update of the items.\n this.update();\n };\n /**\n * Remove a menu from the menu bar.\n *\n * @param menu - The menu to remove from the menu bar.\n *\n * #### Notes\n * This is a no-op if the menu is not in the menu bar.\n */\n MenuBar.prototype.removeMenu = function (menu) {\n this.removeMenuAt(this._menus.indexOf(menu));\n };\n /**\n * Remove the menu at a given index from the menu bar.\n *\n * @param index - The index of the menu to remove.\n *\n * #### Notes\n * This is a no-op if the index is out of range.\n */\n MenuBar.prototype.removeMenuAt = function (index) {\n // Close the child menu before making changes.\n this._closeChildMenu();\n // Remove the menu from the array.\n var menu = algorithm_1.ArrayExt.removeAt(this._menus, index);\n // Bail if the index is out of range.\n if (!menu) {\n return;\n }\n // Disconnect from the menu signals.\n menu.aboutToClose.disconnect(this._onMenuAboutToClose, this);\n menu.menuRequested.disconnect(this._onMenuMenuRequested, this);\n menu.title.changed.disconnect(this._onTitleChanged, this);\n // Remove the styling class from the menu.\n menu.removeClass('p-MenuBar-menu');\n // Schedule an update of the items.\n this.update();\n };\n /**\n * Remove all menus from the menu bar.\n */\n MenuBar.prototype.clearMenus = function () {\n // Bail if there is nothing to remove.\n if (this._menus.length === 0) {\n return;\n }\n // Close the child menu before making changes.\n this._closeChildMenu();\n // Disconnect from the menu signals and remove the styling class.\n for (var _i = 0, _a = this._menus; _i < _a.length; _i++) {\n var menu = _a[_i];\n menu.aboutToClose.disconnect(this._onMenuAboutToClose, this);\n menu.menuRequested.disconnect(this._onMenuMenuRequested, this);\n menu.title.changed.disconnect(this._onTitleChanged, this);\n menu.removeClass('p-MenuBar-menu');\n }\n // Clear the menus array.\n this._menus.length = 0;\n // Schedule an update of the items.\n this.update();\n };\n /**\n * Handle the DOM events for the menu bar.\n *\n * @param event - The DOM event sent to the menu bar.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the menu bar's DOM nodes. It\n * should not be called directly by user code.\n */\n MenuBar.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'keydown':\n this._evtKeyDown(event);\n break;\n case 'mousedown':\n this._evtMouseDown(event);\n break;\n case 'mousemove':\n this._evtMouseMove(event);\n break;\n case 'mouseleave':\n this._evtMouseLeave(event);\n break;\n case 'contextmenu':\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n MenuBar.prototype.onBeforeAttach = function (msg) {\n this.node.addEventListener('keydown', this);\n this.node.addEventListener('mousedown', this);\n this.node.addEventListener('mousemove', this);\n this.node.addEventListener('mouseleave', this);\n this.node.addEventListener('contextmenu', this);\n };\n /**\n * A message handler invoked on an `'after-detach'` message.\n */\n MenuBar.prototype.onAfterDetach = function (msg) {\n this.node.removeEventListener('keydown', this);\n this.node.removeEventListener('mousedown', this);\n this.node.removeEventListener('mousemove', this);\n this.node.removeEventListener('mouseleave', this);\n this.node.removeEventListener('contextmenu', this);\n this._closeChildMenu();\n };\n /**\n * A message handler invoked on an `'activate-request'` message.\n */\n MenuBar.prototype.onActivateRequest = function (msg) {\n if (this.isAttached) {\n this.node.focus();\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n MenuBar.prototype.onUpdateRequest = function (msg) {\n var menus = this._menus;\n var renderer = this.renderer;\n var activeIndex = this._activeIndex;\n var content = new Array(menus.length);\n for (var i = 0, n = menus.length; i < n; ++i) {\n var title = menus[i].title;\n var active = i === activeIndex;\n content[i] = renderer.renderItem({ title: title, active: active });\n }\n virtualdom_1.VirtualDOM.render(content, this.contentNode);\n };\n /**\n * Handle the `'keydown'` event for the menu bar.\n */\n MenuBar.prototype._evtKeyDown = function (event) {\n // A menu bar handles all keydown events.\n event.preventDefault();\n event.stopPropagation();\n // Fetch the key code for the event.\n var kc = event.keyCode;\n // Enter, Up Arrow, Down Arrow\n if (kc === 13 || kc === 38 || kc === 40) {\n this.openActiveMenu();\n return;\n }\n // Escape\n if (kc === 27) {\n this._closeChildMenu();\n this.activeIndex = -1;\n this.node.blur();\n return;\n }\n // Left Arrow\n if (kc === 37) {\n var i = this._activeIndex;\n var n = this._menus.length;\n this.activeIndex = i === 0 ? n - 1 : i - 1;\n return;\n }\n // Right Arrow\n if (kc === 39) {\n var i = this._activeIndex;\n var n = this._menus.length;\n this.activeIndex = i === n - 1 ? 0 : i + 1;\n return;\n }\n // Get the pressed key character.\n var key = keyboard_1.getKeyboardLayout().keyForKeydownEvent(event);\n // Bail if the key is not valid.\n if (!key) {\n return;\n }\n // Search for the next best matching mnemonic item.\n var start = this._activeIndex + 1;\n var result = Private.findMnemonic(this._menus, key, start);\n // Handle the requested mnemonic based on the search results.\n // If exactly one mnemonic is matched, that menu is opened.\n // Otherwise, the next mnemonic is activated if available,\n // followed by the auto mnemonic if available.\n if (result.index !== -1 && !result.multiple) {\n this.activeIndex = result.index;\n this.openActiveMenu();\n }\n else if (result.index !== -1) {\n this.activeIndex = result.index;\n }\n else if (result.auto !== -1) {\n this.activeIndex = result.auto;\n }\n };\n /**\n * Handle the `'mousedown'` event for the menu bar.\n */\n MenuBar.prototype._evtMouseDown = function (event) {\n // Bail if the mouse press was not on the menu bar. This can occur\n // when the document listener is installed for an active menu bar.\n if (!domutils_1.ElementExt.hitTest(this.node, event.clientX, event.clientY)) {\n return;\n }\n // Stop the propagation of the event. Immediate propagation is\n // also stopped so that an open menu does not handle the event.\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n // Check if the mouse is over one of the menu items.\n var index = algorithm_1.ArrayExt.findFirstIndex(this.contentNode.children, function (node) {\n return domutils_1.ElementExt.hitTest(node, event.clientX, event.clientY);\n });\n // If the press was not on an item, close the child menu.\n if (index === -1) {\n this._closeChildMenu();\n return;\n }\n // If the press was not the left mouse button, do nothing further.\n if (event.button !== 0) {\n return;\n }\n // Otherwise, toggle the open state of the child menu.\n if (this._childMenu) {\n this._closeChildMenu();\n this.activeIndex = index;\n }\n else {\n this.activeIndex = index;\n this._openChildMenu();\n }\n };\n /**\n * Handle the `'mousemove'` event for the menu bar.\n */\n MenuBar.prototype._evtMouseMove = function (event) {\n // Check if the mouse is over one of the menu items.\n var index = algorithm_1.ArrayExt.findFirstIndex(this.contentNode.children, function (node) {\n return domutils_1.ElementExt.hitTest(node, event.clientX, event.clientY);\n });\n // Bail early if the active index will not change.\n if (index === this._activeIndex) {\n return;\n }\n // Bail early if a child menu is open and the mouse is not over\n // an item. This allows the child menu to be kept open when the\n // mouse is over the empty part of the menu bar.\n if (index === -1 && this._childMenu) {\n return;\n }\n // Update the active index to the hovered item.\n this.activeIndex = index;\n // Open the new menu if a menu is already open.\n if (this._childMenu) {\n this._openChildMenu();\n }\n };\n /**\n * Handle the `'mouseleave'` event for the menu bar.\n */\n MenuBar.prototype._evtMouseLeave = function (event) {\n // Reset the active index if there is no open menu.\n if (!this._childMenu) {\n this.activeIndex = -1;\n }\n };\n /**\n * Open the child menu at the active index immediately.\n *\n * If a different child menu is already open, it will be closed,\n * even if there is no active menu.\n */\n MenuBar.prototype._openChildMenu = function () {\n // If there is no active menu, close the current menu.\n var newMenu = this.activeMenu;\n if (!newMenu) {\n this._closeChildMenu();\n return;\n }\n // Bail if there is no effective menu change.\n var oldMenu = this._childMenu;\n if (oldMenu === newMenu) {\n return;\n }\n // Swap the internal menu reference.\n this._childMenu = newMenu;\n // Close the current menu, or setup for the new menu.\n if (oldMenu) {\n oldMenu.close();\n }\n else {\n this.addClass('p-mod-active');\n document.addEventListener('mousedown', this, true);\n }\n // Ensure the menu bar is updated and look up the item node.\n messaging_1.MessageLoop.sendMessage(this, widget_1.Widget.Msg.UpdateRequest);\n var itemNode = this.contentNode.children[this._activeIndex];\n // Get the positioning data for the new menu.\n var _a = itemNode.getBoundingClientRect(), left = _a.left, bottom = _a.bottom;\n // Open the new menu at the computed location.\n newMenu.open(left, bottom, { forceX: true, forceY: true });\n };\n /**\n * Close the child menu immediately.\n *\n * This is a no-op if a child menu is not open.\n */\n MenuBar.prototype._closeChildMenu = function () {\n // Bail if no child menu is open.\n if (!this._childMenu) {\n return;\n }\n // Remove the active class from the menu bar.\n this.removeClass('p-mod-active');\n // Remove the document listeners.\n document.removeEventListener('mousedown', this, true);\n // Clear the internal menu reference.\n var menu = this._childMenu;\n this._childMenu = null;\n // Close the menu.\n menu.close();\n // Reset the active index.\n this.activeIndex = -1;\n };\n /**\n * Handle the `aboutToClose` signal of a menu.\n */\n MenuBar.prototype._onMenuAboutToClose = function (sender) {\n // Bail if the sender is not the child menu.\n if (sender !== this._childMenu) {\n return;\n }\n // Remove the active class from the menu bar.\n this.removeClass('p-mod-active');\n // Remove the document listeners.\n document.removeEventListener('mousedown', this, true);\n // Clear the internal menu reference.\n this._childMenu = null;\n // Reset the active index.\n this.activeIndex = -1;\n };\n /**\n * Handle the `menuRequested` signal of a child menu.\n */\n MenuBar.prototype._onMenuMenuRequested = function (sender, args) {\n // Bail if the sender is not the child menu.\n if (sender !== this._childMenu) {\n return;\n }\n // Look up the active index and menu count.\n var i = this._activeIndex;\n var n = this._menus.length;\n // Active the next requested index.\n switch (args) {\n case 'next':\n this.activeIndex = i === n - 1 ? 0 : i + 1;\n break;\n case 'previous':\n this.activeIndex = i === 0 ? n - 1 : i - 1;\n break;\n }\n // Open the active menu.\n this.openActiveMenu();\n };\n /**\n * Handle the `changed` signal of a title object.\n */\n MenuBar.prototype._onTitleChanged = function () {\n this.update();\n };\n return MenuBar;\n}(widget_1.Widget));\nexports.MenuBar = MenuBar;\n/**\n * The namespace for the `MenuBar` class statics.\n */\n(function (MenuBar) {\n /**\n * The default implementation of `IRenderer`.\n *\n * #### Notes\n * Subclasses are free to reimplement rendering methods as needed.\n */\n var Renderer = /** @class */ (function () {\n /**\n * Construct a new renderer.\n */\n function Renderer() {\n }\n /**\n * Render the virtual element for a menu bar item.\n *\n * @param data - The data to use for rendering the item.\n *\n * @returns A virtual element representing the item.\n */\n Renderer.prototype.renderItem = function (data) {\n var className = this.createItemClass(data);\n var dataset = this.createItemDataset(data);\n return (virtualdom_1.h.li({ className: className, dataset: dataset }, this.renderIcon(data), this.renderLabel(data)));\n };\n /**\n * Render the icon element for a menu bar item.\n *\n * @param data - The data to use for rendering the icon.\n *\n * @returns A virtual element representing the item icon.\n */\n Renderer.prototype.renderIcon = function (data) {\n var className = this.createIconClass(data);\n return virtualdom_1.h.div({ className: className }, data.title.iconLabel);\n };\n /**\n * Render the label element for a menu item.\n *\n * @param data - The data to use for rendering the label.\n *\n * @returns A virtual element representing the item label.\n */\n Renderer.prototype.renderLabel = function (data) {\n var content = this.formatLabel(data);\n return virtualdom_1.h.div({ className: 'p-MenuBar-itemLabel' }, content);\n };\n /**\n * Create the class name for the menu bar item.\n *\n * @param data - The data to use for the class name.\n *\n * @returns The full class name for the menu item.\n */\n Renderer.prototype.createItemClass = function (data) {\n var name = 'p-MenuBar-item';\n if (data.title.className) {\n name += \" \" + data.title.className;\n }\n if (data.active) {\n name += ' p-mod-active';\n }\n return name;\n };\n /**\n * Create the dataset for a menu bar item.\n *\n * @param data - The data to use for the item.\n *\n * @returns The dataset for the menu bar item.\n */\n Renderer.prototype.createItemDataset = function (data) {\n return data.title.dataset;\n };\n /**\n * Create the class name for the menu bar item icon.\n *\n * @param data - The data to use for the class name.\n *\n * @returns The full class name for the item icon.\n */\n Renderer.prototype.createIconClass = function (data) {\n var name = 'p-MenuBar-itemIcon';\n var extra = data.title.iconClass;\n return extra ? name + \" \" + extra : name;\n };\n /**\n * Create the render content for the label node.\n *\n * @param data - The data to use for the label content.\n *\n * @returns The content to add to the label node.\n */\n Renderer.prototype.formatLabel = function (data) {\n // Fetch the label text and mnemonic index.\n var _a = data.title, label = _a.label, mnemonic = _a.mnemonic;\n // If the index is out of range, do not modify the label.\n if (mnemonic < 0 || mnemonic >= label.length) {\n return label;\n }\n // Split the label into parts.\n var prefix = label.slice(0, mnemonic);\n var suffix = label.slice(mnemonic + 1);\n var char = label[mnemonic];\n // Wrap the mnemonic character in a span.\n var span = virtualdom_1.h.span({ className: 'p-MenuBar-itemMnemonic' }, char);\n // Return the content parts.\n return [prefix, span, suffix];\n };\n return Renderer;\n }());\n MenuBar.Renderer = Renderer;\n /**\n * The default `Renderer` instance.\n */\n MenuBar.defaultRenderer = new Renderer();\n})(MenuBar = exports.MenuBar || (exports.MenuBar = {}));\nexports.MenuBar = MenuBar;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create the DOM node for a menu bar.\n */\n function createNode() {\n var node = document.createElement('div');\n var content = document.createElement('ul');\n content.className = 'p-MenuBar-content';\n node.appendChild(content);\n node.tabIndex = -1;\n return node;\n }\n Private.createNode = createNode;\n /**\n * Find the best matching mnemonic item.\n *\n * The search starts at the given index and wraps around.\n */\n function findMnemonic(menus, key, start) {\n // Setup the result variables.\n var index = -1;\n var auto = -1;\n var multiple = false;\n // Normalize the key to upper case.\n var upperKey = key.toUpperCase();\n // Search the items from the given start index.\n for (var i = 0, n = menus.length; i < n; ++i) {\n // Compute the wrapped index.\n var k = (i + start) % n;\n // Look up the menu title.\n var title = menus[k].title;\n // Ignore titles with an empty label.\n if (title.label.length === 0) {\n continue;\n }\n // Look up the mnemonic index for the label.\n var mn = title.mnemonic;\n // Handle a valid mnemonic index.\n if (mn >= 0 && mn < title.label.length) {\n if (title.label[mn].toUpperCase() === upperKey) {\n if (index === -1) {\n index = k;\n }\n else {\n multiple = true;\n }\n }\n continue;\n }\n // Finally, handle the auto index if possible.\n if (auto === -1 && title.label[0].toUpperCase() === upperKey) {\n auto = k;\n }\n }\n // Return the search results.\n return { index: index, multiple: multiple, auto: auto };\n }\n Private.findMnemonic = findMnemonic;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/menubar.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/panel.js": +/*!*****************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/panel.js ***! + \*****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar panellayout_1 = __webpack_require__(/*! ./panellayout */ \"./node_modules/@phosphor/widgets/lib/panellayout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A simple and convenient panel widget class.\n *\n * #### Notes\n * This class is suitable as a base class for implementing a variety of\n * convenience panel widgets, but can also be used directly with CSS to\n * arrange a collection of widgets.\n *\n * This class provides a convenience wrapper around a [[PanelLayout]].\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n /**\n * Construct a new panel.\n *\n * @param options - The options for initializing the panel.\n */\n function Panel(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this.addClass('p-Panel');\n _this.layout = Private.createLayout(options);\n return _this;\n }\n Object.defineProperty(Panel.prototype, \"widgets\", {\n /**\n * A read-only array of the widgets in the panel.\n */\n get: function () {\n return this.layout.widgets;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Add a widget to the end of the panel.\n *\n * @param widget - The widget to add to the panel.\n *\n * #### Notes\n * If the widget is already contained in the panel, it will be moved.\n */\n Panel.prototype.addWidget = function (widget) {\n this.layout.addWidget(widget);\n };\n /**\n * Insert a widget at the specified index.\n *\n * @param index - The index at which to insert the widget.\n *\n * @param widget - The widget to insert into to the panel.\n *\n * #### Notes\n * If the widget is already contained in the panel, it will be moved.\n */\n Panel.prototype.insertWidget = function (index, widget) {\n this.layout.insertWidget(index, widget);\n };\n return Panel;\n}(widget_1.Widget));\nexports.Panel = Panel;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create a panel layout for the given panel options.\n */\n function createLayout(options) {\n return options.layout || new panellayout_1.PanelLayout();\n }\n Private.createLayout = createLayout;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/panel.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/panellayout.js": +/*!***********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/panellayout.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar layout_1 = __webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A concrete layout implementation suitable for many use cases.\n *\n * #### Notes\n * This class is suitable as a base class for implementing a variety of\n * layouts, but can also be used directly with standard CSS to layout a\n * collection of widgets.\n */\nvar PanelLayout = /** @class */ (function (_super) {\n __extends(PanelLayout, _super);\n function PanelLayout() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._widgets = [];\n return _this;\n }\n /**\n * Dispose of the resources held by the layout.\n *\n * #### Notes\n * This will clear and dispose all widgets in the layout.\n *\n * All reimplementations should call the superclass method.\n *\n * This method is called automatically when the parent is disposed.\n */\n PanelLayout.prototype.dispose = function () {\n while (this._widgets.length > 0) {\n this._widgets.pop().dispose();\n }\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(PanelLayout.prototype, \"widgets\", {\n /**\n * A read-only array of the widgets in the layout.\n */\n get: function () {\n return this._widgets;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Create an iterator over the widgets in the layout.\n *\n * @returns A new iterator over the widgets in the layout.\n */\n PanelLayout.prototype.iter = function () {\n return algorithm_1.iter(this._widgets);\n };\n /**\n * Add a widget to the end of the layout.\n *\n * @param widget - The widget to add to the layout.\n *\n * #### Notes\n * If the widget is already contained in the layout, it will be moved.\n */\n PanelLayout.prototype.addWidget = function (widget) {\n this.insertWidget(this._widgets.length, widget);\n };\n /**\n * Insert a widget into the layout at the specified index.\n *\n * @param index - The index at which to insert the widget.\n *\n * @param widget - The widget to insert into the layout.\n *\n * #### Notes\n * The index will be clamped to the bounds of the widgets.\n *\n * If the widget is already added to the layout, it will be moved.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n */\n PanelLayout.prototype.insertWidget = function (index, widget) {\n // Remove the widget from its current parent. This is a no-op\n // if the widget's parent is already the layout parent widget.\n widget.parent = this.parent;\n // Look up the current index of the widget.\n var i = this._widgets.indexOf(widget);\n // Clamp the insert index to the array bounds.\n var j = Math.max(0, Math.min(index, this._widgets.length));\n // If the widget is not in the array, insert it.\n if (i === -1) {\n // Insert the widget into the array.\n algorithm_1.ArrayExt.insert(this._widgets, j, widget);\n // If the layout is parented, attach the widget to the DOM.\n if (this.parent) {\n this.attachWidget(j, widget);\n }\n // There is nothing more to do.\n return;\n }\n // Otherwise, the widget exists in the array and should be moved.\n // Adjust the index if the location is at the end of the array.\n if (j === this._widgets.length) {\n j--;\n }\n // Bail if there is no effective move.\n if (i === j) {\n return;\n }\n // Move the widget to the new location.\n algorithm_1.ArrayExt.move(this._widgets, i, j);\n // If the layout is parented, move the widget in the DOM.\n if (this.parent) {\n this.moveWidget(i, j, widget);\n }\n };\n /**\n * Remove a widget from the layout.\n *\n * @param widget - The widget to remove from the layout.\n *\n * #### Notes\n * A widget is automatically removed from the layout when its `parent`\n * is set to `null`. This method should only be invoked directly when\n * removing a widget from a layout which has yet to be installed on a\n * parent widget.\n *\n * This method does *not* modify the widget's `parent`.\n */\n PanelLayout.prototype.removeWidget = function (widget) {\n this.removeWidgetAt(this._widgets.indexOf(widget));\n };\n /**\n * Remove the widget at a given index from the layout.\n *\n * @param index - The index of the widget to remove.\n *\n * #### Notes\n * A widget is automatically removed from the layout when its `parent`\n * is set to `null`. This method should only be invoked directly when\n * removing a widget from a layout which has yet to be installed on a\n * parent widget.\n *\n * This method does *not* modify the widget's `parent`.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n */\n PanelLayout.prototype.removeWidgetAt = function (index) {\n // Remove the widget from the array.\n var widget = algorithm_1.ArrayExt.removeAt(this._widgets, index);\n // If the layout is parented, detach the widget from the DOM.\n if (widget && this.parent) {\n this.detachWidget(index, widget);\n }\n };\n /**\n * Perform layout initialization which requires the parent widget.\n */\n PanelLayout.prototype.init = function () {\n var _this = this;\n _super.prototype.init.call(this);\n algorithm_1.each(this, function (widget, index) {\n _this.attachWidget(index, widget);\n });\n };\n /**\n * Attach a widget to the parent's DOM node.\n *\n * @param index - The current index of the widget in the layout.\n *\n * @param widget - The widget to attach to the parent.\n *\n * #### Notes\n * This method is called automatically by the panel layout at the\n * appropriate time. It should not be called directly by user code.\n *\n * The default implementation adds the widgets's node to the parent's\n * node at the proper location, and sends the appropriate attach\n * messages to the widget if the parent is attached to the DOM.\n *\n * Subclasses may reimplement this method to control how the widget's\n * node is added to the parent's node.\n */\n PanelLayout.prototype.attachWidget = function (index, widget) {\n // Look up the next sibling reference node.\n var ref = this.parent.node.children[index];\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Insert the widget's node before the sibling.\n this.parent.node.insertBefore(widget.node, ref);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n };\n /**\n * Move a widget in the parent's DOM node.\n *\n * @param fromIndex - The previous index of the widget in the layout.\n *\n * @param toIndex - The current index of the widget in the layout.\n *\n * @param widget - The widget to move in the parent.\n *\n * #### Notes\n * This method is called automatically by the panel layout at the\n * appropriate time. It should not be called directly by user code.\n *\n * The default implementation moves the widget's node to the proper\n * location in the parent's node and sends the appropriate attach and\n * detach messages to the widget if the parent is attached to the DOM.\n *\n * Subclasses may reimplement this method to control how the widget's\n * node is moved in the parent's node.\n */\n PanelLayout.prototype.moveWidget = function (fromIndex, toIndex, widget) {\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget's node from the parent.\n this.parent.node.removeChild(widget.node);\n // Send an `'after-detach'` and message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n // Look up the next sibling reference node.\n var ref = this.parent.node.children[toIndex];\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Insert the widget's node before the sibling.\n this.parent.node.insertBefore(widget.node, ref);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n };\n /**\n * Detach a widget from the parent's DOM node.\n *\n * @param index - The previous index of the widget in the layout.\n *\n * @param widget - The widget to detach from the parent.\n *\n * #### Notes\n * This method is called automatically by the panel layout at the\n * appropriate time. It should not be called directly by user code.\n *\n * The default implementation removes the widget's node from the\n * parent's node, and sends the appropriate detach messages to the\n * widget if the parent is attached to the DOM.\n *\n * Subclasses may reimplement this method to control how the widget's\n * node is removed from the parent's node.\n */\n PanelLayout.prototype.detachWidget = function (index, widget) {\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget's node from the parent.\n this.parent.node.removeChild(widget.node);\n // Send an `'after-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n };\n return PanelLayout;\n}(layout_1.Layout));\nexports.PanelLayout = PanelLayout;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/panellayout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/scrollbar.js": +/*!*********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/scrollbar.js ***! + \*********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar dragdrop_1 = __webpack_require__(/*! @phosphor/dragdrop */ \"./node_modules/@phosphor/dragdrop/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A widget which implements a canonical scroll bar.\n */\nvar ScrollBar = /** @class */ (function (_super) {\n __extends(ScrollBar, _super);\n /**\n * Construct a new scroll bar.\n *\n * @param options - The options for initializing the scroll bar.\n */\n function ScrollBar(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, { node: Private.createNode() }) || this;\n /**\n * A timeout callback for repeating the mouse press.\n */\n _this._onRepeat = function () {\n // Clear the repeat timer id.\n _this._repeatTimer = -1;\n // Bail if the mouse has been released.\n if (!_this._pressData) {\n return;\n }\n // Look up the part that was pressed.\n var part = _this._pressData.part;\n // Bail if the thumb was pressed.\n if (part === 'thumb') {\n return;\n }\n // Schedule the timer for another repeat.\n _this._repeatTimer = window.setTimeout(_this._onRepeat, 20);\n // Get the current mouse position.\n var mouseX = _this._pressData.mouseX;\n var mouseY = _this._pressData.mouseY;\n // Handle a decrement button repeat.\n if (part === 'decrement') {\n // Bail if the mouse is not over the button.\n if (!domutils_1.ElementExt.hitTest(_this.decrementNode, mouseX, mouseY)) {\n return;\n }\n // Emit the step requested signal.\n _this._stepRequested.emit('decrement');\n // Finished.\n return;\n }\n // Handle an increment button repeat.\n if (part === 'increment') {\n // Bail if the mouse is not over the button.\n if (!domutils_1.ElementExt.hitTest(_this.incrementNode, mouseX, mouseY)) {\n return;\n }\n // Emit the step requested signal.\n _this._stepRequested.emit('increment');\n // Finished.\n return;\n }\n // Handle a track repeat.\n if (part === 'track') {\n // Bail if the mouse is not over the track.\n if (!domutils_1.ElementExt.hitTest(_this.trackNode, mouseX, mouseY)) {\n return;\n }\n // Fetch the thumb node.\n var thumbNode = _this.thumbNode;\n // Bail if the mouse is over the thumb.\n if (domutils_1.ElementExt.hitTest(thumbNode, mouseX, mouseY)) {\n return;\n }\n // Fetch the client rect for the thumb.\n var thumbRect = thumbNode.getBoundingClientRect();\n // Determine the direction for the page request.\n var dir = void 0;\n if (_this._orientation === 'horizontal') {\n dir = mouseX < thumbRect.left ? 'decrement' : 'increment';\n }\n else {\n dir = mouseY < thumbRect.top ? 'decrement' : 'increment';\n }\n // Emit the page requested signal.\n _this._pageRequested.emit(dir);\n // Finished.\n return;\n }\n };\n _this._value = 0;\n _this._page = 10;\n _this._maximum = 100;\n _this._repeatTimer = -1;\n _this._pressData = null;\n _this._thumbMoved = new signaling_1.Signal(_this);\n _this._stepRequested = new signaling_1.Signal(_this);\n _this._pageRequested = new signaling_1.Signal(_this);\n _this.addClass('p-ScrollBar');\n _this.setFlag(widget_1.Widget.Flag.DisallowLayout);\n // Set the orientation.\n _this._orientation = options.orientation || 'vertical';\n _this.dataset['orientation'] = _this._orientation;\n // Parse the rest of the options.\n if (options.maximum !== undefined) {\n _this._maximum = Math.max(0, options.maximum);\n }\n if (options.page !== undefined) {\n _this._page = Math.max(0, options.page);\n }\n if (options.value !== undefined) {\n _this._value = Math.max(0, Math.min(options.value, _this._maximum));\n }\n return _this;\n }\n Object.defineProperty(ScrollBar.prototype, \"thumbMoved\", {\n /**\n * A signal emitted when the user moves the scroll thumb.\n *\n * #### Notes\n * The payload is the current value of the scroll bar.\n */\n get: function () {\n return this._thumbMoved;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"stepRequested\", {\n /**\n * A signal emitted when the user clicks a step button.\n *\n * #### Notes\n * The payload is whether a decrease or increase is requested.\n */\n get: function () {\n return this._stepRequested;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"pageRequested\", {\n /**\n * A signal emitted when the user clicks the scroll track.\n *\n * #### Notes\n * The payload is whether a decrease or increase is requested.\n */\n get: function () {\n return this._pageRequested;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"orientation\", {\n /**\n * Get the orientation of the scroll bar.\n */\n get: function () {\n return this._orientation;\n },\n /**\n * Set the orientation of the scroll bar.\n */\n set: function (value) {\n // Do nothing if the orientation does not change.\n if (this._orientation === value) {\n return;\n }\n // Release the mouse before making changes.\n this._releaseMouse();\n // Update the internal orientation.\n this._orientation = value;\n this.dataset['orientation'] = value;\n // Schedule an update the scroll bar.\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"value\", {\n /**\n * Get the current value of the scroll bar.\n */\n get: function () {\n return this._value;\n },\n /**\n * Set the current value of the scroll bar.\n *\n * #### Notes\n * The value will be clamped to the range `[0, maximum]`.\n */\n set: function (value) {\n // Clamp the value to the allowable range.\n value = Math.max(0, Math.min(value, this._maximum));\n // Do nothing if the value does not change.\n if (this._value === value) {\n return;\n }\n // Update the internal value.\n this._value = value;\n // Schedule an update the scroll bar.\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"page\", {\n /**\n * Get the page size of the scroll bar.\n *\n * #### Notes\n * The page size is the amount of visible content in the scrolled\n * region, expressed in data units. It determines the size of the\n * scroll bar thumb.\n */\n get: function () {\n return this._page;\n },\n /**\n * Set the page size of the scroll bar.\n *\n * #### Notes\n * The page size will be clamped to the range `[0, Infinity]`.\n */\n set: function (value) {\n // Clamp the page size to the allowable range.\n value = Math.max(0, value);\n // Do nothing if the value does not change.\n if (this._page === value) {\n return;\n }\n // Update the internal page size.\n this._page = value;\n // Schedule an update the scroll bar.\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"maximum\", {\n /**\n * Get the maximum value of the scroll bar.\n */\n get: function () {\n return this._maximum;\n },\n /**\n * Set the maximum value of the scroll bar.\n *\n * #### Notes\n * The max size will be clamped to the range `[0, Infinity]`.\n */\n set: function (value) {\n // Clamp the value to the allowable range.\n value = Math.max(0, value);\n // Do nothing if the value does not change.\n if (this._maximum === value) {\n return;\n }\n // Update the internal values.\n this._maximum = value;\n // Clamp the current value to the new range.\n this._value = Math.min(this._value, value);\n // Schedule an update the scroll bar.\n this.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"decrementNode\", {\n /**\n * The scroll bar decrement button node.\n *\n * #### Notes\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-ScrollBar-button')[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"incrementNode\", {\n /**\n * The scroll bar increment button node.\n *\n * #### Notes\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-ScrollBar-button')[1];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"trackNode\", {\n /**\n * The scroll bar track node.\n *\n * #### Notes\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-ScrollBar-track')[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScrollBar.prototype, \"thumbNode\", {\n /**\n * The scroll bar thumb node.\n *\n * #### Notes\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-ScrollBar-thumb')[0];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Handle the DOM events for the scroll bar.\n *\n * @param event - The DOM event sent to the scroll bar.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the scroll bar's DOM node.\n *\n * This should not be called directly by user code.\n */\n ScrollBar.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'mousedown':\n this._evtMouseDown(event);\n break;\n case 'mousemove':\n this._evtMouseMove(event);\n break;\n case 'mouseup':\n this._evtMouseUp(event);\n break;\n case 'keydown':\n this._evtKeyDown(event);\n break;\n case 'contextmenu':\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n };\n /**\n * A method invoked on a 'before-attach' message.\n */\n ScrollBar.prototype.onBeforeAttach = function (msg) {\n this.node.addEventListener('mousedown', this);\n this.update();\n };\n /**\n * A method invoked on an 'after-detach' message.\n */\n ScrollBar.prototype.onAfterDetach = function (msg) {\n this.node.removeEventListener('mousedown', this);\n this._releaseMouse();\n };\n /**\n * A method invoked on an 'update-request' message.\n */\n ScrollBar.prototype.onUpdateRequest = function (msg) {\n // Convert the value and page into percentages.\n var value = this._value * 100 / this._maximum;\n var page = this._page * 100 / (this._page + this._maximum);\n // Clamp the value and page to the relevant range.\n value = Math.max(0, Math.min(value, 100));\n page = Math.max(0, Math.min(page, 100));\n // Fetch the thumb style.\n var thumbStyle = this.thumbNode.style;\n // Update the thumb style for the current orientation.\n if (this._orientation === 'horizontal') {\n thumbStyle.top = '';\n thumbStyle.height = '';\n thumbStyle.left = value + \"%\";\n thumbStyle.width = page + \"%\";\n thumbStyle.transform = \"translate(\" + -value + \"%, 0%)\";\n }\n else {\n thumbStyle.left = '';\n thumbStyle.width = '';\n thumbStyle.top = value + \"%\";\n thumbStyle.height = page + \"%\";\n thumbStyle.transform = \"translate(0%, \" + -value + \"%)\";\n }\n };\n /**\n * Handle the `'keydown'` event for the scroll bar.\n */\n ScrollBar.prototype._evtKeyDown = function (event) {\n // Stop all input events during drag.\n event.preventDefault();\n event.stopPropagation();\n // Ignore anything except the `Escape` key.\n if (event.keyCode !== 27) {\n return;\n }\n // Fetch the previous scroll value.\n var value = this._pressData ? this._pressData.value : -1;\n // Release the mouse.\n this._releaseMouse();\n // Restore the old scroll value if possible.\n if (value !== -1) {\n this._moveThumb(value);\n }\n };\n /**\n * Handle the `'mousedown'` event for the scroll bar.\n */\n ScrollBar.prototype._evtMouseDown = function (event) {\n // Do nothing if it's not a left mouse press.\n if (event.button !== 0) {\n return;\n }\n // Send an activate request to the scroll bar. This can be\n // used by message hooks to activate something relevant.\n this.activate();\n // Do nothing if the mouse is already captured.\n if (this._pressData) {\n return;\n }\n // Find the pressed scroll bar part.\n var part = Private.findPart(this, event.target);\n // Do nothing if the part is not of interest.\n if (!part) {\n return;\n }\n // Stop the event propagation.\n event.preventDefault();\n event.stopPropagation();\n // Override the mouse cursor.\n var override = dragdrop_1.Drag.overrideCursor('default');\n // Set up the press data.\n this._pressData = {\n part: part, override: override,\n delta: -1, value: -1,\n mouseX: event.clientX,\n mouseY: event.clientY\n };\n // Add the extra event listeners.\n document.addEventListener('mousemove', this, true);\n document.addEventListener('mouseup', this, true);\n document.addEventListener('keydown', this, true);\n document.addEventListener('contextmenu', this, true);\n // Handle a thumb press.\n if (part === 'thumb') {\n // Fetch the thumb node.\n var thumbNode = this.thumbNode;\n // Fetch the client rect for the thumb.\n var thumbRect = thumbNode.getBoundingClientRect();\n // Update the press data delta for the current orientation.\n if (this._orientation === 'horizontal') {\n this._pressData.delta = event.clientX - thumbRect.left;\n }\n else {\n this._pressData.delta = event.clientY - thumbRect.top;\n }\n // Add the active class to the thumb node.\n thumbNode.classList.add('p-mod-active');\n // Store the current value in the press data.\n this._pressData.value = this._value;\n // Finished.\n return;\n }\n // Handle a track press.\n if (part === 'track') {\n // Fetch the client rect for the thumb.\n var thumbRect = this.thumbNode.getBoundingClientRect();\n // Determine the direction for the page request.\n var dir = void 0;\n if (this._orientation === 'horizontal') {\n dir = event.clientX < thumbRect.left ? 'decrement' : 'increment';\n }\n else {\n dir = event.clientY < thumbRect.top ? 'decrement' : 'increment';\n }\n // Start the repeat timer.\n this._repeatTimer = window.setTimeout(this._onRepeat, 350);\n // Emit the page requested signal.\n this._pageRequested.emit(dir);\n // Finished.\n return;\n }\n // Handle a decrement button press.\n if (part === 'decrement') {\n // Add the active class to the decrement node.\n this.decrementNode.classList.add('p-mod-active');\n // Start the repeat timer.\n this._repeatTimer = window.setTimeout(this._onRepeat, 350);\n // Emit the step requested signal.\n this._stepRequested.emit('decrement');\n // Finished.\n return;\n }\n // Handle an increment button press.\n if (part === 'increment') {\n // Add the active class to the increment node.\n this.incrementNode.classList.add('p-mod-active');\n // Start the repeat timer.\n this._repeatTimer = window.setTimeout(this._onRepeat, 350);\n // Emit the step requested signal.\n this._stepRequested.emit('increment');\n // Finished.\n return;\n }\n };\n /**\n * Handle the `'mousemove'` event for the scroll bar.\n */\n ScrollBar.prototype._evtMouseMove = function (event) {\n // Do nothing if no drag is in progress.\n if (!this._pressData) {\n return;\n }\n // Stop the event propagation.\n event.preventDefault();\n event.stopPropagation();\n // Update the mouse position.\n this._pressData.mouseX = event.clientX;\n this._pressData.mouseY = event.clientY;\n // Bail if the thumb is not being dragged.\n if (this._pressData.part !== 'thumb') {\n return;\n }\n // Get the client rect for the thumb and track.\n var thumbRect = this.thumbNode.getBoundingClientRect();\n var trackRect = this.trackNode.getBoundingClientRect();\n // Fetch the scroll geometry based on the orientation.\n var trackPos;\n var trackSpan;\n if (this._orientation === 'horizontal') {\n trackPos = event.clientX - trackRect.left - this._pressData.delta;\n trackSpan = trackRect.width - thumbRect.width;\n }\n else {\n trackPos = event.clientY - trackRect.top - this._pressData.delta;\n trackSpan = trackRect.height - thumbRect.height;\n }\n // Compute the desired value from the scroll geometry.\n var value = trackSpan === 0 ? 0 : trackPos * this._maximum / trackSpan;\n // Move the thumb to the computed value.\n this._moveThumb(value);\n };\n /**\n * Handle the `'mouseup'` event for the scroll bar.\n */\n ScrollBar.prototype._evtMouseUp = function (event) {\n // Do nothing if it's not a left mouse release.\n if (event.button !== 0) {\n return;\n }\n // Stop the event propagation.\n event.preventDefault();\n event.stopPropagation();\n // Release the mouse.\n this._releaseMouse();\n };\n /**\n * Release the mouse and restore the node states.\n */\n ScrollBar.prototype._releaseMouse = function () {\n // Bail if there is no press data.\n if (!this._pressData) {\n return;\n }\n // Clear the repeat timer.\n clearTimeout(this._repeatTimer);\n this._repeatTimer = -1;\n // Clear the press data.\n this._pressData.override.dispose();\n this._pressData = null;\n // Remove the extra event listeners.\n document.removeEventListener('mousemove', this, true);\n document.removeEventListener('mouseup', this, true);\n document.removeEventListener('keydown', this, true);\n document.removeEventListener('contextmenu', this, true);\n // Remove the active classes from the nodes.\n this.thumbNode.classList.remove('p-mod-active');\n this.decrementNode.classList.remove('p-mod-active');\n this.incrementNode.classList.remove('p-mod-active');\n };\n /**\n * Move the thumb to the specified position.\n */\n ScrollBar.prototype._moveThumb = function (value) {\n // Clamp the value to the allowed range.\n value = Math.max(0, Math.min(value, this._maximum));\n // Bail if the value does not change.\n if (this._value === value) {\n return;\n }\n // Update the internal value.\n this._value = value;\n // Schedule an update of the scroll bar.\n this.update();\n // Emit the thumb moved signal.\n this._thumbMoved.emit(value);\n };\n return ScrollBar;\n}(widget_1.Widget));\nexports.ScrollBar = ScrollBar;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create the DOM node for a scroll bar.\n */\n function createNode() {\n var node = document.createElement('div');\n var decrement = document.createElement('div');\n var increment = document.createElement('div');\n var track = document.createElement('div');\n var thumb = document.createElement('div');\n decrement.className = 'p-ScrollBar-button';\n increment.className = 'p-ScrollBar-button';\n decrement.dataset['action'] = 'decrement';\n increment.dataset['action'] = 'increment';\n track.className = 'p-ScrollBar-track';\n thumb.className = 'p-ScrollBar-thumb';\n track.appendChild(thumb);\n node.appendChild(decrement);\n node.appendChild(track);\n node.appendChild(increment);\n return node;\n }\n Private.createNode = createNode;\n /**\n * Find the scroll bar part which contains the given target.\n */\n function findPart(scrollBar, target) {\n // Test the thumb.\n if (scrollBar.thumbNode.contains(target)) {\n return 'thumb';\n }\n // Test the track.\n if (scrollBar.trackNode.contains(target)) {\n return 'track';\n }\n // Test the decrement button.\n if (scrollBar.decrementNode.contains(target)) {\n return 'decrement';\n }\n // Test the increment button.\n if (scrollBar.incrementNode.contains(target)) {\n return 'increment';\n }\n // Indicate no match.\n return null;\n }\n Private.findPart = findPart;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/scrollbar.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/singletonlayout.js": +/*!***************************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/singletonlayout.js ***! + \***************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar layout_1 = __webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A concrete layout implementation which holds a single widget.\n *\n * #### Notes\n * This class is useful for creating simple container widgets which\n * hold a single child. The child should be positioned with CSS.\n */\nvar SingletonLayout = /** @class */ (function (_super) {\n __extends(SingletonLayout, _super);\n function SingletonLayout() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._widget = null;\n return _this;\n }\n /**\n * Dispose of the resources held by the layout.\n */\n SingletonLayout.prototype.dispose = function () {\n if (this._widget) {\n var widget = this._widget;\n this._widget = null;\n widget.dispose();\n }\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(SingletonLayout.prototype, \"widget\", {\n /**\n * Get the child widget for the layout.\n */\n get: function () {\n return this._widget;\n },\n /**\n * Set the child widget for the layout.\n *\n * #### Notes\n * Setting the child widget will cause the old child widget to be\n * automatically disposed. If that is not desired, set the parent\n * of the old child to `null` before assigning a new child.\n */\n set: function (widget) {\n // Remove the widget from its current parent. This is a no-op\n // if the widget's parent is already the layout parent widget.\n if (widget) {\n widget.parent = this.parent;\n }\n // Bail early if the widget does not change.\n if (this._widget === widget) {\n return;\n }\n // Dispose of the old child widget.\n if (this._widget) {\n this._widget.dispose();\n }\n // Update the internal widget.\n this._widget = widget;\n // Attach the new child widget if needed.\n if (this.parent && widget) {\n this.attachWidget(widget);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Create an iterator over the widgets in the layout.\n *\n * @returns A new iterator over the widgets in the layout.\n */\n SingletonLayout.prototype.iter = function () {\n return this._widget ? algorithm_1.once(this._widget) : algorithm_1.empty();\n };\n /**\n * Remove a widget from the layout.\n *\n * @param widget - The widget to remove from the layout.\n *\n * #### Notes\n * A widget is automatically removed from the layout when its `parent`\n * is set to `null`. This method should only be invoked directly when\n * removing a widget from a layout which has yet to be installed on a\n * parent widget.\n *\n * This method does *not* modify the widget's `parent`.\n */\n SingletonLayout.prototype.removeWidget = function (widget) {\n // Bail early if the widget does not exist in the layout.\n if (this._widget !== widget) {\n return;\n }\n // Clear the internal widget.\n this._widget = null;\n // If the layout is parented, detach the widget from the DOM.\n if (this.parent) {\n this.detachWidget(widget);\n }\n };\n /**\n * Perform layout initialization which requires the parent widget.\n */\n SingletonLayout.prototype.init = function () {\n var _this = this;\n _super.prototype.init.call(this);\n algorithm_1.each(this, function (widget) { _this.attachWidget(widget); });\n };\n /**\n * Attach a widget to the parent's DOM node.\n *\n * @param index - The current index of the widget in the layout.\n *\n * @param widget - The widget to attach to the parent.\n *\n * #### Notes\n * This method is called automatically by the single layout at the\n * appropriate time. It should not be called directly by user code.\n *\n * The default implementation adds the widgets's node to the parent's\n * node at the proper location, and sends the appropriate attach\n * messages to the widget if the parent is attached to the DOM.\n *\n * Subclasses may reimplement this method to control how the widget's\n * node is added to the parent's node.\n */\n SingletonLayout.prototype.attachWidget = function (widget) {\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Add the widget's node to the parent.\n this.parent.node.appendChild(widget.node);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n };\n /**\n * Detach a widget from the parent's DOM node.\n *\n * @param widget - The widget to detach from the parent.\n *\n * #### Notes\n * This method is called automatically by the single layout at the\n * appropriate time. It should not be called directly by user code.\n *\n * The default implementation removes the widget's node from the\n * parent's node, and sends the appropriate detach messages to the\n * widget if the parent is attached to the DOM.\n *\n * Subclasses may reimplement this method to control how the widget's\n * node is removed from the parent's node.\n */\n SingletonLayout.prototype.detachWidget = function (widget) {\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget's node from the parent.\n this.parent.node.removeChild(widget.node);\n // Send an `'after-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n };\n return SingletonLayout;\n}(layout_1.Layout));\nexports.SingletonLayout = SingletonLayout;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/singletonlayout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/splitlayout.js": +/*!***********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/splitlayout.js ***! + \***********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar properties_1 = __webpack_require__(/*! @phosphor/properties */ \"./node_modules/@phosphor/properties/lib/index.js\");\nvar boxengine_1 = __webpack_require__(/*! ./boxengine */ \"./node_modules/@phosphor/widgets/lib/boxengine.js\");\nvar layout_1 = __webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\");\nvar panellayout_1 = __webpack_require__(/*! ./panellayout */ \"./node_modules/@phosphor/widgets/lib/panellayout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A layout which arranges its widgets into resizable sections.\n */\nvar SplitLayout = /** @class */ (function (_super) {\n __extends(SplitLayout, _super);\n /**\n * Construct a new split layout.\n *\n * @param options - The options for initializing the layout.\n */\n function SplitLayout(options) {\n var _this = _super.call(this) || this;\n _this._fixed = 0;\n _this._spacing = 4;\n _this._dirty = false;\n _this._hasNormedSizes = false;\n _this._sizers = [];\n _this._items = [];\n _this._handles = [];\n _this._box = null;\n _this._alignment = 'start';\n _this._orientation = 'horizontal';\n _this.renderer = options.renderer;\n if (options.orientation !== undefined) {\n _this._orientation = options.orientation;\n }\n if (options.alignment !== undefined) {\n _this._alignment = options.alignment;\n }\n if (options.spacing !== undefined) {\n _this._spacing = Private.clampSpacing(options.spacing);\n }\n return _this;\n }\n /**\n * Dispose of the resources held by the layout.\n */\n SplitLayout.prototype.dispose = function () {\n // Dispose of the layout items.\n algorithm_1.each(this._items, function (item) { item.dispose(); });\n // Clear the layout state.\n this._box = null;\n this._items.length = 0;\n this._sizers.length = 0;\n this._handles.length = 0;\n // Dispose of the rest of the layout.\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(SplitLayout.prototype, \"orientation\", {\n /**\n * Get the layout orientation for the split layout.\n */\n get: function () {\n return this._orientation;\n },\n /**\n * Set the layout orientation for the split layout.\n */\n set: function (value) {\n if (this._orientation === value) {\n return;\n }\n this._orientation = value;\n if (!this.parent) {\n return;\n }\n this.parent.dataset['orientation'] = value;\n this.parent.fit();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitLayout.prototype, \"alignment\", {\n /**\n * Get the content alignment for the split layout.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire split layout.\n */\n get: function () {\n return this._alignment;\n },\n /**\n * Set the content alignment for the split layout.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire split layout.\n */\n set: function (value) {\n if (this._alignment === value) {\n return;\n }\n this._alignment = value;\n if (!this.parent) {\n return;\n }\n this.parent.dataset['alignment'] = value;\n this.parent.update();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitLayout.prototype, \"spacing\", {\n /**\n * Get the inter-element spacing for the split layout.\n */\n get: function () {\n return this._spacing;\n },\n /**\n * Set the inter-element spacing for the split layout.\n */\n set: function (value) {\n value = Private.clampSpacing(value);\n if (this._spacing === value) {\n return;\n }\n this._spacing = value;\n if (!this.parent) {\n return;\n }\n this.parent.fit();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitLayout.prototype, \"handles\", {\n /**\n * A read-only array of the split handles in the layout.\n */\n get: function () {\n return this._handles;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get the relative sizes of the widgets in the layout.\n *\n * @returns A new array of the relative sizes of the widgets.\n *\n * #### Notes\n * The returned sizes reflect the sizes of the widgets normalized\n * relative to their siblings.\n *\n * This method **does not** measure the DOM nodes.\n */\n SplitLayout.prototype.relativeSizes = function () {\n return Private.normalize(this._sizers.map(function (sizer) { return sizer.size; }));\n };\n /**\n * Set the relative sizes for the widgets in the layout.\n *\n * @param sizes - The relative sizes for the widgets in the panel.\n *\n * #### Notes\n * Extra values are ignored, too few will yield an undefined layout.\n *\n * The actual geometry of the DOM nodes is updated asynchronously.\n */\n SplitLayout.prototype.setRelativeSizes = function (sizes) {\n // Copy the sizes and pad with zeros as needed.\n var n = this._sizers.length;\n var temp = sizes.slice(0, n);\n while (temp.length < n) {\n temp.push(0);\n }\n // Normalize the padded sizes.\n var normed = Private.normalize(temp);\n // Apply the normalized sizes to the sizers.\n for (var i = 0; i < n; ++i) {\n var sizer = this._sizers[i];\n sizer.sizeHint = normed[i];\n sizer.size = normed[i];\n }\n // Set the flag indicating the sizes are normalized.\n this._hasNormedSizes = true;\n // Trigger an update of the parent widget.\n if (this.parent) {\n this.parent.update();\n }\n };\n /**\n * Move the offset position of a split handle.\n *\n * @param index - The index of the handle of the interest.\n *\n * @param position - The desired offset position of the handle.\n *\n * #### Notes\n * The position is relative to the offset parent.\n *\n * This will move the handle as close as possible to the desired\n * position. The sibling widgets will be adjusted as necessary.\n */\n SplitLayout.prototype.moveHandle = function (index, position) {\n // Bail if the index is invalid or the handle is hidden.\n var handle = this._handles[index];\n if (!handle || handle.classList.contains('p-mod-hidden')) {\n return;\n }\n // Compute the desired delta movement for the handle.\n var delta;\n if (this._orientation === 'horizontal') {\n delta = position - handle.offsetLeft;\n }\n else {\n delta = position - handle.offsetTop;\n }\n // Bail if there is no handle movement.\n if (delta === 0) {\n return;\n }\n // Prevent widget resizing unless needed.\n for (var _i = 0, _a = this._sizers; _i < _a.length; _i++) {\n var sizer = _a[_i];\n if (sizer.size > 0) {\n sizer.sizeHint = sizer.size;\n }\n }\n // Adjust the sizers to reflect the handle movement.\n boxengine_1.BoxEngine.adjust(this._sizers, index, delta);\n // Update the layout of the widgets.\n if (this.parent) {\n this.parent.update();\n }\n };\n /**\n * Perform layout initialization which requires the parent widget.\n */\n SplitLayout.prototype.init = function () {\n this.parent.dataset['orientation'] = this.orientation;\n this.parent.dataset['alignment'] = this.alignment;\n _super.prototype.init.call(this);\n };\n /**\n * Attach a widget to the parent's DOM node.\n *\n * @param index - The current index of the widget in the layout.\n *\n * @param widget - The widget to attach to the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n SplitLayout.prototype.attachWidget = function (index, widget) {\n // Create the item, handle, and sizer for the new widget.\n var item = new layout_1.LayoutItem(widget);\n var handle = Private.createHandle(this.renderer);\n var average = Private.averageSize(this._sizers);\n var sizer = Private.createSizer(average);\n // Insert the item, handle, and sizer into the internal arrays.\n algorithm_1.ArrayExt.insert(this._items, index, item);\n algorithm_1.ArrayExt.insert(this._sizers, index, sizer);\n algorithm_1.ArrayExt.insert(this._handles, index, handle);\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Add the widget and handle nodes to the parent.\n this.parent.node.appendChild(widget.node);\n this.parent.node.appendChild(handle);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * Move a widget in the parent's DOM node.\n *\n * @param fromIndex - The previous index of the widget in the layout.\n *\n * @param toIndex - The current index of the widget in the layout.\n *\n * @param widget - The widget to move in the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n SplitLayout.prototype.moveWidget = function (fromIndex, toIndex, widget) {\n // Move the item, sizer, and handle for the widget.\n algorithm_1.ArrayExt.move(this._items, fromIndex, toIndex);\n algorithm_1.ArrayExt.move(this._sizers, fromIndex, toIndex);\n algorithm_1.ArrayExt.move(this._handles, fromIndex, toIndex);\n // Post a fit request to the parent to show/hide last handle.\n this.parent.fit();\n };\n /**\n * Detach a widget from the parent's DOM node.\n *\n * @param index - The previous index of the widget in the layout.\n *\n * @param widget - The widget to detach from the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n SplitLayout.prototype.detachWidget = function (index, widget) {\n // Remove the item, handle, and sizer for the widget.\n var item = algorithm_1.ArrayExt.removeAt(this._items, index);\n var handle = algorithm_1.ArrayExt.removeAt(this._handles, index);\n algorithm_1.ArrayExt.removeAt(this._sizers, index);\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget and handle nodes from the parent.\n this.parent.node.removeChild(widget.node);\n this.parent.node.removeChild(handle);\n // Send an `'after-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n // Dispose of the layout item.\n item.dispose();\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'before-show'` message.\n */\n SplitLayout.prototype.onBeforeShow = function (msg) {\n _super.prototype.onBeforeShow.call(this, msg);\n this.parent.update();\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n SplitLayout.prototype.onBeforeAttach = function (msg) {\n _super.prototype.onBeforeAttach.call(this, msg);\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-shown'` message.\n */\n SplitLayout.prototype.onChildShown = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-hidden'` message.\n */\n SplitLayout.prototype.onChildHidden = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'resize'` message.\n */\n SplitLayout.prototype.onResize = function (msg) {\n if (this.parent.isVisible) {\n this._update(msg.width, msg.height);\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n SplitLayout.prototype.onUpdateRequest = function (msg) {\n if (this.parent.isVisible) {\n this._update(-1, -1);\n }\n };\n /**\n * A message handler invoked on a `'fit-request'` message.\n */\n SplitLayout.prototype.onFitRequest = function (msg) {\n if (this.parent.isAttached) {\n this._fit();\n }\n };\n /**\n * Fit the layout to the total size required by the widgets.\n */\n SplitLayout.prototype._fit = function () {\n // Update the handles and track the visible widget count.\n var nVisible = 0;\n var lastHandleIndex = -1;\n for (var i = 0, n = this._items.length; i < n; ++i) {\n if (this._items[i].isHidden) {\n this._handles[i].classList.add('p-mod-hidden');\n }\n else {\n this._handles[i].classList.remove('p-mod-hidden');\n lastHandleIndex = i;\n nVisible++;\n }\n }\n // Hide the handle for the last visible widget.\n if (lastHandleIndex !== -1) {\n this._handles[lastHandleIndex].classList.add('p-mod-hidden');\n }\n // Update the fixed space for the visible items.\n this._fixed = this._spacing * Math.max(0, nVisible - 1);\n // Setup the computed minimum size.\n var horz = this._orientation === 'horizontal';\n var minW = horz ? this._fixed : 0;\n var minH = horz ? 0 : this._fixed;\n // Update the sizers and computed size limits.\n for (var i = 0, n = this._items.length; i < n; ++i) {\n // Fetch the item and corresponding box sizer.\n var item = this._items[i];\n var sizer = this._sizers[i];\n // Prevent resizing unless necessary.\n if (sizer.size > 0) {\n sizer.sizeHint = sizer.size;\n }\n // If the item is hidden, it should consume zero size.\n if (item.isHidden) {\n sizer.minSize = 0;\n sizer.maxSize = 0;\n continue;\n }\n // Update the size limits for the item.\n item.fit();\n // Update the stretch factor.\n sizer.stretch = SplitLayout.getStretch(item.widget);\n // Update the sizer limits and computed min size.\n if (horz) {\n sizer.minSize = item.minWidth;\n sizer.maxSize = item.maxWidth;\n minW += item.minWidth;\n minH = Math.max(minH, item.minHeight);\n }\n else {\n sizer.minSize = item.minHeight;\n sizer.maxSize = item.maxHeight;\n minH += item.minHeight;\n minW = Math.max(minW, item.minWidth);\n }\n }\n // Update the box sizing and add it to the computed min size.\n var box = this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n minW += box.horizontalSum;\n minH += box.verticalSum;\n // Update the parent's min size constraints.\n var style = this.parent.node.style;\n style.minWidth = minW + \"px\";\n style.minHeight = minH + \"px\";\n // Set the dirty flag to ensure only a single update occurs.\n this._dirty = true;\n // Notify the ancestor that it should fit immediately. This may\n // cause a resize of the parent, fulfilling the required update.\n if (this.parent.parent) {\n messaging_1.MessageLoop.sendMessage(this.parent.parent, widget_1.Widget.Msg.FitRequest);\n }\n // If the dirty flag is still set, the parent was not resized.\n // Trigger the required update on the parent widget immediately.\n if (this._dirty) {\n messaging_1.MessageLoop.sendMessage(this.parent, widget_1.Widget.Msg.UpdateRequest);\n }\n };\n /**\n * Update the layout position and size of the widgets.\n *\n * The parent offset dimensions should be `-1` if unknown.\n */\n SplitLayout.prototype._update = function (offsetWidth, offsetHeight) {\n // Clear the dirty flag to indicate the update occurred.\n this._dirty = false;\n // Compute the visible item count.\n var nVisible = 0;\n for (var i = 0, n = this._items.length; i < n; ++i) {\n nVisible += +!this._items[i].isHidden;\n }\n // Bail early if there are no visible items to layout.\n if (nVisible === 0) {\n return;\n }\n // Measure the parent if the offset dimensions are unknown.\n if (offsetWidth < 0) {\n offsetWidth = this.parent.node.offsetWidth;\n }\n if (offsetHeight < 0) {\n offsetHeight = this.parent.node.offsetHeight;\n }\n // Ensure the parent box sizing data is computed.\n if (!this._box) {\n this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n }\n // Compute the actual layout bounds adjusted for border and padding.\n var top = this._box.paddingTop;\n var left = this._box.paddingLeft;\n var width = offsetWidth - this._box.horizontalSum;\n var height = offsetHeight - this._box.verticalSum;\n // Compute the adjusted layout space.\n var space;\n var horz = this._orientation === 'horizontal';\n if (horz) {\n space = Math.max(0, width - this._fixed);\n }\n else {\n space = Math.max(0, height - this._fixed);\n }\n // Scale the size hints if they are normalized.\n if (this._hasNormedSizes) {\n for (var _i = 0, _a = this._sizers; _i < _a.length; _i++) {\n var sizer = _a[_i];\n sizer.sizeHint *= space;\n }\n this._hasNormedSizes = false;\n }\n // Distribute the layout space to the box sizers.\n var delta = boxengine_1.BoxEngine.calc(this._sizers, space);\n // Set up the variables for justification and alignment offset.\n var extra = 0;\n var offset = 0;\n // Account for alignment if there is extra layout space.\n if (delta > 0) {\n switch (this._alignment) {\n case 'start':\n break;\n case 'center':\n extra = 0;\n offset = delta / 2;\n break;\n case 'end':\n extra = 0;\n offset = delta;\n break;\n case 'justify':\n extra = delta / nVisible;\n offset = 0;\n break;\n default:\n throw 'unreachable';\n }\n }\n // Layout the items using the computed box sizes.\n for (var i = 0, n = this._items.length; i < n; ++i) {\n // Fetch the item.\n var item = this._items[i];\n // Ignore hidden items.\n if (item.isHidden) {\n continue;\n }\n // Fetch the computed size for the widget.\n var size = this._sizers[i].size;\n // Fetch the style for the handle.\n var handleStyle = this._handles[i].style;\n // Update the widget and handle, and advance the relevant edge.\n if (horz) {\n item.update(left + offset, top, size + extra, height);\n left += size + extra;\n handleStyle.top = top + \"px\";\n handleStyle.left = left + offset + \"px\";\n handleStyle.width = this._spacing + \"px\";\n handleStyle.height = height + \"px\";\n left += this._spacing;\n }\n else {\n item.update(left, top + offset, width, size + extra);\n top += size + extra;\n handleStyle.top = top + offset + \"px\";\n handleStyle.left = left + \"px\";\n handleStyle.width = width + \"px\";\n handleStyle.height = this._spacing + \"px\";\n top += this._spacing;\n }\n }\n };\n return SplitLayout;\n}(panellayout_1.PanelLayout));\nexports.SplitLayout = SplitLayout;\n/**\n * The namespace for the `SplitLayout` class statics.\n */\n(function (SplitLayout) {\n /**\n * Get the split layout stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The split layout stretch factor for the widget.\n */\n function getStretch(widget) {\n return Private.stretchProperty.get(widget);\n }\n SplitLayout.getStretch = getStretch;\n /**\n * Set the split layout stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the stretch factor.\n */\n function setStretch(widget, value) {\n Private.stretchProperty.set(widget, value);\n }\n SplitLayout.setStretch = setStretch;\n})(SplitLayout = exports.SplitLayout || (exports.SplitLayout = {}));\nexports.SplitLayout = SplitLayout;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The property descriptor for a widget stretch factor.\n */\n Private.stretchProperty = new properties_1.AttachedProperty({\n name: 'stretch',\n create: function () { return 0; },\n coerce: function (owner, value) { return Math.max(0, Math.floor(value)); },\n changed: onChildSizingChanged\n });\n /**\n * Create a new box sizer with the given size hint.\n */\n function createSizer(size) {\n var sizer = new boxengine_1.BoxSizer();\n sizer.sizeHint = Math.floor(size);\n return sizer;\n }\n Private.createSizer = createSizer;\n /**\n * Create a new split handle node using the given renderer.\n */\n function createHandle(renderer) {\n var handle = renderer.createHandle();\n handle.style.position = 'absolute';\n return handle;\n }\n Private.createHandle = createHandle;\n /**\n * Clamp a spacing value to an integer >= 0.\n */\n function clampSpacing(value) {\n return Math.max(0, Math.floor(value));\n }\n Private.clampSpacing = clampSpacing;\n /**\n * Compute the average size of an array of box sizers.\n */\n function averageSize(sizers) {\n return sizers.reduce(function (v, s) { return v + s.size; }, 0) / sizers.length || 0;\n }\n Private.averageSize = averageSize;\n /**\n * Normalize an array of values.\n */\n function normalize(values) {\n var n = values.length;\n if (n === 0) {\n return [];\n }\n var sum = values.reduce(function (a, b) { return a + Math.abs(b); }, 0);\n return sum === 0 ? values.map(function (v) { return 1 / n; }) : values.map(function (v) { return v / sum; });\n }\n Private.normalize = normalize;\n /**\n * The change handler for the attached sizing properties.\n */\n function onChildSizingChanged(child) {\n if (child.parent && child.parent.layout instanceof SplitLayout) {\n child.parent.fit();\n }\n }\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/splitlayout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/splitpanel.js": +/*!**********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/splitpanel.js ***! + \**********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar dragdrop_1 = __webpack_require__(/*! @phosphor/dragdrop */ \"./node_modules/@phosphor/dragdrop/lib/index.js\");\nvar panel_1 = __webpack_require__(/*! ./panel */ \"./node_modules/@phosphor/widgets/lib/panel.js\");\nvar splitlayout_1 = __webpack_require__(/*! ./splitlayout */ \"./node_modules/@phosphor/widgets/lib/splitlayout.js\");\n/**\n * A panel which arranges its widgets into resizable sections.\n *\n * #### Notes\n * This class provides a convenience wrapper around a [[SplitLayout]].\n */\nvar SplitPanel = /** @class */ (function (_super) {\n __extends(SplitPanel, _super);\n /**\n * Construct a new split panel.\n *\n * @param options - The options for initializing the split panel.\n */\n function SplitPanel(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, { layout: Private.createLayout(options) }) || this;\n _this._pressData = null;\n _this.addClass('p-SplitPanel');\n return _this;\n }\n /**\n * Dispose of the resources held by the panel.\n */\n SplitPanel.prototype.dispose = function () {\n this._releaseMouse();\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(SplitPanel.prototype, \"orientation\", {\n /**\n * Get the layout orientation for the split panel.\n */\n get: function () {\n return this.layout.orientation;\n },\n /**\n * Set the layout orientation for the split panel.\n */\n set: function (value) {\n this.layout.orientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitPanel.prototype, \"alignment\", {\n /**\n * Get the content alignment for the split panel.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire split panel.\n */\n get: function () {\n return this.layout.alignment;\n },\n /**\n * Set the content alignment for the split panel.\n *\n * #### Notes\n * This is the alignment of the widgets in the layout direction.\n *\n * The alignment has no effect if the widgets can expand to fill the\n * entire split panel.\n */\n set: function (value) {\n this.layout.alignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitPanel.prototype, \"spacing\", {\n /**\n * Get the inter-element spacing for the split panel.\n */\n get: function () {\n return this.layout.spacing;\n },\n /**\n * Set the inter-element spacing for the split panel.\n */\n set: function (value) {\n this.layout.spacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitPanel.prototype, \"renderer\", {\n /**\n * The renderer used by the split panel.\n */\n get: function () {\n return this.layout.renderer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SplitPanel.prototype, \"handles\", {\n /**\n * A read-only array of the split handles in the panel.\n */\n get: function () {\n return this.layout.handles;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get the relative sizes of the widgets in the panel.\n *\n * @returns A new array of the relative sizes of the widgets.\n *\n * #### Notes\n * The returned sizes reflect the sizes of the widgets normalized\n * relative to their siblings.\n *\n * This method **does not** measure the DOM nodes.\n */\n SplitPanel.prototype.relativeSizes = function () {\n return this.layout.relativeSizes();\n };\n /**\n * Set the relative sizes for the widgets in the panel.\n *\n * @param sizes - The relative sizes for the widgets in the panel.\n *\n * #### Notes\n * Extra values are ignored, too few will yield an undefined layout.\n *\n * The actual geometry of the DOM nodes is updated asynchronously.\n */\n SplitPanel.prototype.setRelativeSizes = function (sizes) {\n this.layout.setRelativeSizes(sizes);\n };\n /**\n * Handle the DOM events for the split panel.\n *\n * @param event - The DOM event sent to the panel.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the panel's DOM node. It should\n * not be called directly by user code.\n */\n SplitPanel.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'mousedown':\n this._evtMouseDown(event);\n break;\n case 'mousemove':\n this._evtMouseMove(event);\n break;\n case 'mouseup':\n this._evtMouseUp(event);\n break;\n case 'keydown':\n this._evtKeyDown(event);\n break;\n case 'contextmenu':\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n SplitPanel.prototype.onBeforeAttach = function (msg) {\n this.node.addEventListener('mousedown', this);\n };\n /**\n * A message handler invoked on an `'after-detach'` message.\n */\n SplitPanel.prototype.onAfterDetach = function (msg) {\n this.node.removeEventListener('mousedown', this);\n this._releaseMouse();\n };\n /**\n * A message handler invoked on a `'child-added'` message.\n */\n SplitPanel.prototype.onChildAdded = function (msg) {\n msg.child.addClass('p-SplitPanel-child');\n this._releaseMouse();\n };\n /**\n * A message handler invoked on a `'child-removed'` message.\n */\n SplitPanel.prototype.onChildRemoved = function (msg) {\n msg.child.removeClass('p-SplitPanel-child');\n this._releaseMouse();\n };\n /**\n * Handle the `'keydown'` event for the split panel.\n */\n SplitPanel.prototype._evtKeyDown = function (event) {\n // Stop input events during drag.\n event.preventDefault();\n event.stopPropagation();\n // Release the mouse if `Escape` is pressed.\n if (event.keyCode === 27) {\n this._releaseMouse();\n }\n };\n /**\n * Handle the `'mousedown'` event for the split panel.\n */\n SplitPanel.prototype._evtMouseDown = function (event) {\n // Do nothing if the left mouse button is not pressed.\n if (event.button !== 0) {\n return;\n }\n // Find the handle which contains the mouse target, if any.\n var layout = this.layout;\n var index = algorithm_1.ArrayExt.findFirstIndex(layout.handles, function (handle) {\n return handle.contains(event.target);\n });\n // Bail early if the mouse press was not on a handle.\n if (index === -1) {\n return;\n }\n // Stop the event when a split handle is pressed.\n event.preventDefault();\n event.stopPropagation();\n // Add the extra document listeners.\n document.addEventListener('mouseup', this, true);\n document.addEventListener('mousemove', this, true);\n document.addEventListener('keydown', this, true);\n document.addEventListener('contextmenu', this, true);\n // Compute the offset delta for the handle press.\n var delta;\n var handle = layout.handles[index];\n var rect = handle.getBoundingClientRect();\n if (layout.orientation === 'horizontal') {\n delta = event.clientX - rect.left;\n }\n else {\n delta = event.clientY - rect.top;\n }\n // Override the cursor and store the press data.\n var style = window.getComputedStyle(handle);\n var override = dragdrop_1.Drag.overrideCursor(style.cursor);\n this._pressData = { index: index, delta: delta, override: override };\n };\n /**\n * Handle the `'mousemove'` event for the split panel.\n */\n SplitPanel.prototype._evtMouseMove = function (event) {\n // Stop the event when dragging a split handle.\n event.preventDefault();\n event.stopPropagation();\n // Compute the desired offset position for the handle.\n var pos;\n var layout = this.layout;\n var rect = this.node.getBoundingClientRect();\n if (layout.orientation === 'horizontal') {\n pos = event.clientX - rect.left - this._pressData.delta;\n }\n else {\n pos = event.clientY - rect.top - this._pressData.delta;\n }\n // Move the handle as close to the desired position as possible.\n layout.moveHandle(this._pressData.index, pos);\n };\n /**\n * Handle the `'mouseup'` event for the split panel.\n */\n SplitPanel.prototype._evtMouseUp = function (event) {\n // Do nothing if the left mouse button is not released.\n if (event.button !== 0) {\n return;\n }\n // Stop the event when releasing a handle.\n event.preventDefault();\n event.stopPropagation();\n // Finalize the mouse release.\n this._releaseMouse();\n };\n /**\n * Release the mouse grab for the split panel.\n */\n SplitPanel.prototype._releaseMouse = function () {\n // Bail early if no drag is in progress.\n if (!this._pressData) {\n return;\n }\n // Clear the override cursor.\n this._pressData.override.dispose();\n this._pressData = null;\n // Remove the extra document listeners.\n document.removeEventListener('mouseup', this, true);\n document.removeEventListener('mousemove', this, true);\n document.removeEventListener('keydown', this, true);\n document.removeEventListener('contextmenu', this, true);\n };\n return SplitPanel;\n}(panel_1.Panel));\nexports.SplitPanel = SplitPanel;\n/**\n * The namespace for the `SplitPanel` class statics.\n */\n(function (SplitPanel) {\n /**\n * The default implementation of `IRenderer`.\n */\n var Renderer = /** @class */ (function () {\n function Renderer() {\n }\n /**\n * Create a new handle for use with a split panel.\n *\n * @returns A new handle element for a split panel.\n */\n Renderer.prototype.createHandle = function () {\n var handle = document.createElement('div');\n handle.className = 'p-SplitPanel-handle';\n return handle;\n };\n return Renderer;\n }());\n SplitPanel.Renderer = Renderer;\n /**\n * The default `Renderer` instance.\n */\n SplitPanel.defaultRenderer = new Renderer();\n /**\n * Get the split panel stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @returns The split panel stretch factor for the widget.\n */\n function getStretch(widget) {\n return splitlayout_1.SplitLayout.getStretch(widget);\n }\n SplitPanel.getStretch = getStretch;\n /**\n * Set the split panel stretch factor for the given widget.\n *\n * @param widget - The widget of interest.\n *\n * @param value - The value for the stretch factor.\n */\n function setStretch(widget, value) {\n splitlayout_1.SplitLayout.setStretch(widget, value);\n }\n SplitPanel.setStretch = setStretch;\n})(SplitPanel = exports.SplitPanel || (exports.SplitPanel = {}));\nexports.SplitPanel = SplitPanel;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create a split layout for the given panel options.\n */\n function createLayout(options) {\n return options.layout || new splitlayout_1.SplitLayout({\n renderer: options.renderer || SplitPanel.defaultRenderer,\n orientation: options.orientation,\n alignment: options.alignment,\n spacing: options.spacing\n });\n }\n Private.createLayout = createLayout;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/splitpanel.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/stackedlayout.js": +/*!*************************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/stackedlayout.js ***! + \*************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar layout_1 = __webpack_require__(/*! ./layout */ \"./node_modules/@phosphor/widgets/lib/layout.js\");\nvar panellayout_1 = __webpack_require__(/*! ./panellayout */ \"./node_modules/@phosphor/widgets/lib/panellayout.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A layout where visible widgets are stacked atop one another.\n *\n * #### Notes\n * The Z-order of the visible widgets follows their layout order.\n */\nvar StackedLayout = /** @class */ (function (_super) {\n __extends(StackedLayout, _super);\n function StackedLayout() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._dirty = false;\n _this._items = [];\n _this._box = null;\n return _this;\n }\n /**\n * Dispose of the resources held by the layout.\n */\n StackedLayout.prototype.dispose = function () {\n // Dispose of the layout items.\n algorithm_1.each(this._items, function (item) { item.dispose(); });\n // Clear the layout state.\n this._box = null;\n this._items.length = 0;\n // Dispose of the rest of the layout.\n _super.prototype.dispose.call(this);\n };\n /**\n * Attach a widget to the parent's DOM node.\n *\n * @param index - The current index of the widget in the layout.\n *\n * @param widget - The widget to attach to the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n StackedLayout.prototype.attachWidget = function (index, widget) {\n // Create and add a new layout item for the widget.\n algorithm_1.ArrayExt.insert(this._items, index, new layout_1.LayoutItem(widget));\n // Send a `'before-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeAttach);\n }\n // Add the widget's node to the parent.\n this.parent.node.appendChild(widget.node);\n // Send an `'after-attach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterAttach);\n }\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * Move a widget in the parent's DOM node.\n *\n * @param fromIndex - The previous index of the widget in the layout.\n *\n * @param toIndex - The current index of the widget in the layout.\n *\n * @param widget - The widget to move in the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n StackedLayout.prototype.moveWidget = function (fromIndex, toIndex, widget) {\n // Move the layout item for the widget.\n algorithm_1.ArrayExt.move(this._items, fromIndex, toIndex);\n // Post an update request for the parent widget.\n this.parent.update();\n };\n /**\n * Detach a widget from the parent's DOM node.\n *\n * @param index - The previous index of the widget in the layout.\n *\n * @param widget - The widget to detach from the parent.\n *\n * #### Notes\n * This is a reimplementation of the superclass method.\n */\n StackedLayout.prototype.detachWidget = function (index, widget) {\n // Remove the layout item for the widget.\n var item = algorithm_1.ArrayExt.removeAt(this._items, index);\n // Send a `'before-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.BeforeDetach);\n }\n // Remove the widget's node from the parent.\n this.parent.node.removeChild(widget.node);\n // Send an `'after-detach'` message if the parent is attached.\n if (this.parent.isAttached) {\n messaging_1.MessageLoop.sendMessage(widget, widget_1.Widget.Msg.AfterDetach);\n }\n // Reset the z-index for the widget.\n item.widget.node.style.zIndex = '';\n // Dispose of the layout item.\n item.dispose();\n // Post a fit request for the parent widget.\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'before-show'` message.\n */\n StackedLayout.prototype.onBeforeShow = function (msg) {\n _super.prototype.onBeforeShow.call(this, msg);\n this.parent.update();\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n StackedLayout.prototype.onBeforeAttach = function (msg) {\n _super.prototype.onBeforeAttach.call(this, msg);\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-shown'` message.\n */\n StackedLayout.prototype.onChildShown = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'child-hidden'` message.\n */\n StackedLayout.prototype.onChildHidden = function (msg) {\n this.parent.fit();\n };\n /**\n * A message handler invoked on a `'resize'` message.\n */\n StackedLayout.prototype.onResize = function (msg) {\n if (this.parent.isVisible) {\n this._update(msg.width, msg.height);\n }\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n StackedLayout.prototype.onUpdateRequest = function (msg) {\n if (this.parent.isVisible) {\n this._update(-1, -1);\n }\n };\n /**\n * A message handler invoked on a `'fit-request'` message.\n */\n StackedLayout.prototype.onFitRequest = function (msg) {\n if (this.parent.isAttached) {\n this._fit();\n }\n };\n /**\n * Fit the layout to the total size required by the widgets.\n */\n StackedLayout.prototype._fit = function () {\n // Set up the computed minimum size.\n var minW = 0;\n var minH = 0;\n // Update the computed minimum size.\n for (var i = 0, n = this._items.length; i < n; ++i) {\n // Fetch the item.\n var item = this._items[i];\n // Ignore hidden items.\n if (item.isHidden) {\n continue;\n }\n // Update the size limits for the item.\n item.fit();\n // Update the computed minimum size.\n minW = Math.max(minW, item.minWidth);\n minH = Math.max(minH, item.minHeight);\n }\n // Update the box sizing and add it to the computed min size.\n var box = this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n minW += box.horizontalSum;\n minH += box.verticalSum;\n // Update the parent's min size constraints.\n var style = this.parent.node.style;\n style.minWidth = minW + \"px\";\n style.minHeight = minH + \"px\";\n // Set the dirty flag to ensure only a single update occurs.\n this._dirty = true;\n // Notify the ancestor that it should fit immediately. This may\n // cause a resize of the parent, fulfilling the required update.\n if (this.parent.parent) {\n messaging_1.MessageLoop.sendMessage(this.parent.parent, widget_1.Widget.Msg.FitRequest);\n }\n // If the dirty flag is still set, the parent was not resized.\n // Trigger the required update on the parent widget immediately.\n if (this._dirty) {\n messaging_1.MessageLoop.sendMessage(this.parent, widget_1.Widget.Msg.UpdateRequest);\n }\n };\n /**\n * Update the layout position and size of the widgets.\n *\n * The parent offset dimensions should be `-1` if unknown.\n */\n StackedLayout.prototype._update = function (offsetWidth, offsetHeight) {\n // Clear the dirty flag to indicate the update occurred.\n this._dirty = false;\n // Compute the visible item count.\n var nVisible = 0;\n for (var i = 0, n = this._items.length; i < n; ++i) {\n nVisible += +!this._items[i].isHidden;\n }\n // Bail early if there are no visible items to layout.\n if (nVisible === 0) {\n return;\n }\n // Measure the parent if the offset dimensions are unknown.\n if (offsetWidth < 0) {\n offsetWidth = this.parent.node.offsetWidth;\n }\n if (offsetHeight < 0) {\n offsetHeight = this.parent.node.offsetHeight;\n }\n // Ensure the parent box sizing data is computed.\n if (!this._box) {\n this._box = domutils_1.ElementExt.boxSizing(this.parent.node);\n }\n // Compute the actual layout bounds adjusted for border and padding.\n var top = this._box.paddingTop;\n var left = this._box.paddingLeft;\n var width = offsetWidth - this._box.horizontalSum;\n var height = offsetHeight - this._box.verticalSum;\n // Update the widget stacking order and layout geometry.\n for (var i = 0, n = this._items.length; i < n; ++i) {\n // Fetch the item.\n var item = this._items[i];\n // Ignore hidden items.\n if (item.isHidden) {\n continue;\n }\n // Set the z-index for the widget.\n item.widget.node.style.zIndex = \"\" + i;\n // Update the item geometry.\n item.update(left, top, width, height);\n }\n };\n return StackedLayout;\n}(panellayout_1.PanelLayout));\nexports.StackedLayout = StackedLayout;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/stackedlayout.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/stackedpanel.js": +/*!************************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/stackedpanel.js ***! + \************************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar panel_1 = __webpack_require__(/*! ./panel */ \"./node_modules/@phosphor/widgets/lib/panel.js\");\nvar stackedlayout_1 = __webpack_require__(/*! ./stackedlayout */ \"./node_modules/@phosphor/widgets/lib/stackedlayout.js\");\n/**\n * A panel where visible widgets are stacked atop one another.\n *\n * #### Notes\n * This class provides a convenience wrapper around a [[StackedLayout]].\n */\nvar StackedPanel = /** @class */ (function (_super) {\n __extends(StackedPanel, _super);\n /**\n * Construct a new stacked panel.\n *\n * @param options - The options for initializing the panel.\n */\n function StackedPanel(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, { layout: Private.createLayout(options) }) || this;\n _this._widgetRemoved = new signaling_1.Signal(_this);\n _this.addClass('p-StackedPanel');\n return _this;\n }\n Object.defineProperty(StackedPanel.prototype, \"widgetRemoved\", {\n /**\n * A signal emitted when a widget is removed from a stacked panel.\n */\n get: function () {\n return this._widgetRemoved;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * A message handler invoked on a `'child-added'` message.\n */\n StackedPanel.prototype.onChildAdded = function (msg) {\n msg.child.addClass('p-StackedPanel-child');\n };\n /**\n * A message handler invoked on a `'child-removed'` message.\n */\n StackedPanel.prototype.onChildRemoved = function (msg) {\n msg.child.removeClass('p-StackedPanel-child');\n this._widgetRemoved.emit(msg.child);\n };\n return StackedPanel;\n}(panel_1.Panel));\nexports.StackedPanel = StackedPanel;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Create a stacked layout for the given panel options.\n */\n function createLayout(options) {\n return options.layout || new stackedlayout_1.StackedLayout();\n }\n Private.createLayout = createLayout;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/stackedpanel.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/tabbar.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/tabbar.js ***! + \******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar dragdrop_1 = __webpack_require__(/*! @phosphor/dragdrop */ \"./node_modules/@phosphor/dragdrop/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar virtualdom_1 = __webpack_require__(/*! @phosphor/virtualdom */ \"./node_modules/@phosphor/virtualdom/lib/index.js\");\nvar title_1 = __webpack_require__(/*! ./title */ \"./node_modules/@phosphor/widgets/lib/title.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A widget which displays titles as a single row or column of tabs.\n *\n * #### Notes\n * If CSS transforms are used to rotate nodes for vertically oriented\n * text, then tab dragging will not work correctly. The `tabsMovable`\n * property should be set to `false` when rotating nodes from CSS.\n */\nvar TabBar = /** @class */ (function (_super) {\n __extends(TabBar, _super);\n /**\n * Construct a new tab bar.\n *\n * @param options - The options for initializing the tab bar.\n */\n function TabBar(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, { node: Private.createNode() }) || this;\n _this._currentIndex = -1;\n _this._titles = [];\n _this._previousTitle = null;\n _this._dragData = null;\n _this._tabMoved = new signaling_1.Signal(_this);\n _this._currentChanged = new signaling_1.Signal(_this);\n _this._tabCloseRequested = new signaling_1.Signal(_this);\n _this._tabDetachRequested = new signaling_1.Signal(_this);\n _this._tabActivateRequested = new signaling_1.Signal(_this);\n _this.addClass('p-TabBar');\n _this.setFlag(widget_1.Widget.Flag.DisallowLayout);\n _this.tabsMovable = options.tabsMovable || false;\n _this.allowDeselect = options.allowDeselect || false;\n _this.insertBehavior = options.insertBehavior || 'select-tab-if-needed';\n _this.removeBehavior = options.removeBehavior || 'select-tab-after';\n _this.renderer = options.renderer || TabBar.defaultRenderer;\n _this._orientation = options.orientation || 'horizontal';\n _this.dataset['orientation'] = _this._orientation;\n return _this;\n }\n /**\n * Dispose of the resources held by the widget.\n */\n TabBar.prototype.dispose = function () {\n this._releaseMouse();\n this._titles.length = 0;\n this._previousTitle = null;\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(TabBar.prototype, \"currentChanged\", {\n /**\n * A signal emitted when the current tab is changed.\n *\n * #### Notes\n * This signal is emitted when the currently selected tab is changed\n * either through user or programmatic interaction.\n *\n * Notably, this signal is not emitted when the index of the current\n * tab changes due to tabs being inserted, removed, or moved. It is\n * only emitted when the actual current tab node is changed.\n */\n get: function () {\n return this._currentChanged;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"tabMoved\", {\n /**\n * A signal emitted when a tab is moved by the user.\n *\n * #### Notes\n * This signal is emitted when a tab is moved by user interaction.\n *\n * This signal is not emitted when a tab is moved programmatically.\n */\n get: function () {\n return this._tabMoved;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"tabActivateRequested\", {\n /**\n * A signal emitted when a tab is clicked by the user.\n *\n * #### Notes\n * If the clicked tab is not the current tab, the clicked tab will be\n * made current and the `currentChanged` signal will be emitted first.\n *\n * This signal is emitted even if the clicked tab is the current tab.\n */\n get: function () {\n return this._tabActivateRequested;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"tabCloseRequested\", {\n /**\n * A signal emitted when a tab close icon is clicked.\n *\n * #### Notes\n * This signal is not emitted unless the tab title is `closable`.\n */\n get: function () {\n return this._tabCloseRequested;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"tabDetachRequested\", {\n /**\n * A signal emitted when a tab is dragged beyond the detach threshold.\n *\n * #### Notes\n * This signal is emitted when the user drags a tab with the mouse,\n * and mouse is dragged beyond the detach threshold.\n *\n * The consumer of the signal should call `releaseMouse` and remove\n * the tab in order to complete the detach.\n *\n * This signal is only emitted once per drag cycle.\n */\n get: function () {\n return this._tabDetachRequested;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"currentTitle\", {\n /**\n * Get the currently selected title.\n *\n * #### Notes\n * This will be `null` if no tab is selected.\n */\n get: function () {\n return this._titles[this._currentIndex] || null;\n },\n /**\n * Set the currently selected title.\n *\n * #### Notes\n * If the title does not exist, the title will be set to `null`.\n */\n set: function (value) {\n this.currentIndex = value ? this._titles.indexOf(value) : -1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"currentIndex\", {\n /**\n * Get the index of the currently selected tab.\n *\n * #### Notes\n * This will be `-1` if no tab is selected.\n */\n get: function () {\n return this._currentIndex;\n },\n /**\n * Set the index of the currently selected tab.\n *\n * #### Notes\n * If the value is out of range, the index will be set to `-1`.\n */\n set: function (value) {\n // Adjust for an out of range index.\n if (value < 0 || value >= this._titles.length) {\n value = -1;\n }\n // Bail early if the index will not change.\n if (this._currentIndex === value) {\n return;\n }\n // Look up the previous index and title.\n var pi = this._currentIndex;\n var pt = this._titles[pi] || null;\n // Look up the current index and title.\n var ci = value;\n var ct = this._titles[ci] || null;\n // Update the current index and previous title.\n this._currentIndex = ci;\n this._previousTitle = pt;\n // Schedule an update of the tabs.\n this.update();\n // Emit the current changed signal.\n this._currentChanged.emit({\n previousIndex: pi, previousTitle: pt,\n currentIndex: ci, currentTitle: ct\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"orientation\", {\n /**\n * Get the orientation of the tab bar.\n *\n * #### Notes\n * This controls whether the tabs are arranged in a row or column.\n */\n get: function () {\n return this._orientation;\n },\n /**\n * Set the orientation of the tab bar.\n *\n * #### Notes\n * This controls whether the tabs are arranged in a row or column.\n */\n set: function (value) {\n // Do nothing if the orientation does not change.\n if (this._orientation === value) {\n return;\n }\n // Release the mouse before making any changes.\n this._releaseMouse();\n // Toggle the orientation values.\n this._orientation = value;\n this.dataset['orientation'] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"titles\", {\n /**\n * A read-only array of the titles in the tab bar.\n */\n get: function () {\n return this._titles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabBar.prototype, \"contentNode\", {\n /**\n * The tab bar content node.\n *\n * #### Notes\n * This is the node which holds the tab nodes.\n *\n * Modifying this node directly can lead to undefined behavior.\n */\n get: function () {\n return this.node.getElementsByClassName('p-TabBar-content')[0];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Add a tab to the end of the tab bar.\n *\n * @param value - The title which holds the data for the tab,\n * or an options object to convert to a title.\n *\n * @returns The title object added to the tab bar.\n *\n * #### Notes\n * If the title is already added to the tab bar, it will be moved.\n */\n TabBar.prototype.addTab = function (value) {\n return this.insertTab(this._titles.length, value);\n };\n /**\n * Insert a tab into the tab bar at the specified index.\n *\n * @param index - The index at which to insert the tab.\n *\n * @param value - The title which holds the data for the tab,\n * or an options object to convert to a title.\n *\n * @returns The title object added to the tab bar.\n *\n * #### Notes\n * The index will be clamped to the bounds of the tabs.\n *\n * If the title is already added to the tab bar, it will be moved.\n */\n TabBar.prototype.insertTab = function (index, value) {\n // Release the mouse before making any changes.\n this._releaseMouse();\n // Coerce the value to a title.\n var title = Private.asTitle(value);\n // Look up the index of the title.\n var i = this._titles.indexOf(title);\n // Clamp the insert index to the array bounds.\n var j = Math.max(0, Math.min(index, this._titles.length));\n // If the title is not in the array, insert it.\n if (i === -1) {\n // Insert the title into the array.\n algorithm_1.ArrayExt.insert(this._titles, j, title);\n // Connect to the title changed signal.\n title.changed.connect(this._onTitleChanged, this);\n // Schedule an update of the tabs.\n this.update();\n // Adjust the current index for the insert.\n this._adjustCurrentForInsert(j, title);\n // Return the title added to the tab bar.\n return title;\n }\n // Otherwise, the title exists in the array and should be moved.\n // Adjust the index if the location is at the end of the array.\n if (j === this._titles.length) {\n j--;\n }\n // Bail if there is no effective move.\n if (i === j) {\n return title;\n }\n // Move the title to the new location.\n algorithm_1.ArrayExt.move(this._titles, i, j);\n // Schedule an update of the tabs.\n this.update();\n // Adjust the current index for the move.\n this._adjustCurrentForMove(i, j);\n // Return the title added to the tab bar.\n return title;\n };\n /**\n * Remove a tab from the tab bar.\n *\n * @param title - The title for the tab to remove.\n *\n * #### Notes\n * This is a no-op if the title is not in the tab bar.\n */\n TabBar.prototype.removeTab = function (title) {\n this.removeTabAt(this._titles.indexOf(title));\n };\n /**\n * Remove the tab at a given index from the tab bar.\n *\n * @param index - The index of the tab to remove.\n *\n * #### Notes\n * This is a no-op if the index is out of range.\n */\n TabBar.prototype.removeTabAt = function (index) {\n // Release the mouse before making any changes.\n this._releaseMouse();\n // Remove the title from the array.\n var title = algorithm_1.ArrayExt.removeAt(this._titles, index);\n // Bail if the index is out of range.\n if (!title) {\n return;\n }\n // Disconnect from the title changed signal.\n title.changed.disconnect(this._onTitleChanged, this);\n // Clear the previous title if it's being removed.\n if (title === this._previousTitle) {\n this._previousTitle = null;\n }\n // Schedule an update of the tabs.\n this.update();\n // Adjust the current index for the remove.\n this._adjustCurrentForRemove(index, title);\n };\n /**\n * Remove all tabs from the tab bar.\n */\n TabBar.prototype.clearTabs = function () {\n // Bail if there is nothing to remove.\n if (this._titles.length === 0) {\n return;\n }\n // Release the mouse before making any changes.\n this._releaseMouse();\n // Disconnect from the title changed signals.\n for (var _i = 0, _a = this._titles; _i < _a.length; _i++) {\n var title = _a[_i];\n title.changed.disconnect(this._onTitleChanged, this);\n }\n // Get the current index and title.\n var pi = this.currentIndex;\n var pt = this.currentTitle;\n // Reset the current index and previous title.\n this._currentIndex = -1;\n this._previousTitle = null;\n // Clear the title array.\n this._titles.length = 0;\n // Schedule an update of the tabs.\n this.update();\n // If no tab was selected, there's nothing else to do.\n if (pi === -1) {\n return;\n }\n // Emit the current changed signal.\n this._currentChanged.emit({\n previousIndex: pi, previousTitle: pt,\n currentIndex: -1, currentTitle: null\n });\n };\n /**\n * Release the mouse and restore the non-dragged tab positions.\n *\n * #### Notes\n * This will cause the tab bar to stop handling mouse events and to\n * restore the tabs to their non-dragged positions.\n */\n TabBar.prototype.releaseMouse = function () {\n this._releaseMouse();\n };\n /**\n * Handle the DOM events for the tab bar.\n *\n * @param event - The DOM event sent to the tab bar.\n *\n * #### Notes\n * This method implements the DOM `EventListener` interface and is\n * called in response to events on the tab bar's DOM node.\n *\n * This should not be called directly by user code.\n */\n TabBar.prototype.handleEvent = function (event) {\n switch (event.type) {\n case 'mousedown':\n this._evtMouseDown(event);\n break;\n case 'mousemove':\n this._evtMouseMove(event);\n break;\n case 'mouseup':\n this._evtMouseUp(event);\n break;\n case 'keydown':\n this._evtKeyDown(event);\n break;\n case 'contextmenu':\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n };\n /**\n * A message handler invoked on a `'before-attach'` message.\n */\n TabBar.prototype.onBeforeAttach = function (msg) {\n this.node.addEventListener('mousedown', this);\n };\n /**\n * A message handler invoked on an `'after-detach'` message.\n */\n TabBar.prototype.onAfterDetach = function (msg) {\n this.node.removeEventListener('mousedown', this);\n this._releaseMouse();\n };\n /**\n * A message handler invoked on an `'update-request'` message.\n */\n TabBar.prototype.onUpdateRequest = function (msg) {\n var titles = this._titles;\n var renderer = this.renderer;\n var currentTitle = this.currentTitle;\n var content = new Array(titles.length);\n for (var i = 0, n = titles.length; i < n; ++i) {\n var title = titles[i];\n var current = title === currentTitle;\n var zIndex = current ? n : n - i - 1;\n content[i] = renderer.renderTab({ title: title, current: current, zIndex: zIndex });\n }\n virtualdom_1.VirtualDOM.render(content, this.contentNode);\n };\n /**\n * Handle the `'keydown'` event for the tab bar.\n */\n TabBar.prototype._evtKeyDown = function (event) {\n // Stop all input events during drag.\n event.preventDefault();\n event.stopPropagation();\n // Release the mouse if `Escape` is pressed.\n if (event.keyCode === 27) {\n this._releaseMouse();\n }\n };\n /**\n * Handle the `'mousedown'` event for the tab bar.\n */\n TabBar.prototype._evtMouseDown = function (event) {\n // Do nothing if it's not a left or middle mouse press.\n if (event.button !== 0 && event.button !== 1) {\n return;\n }\n // Do nothing if a drag is in progress.\n if (this._dragData) {\n return;\n }\n // Lookup the tab nodes.\n var tabs = this.contentNode.children;\n // Find the index of the pressed tab.\n var index = algorithm_1.ArrayExt.findFirstIndex(tabs, function (tab) {\n return domutils_1.ElementExt.hitTest(tab, event.clientX, event.clientY);\n });\n // Do nothing if the press is not on a tab.\n if (index === -1) {\n return;\n }\n // Pressing on a tab stops the event propagation.\n event.preventDefault();\n event.stopPropagation();\n // Initialize the non-measured parts of the drag data.\n this._dragData = {\n tab: tabs[index],\n index: index,\n pressX: event.clientX,\n pressY: event.clientY,\n tabPos: -1,\n tabSize: -1,\n tabPressPos: -1,\n targetIndex: -1,\n tabLayout: null,\n contentRect: null,\n override: null,\n dragActive: false,\n dragAborted: false,\n detachRequested: false\n };\n // Add the document mouse up listener.\n document.addEventListener('mouseup', this, true);\n // Do nothing else if the middle button is clicked.\n if (event.button === 1) {\n return;\n }\n // Do nothing else if the close icon is clicked.\n var icon = tabs[index].querySelector(this.renderer.closeIconSelector);\n if (icon && icon.contains(event.target)) {\n return;\n }\n // Add the extra listeners if the tabs are movable.\n if (this.tabsMovable) {\n document.addEventListener('mousemove', this, true);\n document.addEventListener('keydown', this, true);\n document.addEventListener('contextmenu', this, true);\n }\n // Update the current index as appropriate.\n if (this.allowDeselect && this.currentIndex === index) {\n this.currentIndex = -1;\n }\n else {\n this.currentIndex = index;\n }\n // Do nothing else if there is no current tab.\n if (this.currentIndex === -1) {\n return;\n }\n // Emit the tab activate request signal.\n this._tabActivateRequested.emit({\n index: this.currentIndex, title: this.currentTitle\n });\n };\n /**\n * Handle the `'mousemove'` event for the tab bar.\n */\n TabBar.prototype._evtMouseMove = function (event) {\n // Do nothing if no drag is in progress.\n var data = this._dragData;\n if (!data) {\n return;\n }\n // Suppress the event during a drag.\n event.preventDefault();\n event.stopPropagation();\n // Lookup the tab nodes.\n var tabs = this.contentNode.children;\n // Bail early if the drag threshold has not been met.\n if (!data.dragActive && !Private.dragExceeded(data, event)) {\n return;\n }\n // Activate the drag if necessary.\n if (!data.dragActive) {\n // Fill in the rest of the drag data measurements.\n var tabRect = data.tab.getBoundingClientRect();\n if (this._orientation === 'horizontal') {\n data.tabPos = data.tab.offsetLeft;\n data.tabSize = tabRect.width;\n data.tabPressPos = data.pressX - tabRect.left;\n }\n else {\n data.tabPos = data.tab.offsetTop;\n data.tabSize = tabRect.height;\n data.tabPressPos = data.pressY - tabRect.top;\n }\n data.tabLayout = Private.snapTabLayout(tabs, this._orientation);\n data.contentRect = this.contentNode.getBoundingClientRect();\n data.override = dragdrop_1.Drag.overrideCursor('default');\n // Add the dragging style classes.\n data.tab.classList.add('p-mod-dragging');\n this.addClass('p-mod-dragging');\n // Mark the drag as active.\n data.dragActive = true;\n }\n // Emit the detach requested signal if the threshold is exceeded.\n if (!data.detachRequested && Private.detachExceeded(data, event)) {\n // Only emit the signal once per drag cycle.\n data.detachRequested = true;\n // Setup the arguments for the signal.\n var index = data.index;\n var clientX = event.clientX;\n var clientY = event.clientY;\n var tab = tabs[index];\n var title = this._titles[index];\n // Emit the tab detach requested signal.\n this._tabDetachRequested.emit({ index: index, title: title, tab: tab, clientX: clientX, clientY: clientY });\n // Bail if the signal handler aborted the drag.\n if (data.dragAborted) {\n return;\n }\n }\n // Update the positions of the tabs.\n Private.layoutTabs(tabs, data, event, this._orientation);\n };\n /**\n * Handle the `'mouseup'` event for the document.\n */\n TabBar.prototype._evtMouseUp = function (event) {\n var _this = this;\n // Do nothing if it's not a left or middle mouse release.\n if (event.button !== 0 && event.button !== 1) {\n return;\n }\n // Do nothing if no drag is in progress.\n var data = this._dragData;\n if (!data) {\n return;\n }\n // Stop the event propagation.\n event.preventDefault();\n event.stopPropagation();\n // Remove the extra mouse event listeners.\n document.removeEventListener('mousemove', this, true);\n document.removeEventListener('mouseup', this, true);\n document.removeEventListener('keydown', this, true);\n document.removeEventListener('contextmenu', this, true);\n // Handle a release when the drag is not active.\n if (!data.dragActive) {\n // Clear the drag data.\n this._dragData = null;\n // Lookup the tab nodes.\n var tabs = this.contentNode.children;\n // Find the index of the released tab.\n var index = algorithm_1.ArrayExt.findFirstIndex(tabs, function (tab) {\n return domutils_1.ElementExt.hitTest(tab, event.clientX, event.clientY);\n });\n // Do nothing if the release is not on the original pressed tab.\n if (index !== data.index) {\n return;\n }\n // Ignore the release if the title is not closable.\n var title = this._titles[index];\n if (!title.closable) {\n return;\n }\n // Emit the close requested signal if the middle button is released.\n if (event.button === 1) {\n this._tabCloseRequested.emit({ index: index, title: title });\n return;\n }\n // Emit the close requested signal if the close icon was released.\n var icon = tabs[index].querySelector(this.renderer.closeIconSelector);\n if (icon && icon.contains(event.target)) {\n this._tabCloseRequested.emit({ index: index, title: title });\n return;\n }\n // Otherwise, there is nothing left to do.\n return;\n }\n // Do nothing if the left button is not released.\n if (event.button !== 0) {\n return;\n }\n // Position the tab at its final resting position.\n Private.finalizeTabPosition(data, this._orientation);\n // Remove the dragging class from the tab so it can be transitioned.\n data.tab.classList.remove('p-mod-dragging');\n // Parse the transition duration for releasing the tab.\n var duration = Private.parseTransitionDuration(data.tab);\n // Complete the release on a timer to allow the tab to transition.\n setTimeout(function () {\n // Do nothing if the drag has been aborted.\n if (data.dragAborted) {\n return;\n }\n // Clear the drag data reference.\n _this._dragData = null;\n // Reset the positions of the tabs.\n Private.resetTabPositions(_this.contentNode.children, _this._orientation);\n // Clear the cursor grab.\n data.override.dispose();\n // Remove the remaining dragging style.\n _this.removeClass('p-mod-dragging');\n // If the tab was not moved, there is nothing else to do.\n var i = data.index;\n var j = data.targetIndex;\n if (j === -1 || i === j) {\n return;\n }\n // Move the title to the new locations.\n algorithm_1.ArrayExt.move(_this._titles, i, j);\n // Adjust the current index for the move.\n _this._adjustCurrentForMove(i, j);\n // Emit the tab moved signal.\n _this._tabMoved.emit({\n fromIndex: i, toIndex: j, title: _this._titles[j]\n });\n // Update the tabs immediately to prevent flicker.\n messaging_1.MessageLoop.sendMessage(_this, widget_1.Widget.Msg.UpdateRequest);\n }, duration);\n };\n /**\n * Release the mouse and restore the non-dragged tab positions.\n */\n TabBar.prototype._releaseMouse = function () {\n // Do nothing if no drag is in progress.\n var data = this._dragData;\n if (!data) {\n return;\n }\n // Clear the drag data reference.\n this._dragData = null;\n // Remove the extra mouse listeners.\n document.removeEventListener('mousemove', this, true);\n document.removeEventListener('mouseup', this, true);\n document.removeEventListener('keydown', this, true);\n document.removeEventListener('contextmenu', this, true);\n // Indicate the drag has been aborted. This allows the mouse\n // event handlers to return early when the drag is canceled.\n data.dragAborted = true;\n // If the drag is not active, there's nothing more to do.\n if (!data.dragActive) {\n return;\n }\n // Reset the tabs to their non-dragged positions.\n Private.resetTabPositions(this.contentNode.children, this._orientation);\n // Clear the cursor override.\n data.override.dispose();\n // Clear the dragging style classes.\n data.tab.classList.remove('p-mod-dragging');\n this.removeClass('p-mod-dragging');\n };\n /**\n * Adjust the current index for a tab insert operation.\n *\n * This method accounts for the tab bar's insertion behavior when\n * adjusting the current index and emitting the changed signal.\n */\n TabBar.prototype._adjustCurrentForInsert = function (i, title) {\n // Lookup commonly used variables.\n var ct = this.currentTitle;\n var ci = this._currentIndex;\n var bh = this.insertBehavior;\n // Handle the behavior where the new tab is always selected,\n // or the behavior where the new tab is selected if needed.\n if (bh === 'select-tab' || (bh === 'select-tab-if-needed' && ci === -1)) {\n this._currentIndex = i;\n this._previousTitle = ct;\n this._currentChanged.emit({\n previousIndex: ci, previousTitle: ct,\n currentIndex: i, currentTitle: title\n });\n return;\n }\n // Otherwise, silently adjust the current index if needed.\n if (ci >= i) {\n this._currentIndex++;\n }\n };\n /**\n * Adjust the current index for a tab move operation.\n *\n * This method will not cause the actual current tab to change.\n * It silently adjusts the index to account for the given move.\n */\n TabBar.prototype._adjustCurrentForMove = function (i, j) {\n if (this._currentIndex === i) {\n this._currentIndex = j;\n }\n else if (this._currentIndex < i && this._currentIndex >= j) {\n this._currentIndex++;\n }\n else if (this._currentIndex > i && this._currentIndex <= j) {\n this._currentIndex--;\n }\n };\n /**\n * Adjust the current index for a tab remove operation.\n *\n * This method accounts for the tab bar's remove behavior when\n * adjusting the current index and emitting the changed signal.\n */\n TabBar.prototype._adjustCurrentForRemove = function (i, title) {\n // Lookup commonly used variables.\n var ci = this._currentIndex;\n var bh = this.removeBehavior;\n // Silently adjust the index if the current tab is not removed.\n if (ci !== i) {\n if (ci > i) {\n this._currentIndex--;\n }\n return;\n }\n // No tab gets selected if the tab bar is empty.\n if (this._titles.length === 0) {\n this._currentIndex = -1;\n this._currentChanged.emit({\n previousIndex: i, previousTitle: title,\n currentIndex: -1, currentTitle: null\n });\n return;\n }\n // Handle behavior where the next sibling tab is selected.\n if (bh === 'select-tab-after') {\n this._currentIndex = Math.min(i, this._titles.length - 1);\n this._currentChanged.emit({\n previousIndex: i, previousTitle: title,\n currentIndex: this._currentIndex, currentTitle: this.currentTitle\n });\n return;\n }\n // Handle behavior where the previous sibling tab is selected.\n if (bh === 'select-tab-before') {\n this._currentIndex = Math.max(0, i - 1);\n this._currentChanged.emit({\n previousIndex: i, previousTitle: title,\n currentIndex: this._currentIndex, currentTitle: this.currentTitle\n });\n return;\n }\n // Handle behavior where the previous history tab is selected.\n if (bh === 'select-previous-tab') {\n if (this._previousTitle) {\n this._currentIndex = this._titles.indexOf(this._previousTitle);\n this._previousTitle = null;\n }\n else {\n this._currentIndex = Math.min(i, this._titles.length - 1);\n }\n this._currentChanged.emit({\n previousIndex: i, previousTitle: title,\n currentIndex: this._currentIndex, currentTitle: this.currentTitle\n });\n return;\n }\n // Otherwise, no tab gets selected.\n this._currentIndex = -1;\n this._currentChanged.emit({\n previousIndex: i, previousTitle: title,\n currentIndex: -1, currentTitle: null\n });\n };\n /**\n * Handle the `changed` signal of a title object.\n */\n TabBar.prototype._onTitleChanged = function (sender) {\n this.update();\n };\n return TabBar;\n}(widget_1.Widget));\nexports.TabBar = TabBar;\n/**\n * The namespace for the `TabBar` class statics.\n */\n(function (TabBar) {\n /**\n * The default implementation of `IRenderer`.\n *\n * #### Notes\n * Subclasses are free to reimplement rendering methods as needed.\n */\n var Renderer = /** @class */ (function () {\n /**\n * Construct a new renderer.\n */\n function Renderer() {\n /**\n * A selector which matches the close icon node in a tab.\n */\n this.closeIconSelector = '.p-TabBar-tabCloseIcon';\n this._tabID = 0;\n this._tabKeys = new WeakMap();\n }\n /**\n * Render the virtual element for a tab.\n *\n * @param data - The data to use for rendering the tab.\n *\n * @returns A virtual element representing the tab.\n */\n Renderer.prototype.renderTab = function (data) {\n var title = data.title.caption;\n var key = this.createTabKey(data);\n var style = this.createTabStyle(data);\n var className = this.createTabClass(data);\n var dataset = this.createTabDataset(data);\n return (virtualdom_1.h.li({ key: key, className: className, title: title, style: style, dataset: dataset }, this.renderIcon(data), this.renderLabel(data), this.renderCloseIcon(data)));\n };\n /**\n * Render the icon element for a tab.\n *\n * @param data - The data to use for rendering the tab.\n *\n * @returns A virtual element representing the tab icon.\n */\n Renderer.prototype.renderIcon = function (data) {\n var className = this.createIconClass(data);\n return virtualdom_1.h.div({ className: className }, data.title.iconLabel);\n };\n /**\n * Render the label element for a tab.\n *\n * @param data - The data to use for rendering the tab.\n *\n * @returns A virtual element representing the tab label.\n */\n Renderer.prototype.renderLabel = function (data) {\n return virtualdom_1.h.div({ className: 'p-TabBar-tabLabel' }, data.title.label);\n };\n /**\n * Render the close icon element for a tab.\n *\n * @param data - The data to use for rendering the tab.\n *\n * @returns A virtual element representing the tab close icon.\n */\n Renderer.prototype.renderCloseIcon = function (data) {\n return virtualdom_1.h.div({ className: 'p-TabBar-tabCloseIcon' });\n };\n /**\n * Create a unique render key for the tab.\n *\n * @param data - The data to use for the tab.\n *\n * @returns The unique render key for the tab.\n *\n * #### Notes\n * This method caches the key against the tab title the first time\n * the key is generated. This enables efficient rendering of moved\n * tabs and avoids subtle hover style artifacts.\n */\n Renderer.prototype.createTabKey = function (data) {\n var key = this._tabKeys.get(data.title);\n if (key === undefined) {\n key = \"tab-key-\" + this._tabID++;\n this._tabKeys.set(data.title, key);\n }\n return key;\n };\n /**\n * Create the inline style object for a tab.\n *\n * @param data - The data to use for the tab.\n *\n * @returns The inline style data for the tab.\n */\n Renderer.prototype.createTabStyle = function (data) {\n return { zIndex: \"\" + data.zIndex };\n };\n /**\n * Create the class name for the tab.\n *\n * @param data - The data to use for the tab.\n *\n * @returns The full class name for the tab.\n */\n Renderer.prototype.createTabClass = function (data) {\n var name = 'p-TabBar-tab';\n if (data.title.className) {\n name += \" \" + data.title.className;\n }\n if (data.title.closable) {\n name += ' p-mod-closable';\n }\n if (data.current) {\n name += ' p-mod-current';\n }\n return name;\n };\n /**\n * Create the dataset for a tab.\n *\n * @param data - The data to use for the tab.\n *\n * @returns The dataset for the tab.\n */\n Renderer.prototype.createTabDataset = function (data) {\n return data.title.dataset;\n };\n /**\n * Create the class name for the tab icon.\n *\n * @param data - The data to use for the tab.\n *\n * @returns The full class name for the tab icon.\n */\n Renderer.prototype.createIconClass = function (data) {\n var name = 'p-TabBar-tabIcon';\n var extra = data.title.iconClass;\n return extra ? name + \" \" + extra : name;\n };\n return Renderer;\n }());\n TabBar.Renderer = Renderer;\n /**\n * The default `Renderer` instance.\n */\n TabBar.defaultRenderer = new Renderer();\n})(TabBar = exports.TabBar || (exports.TabBar = {}));\nexports.TabBar = TabBar;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The start drag distance threshold.\n */\n Private.DRAG_THRESHOLD = 5;\n /**\n * The detach distance threshold.\n */\n Private.DETACH_THRESHOLD = 20;\n /**\n * Create the DOM node for a tab bar.\n */\n function createNode() {\n var node = document.createElement('div');\n var content = document.createElement('ul');\n content.className = 'p-TabBar-content';\n node.appendChild(content);\n return node;\n }\n Private.createNode = createNode;\n /**\n * Coerce a title or options into a real title.\n */\n function asTitle(value) {\n return value instanceof title_1.Title ? value : new title_1.Title(value);\n }\n Private.asTitle = asTitle;\n /**\n * Parse the transition duration for a tab node.\n */\n function parseTransitionDuration(tab) {\n var style = window.getComputedStyle(tab);\n return 1000 * (parseFloat(style.transitionDuration) || 0);\n }\n Private.parseTransitionDuration = parseTransitionDuration;\n /**\n * Get a snapshot of the current tab layout values.\n */\n function snapTabLayout(tabs, orientation) {\n var layout = new Array(tabs.length);\n for (var i = 0, n = tabs.length; i < n; ++i) {\n var node = tabs[i];\n var style = window.getComputedStyle(node);\n if (orientation === 'horizontal') {\n layout[i] = {\n pos: node.offsetLeft,\n size: node.offsetWidth,\n margin: parseFloat(style.marginLeft) || 0\n };\n }\n else {\n layout[i] = {\n pos: node.offsetTop,\n size: node.offsetHeight,\n margin: parseFloat(style.marginTop) || 0\n };\n }\n }\n return layout;\n }\n Private.snapTabLayout = snapTabLayout;\n /**\n * Test if the event exceeds the drag threshold.\n */\n function dragExceeded(data, event) {\n var dx = Math.abs(event.clientX - data.pressX);\n var dy = Math.abs(event.clientY - data.pressY);\n return dx >= Private.DRAG_THRESHOLD || dy >= Private.DRAG_THRESHOLD;\n }\n Private.dragExceeded = dragExceeded;\n /**\n * Test if the event exceeds the drag detach threshold.\n */\n function detachExceeded(data, event) {\n var rect = data.contentRect;\n return ((event.clientX < rect.left - Private.DETACH_THRESHOLD) ||\n (event.clientX >= rect.right + Private.DETACH_THRESHOLD) ||\n (event.clientY < rect.top - Private.DETACH_THRESHOLD) ||\n (event.clientY >= rect.bottom + Private.DETACH_THRESHOLD));\n }\n Private.detachExceeded = detachExceeded;\n /**\n * Update the relative tab positions and computed target index.\n */\n function layoutTabs(tabs, data, event, orientation) {\n // Compute the orientation-sensitive values.\n var pressPos;\n var localPos;\n var clientPos;\n var clientSize;\n if (orientation === 'horizontal') {\n pressPos = data.pressX;\n localPos = event.clientX - data.contentRect.left;\n clientPos = event.clientX;\n clientSize = data.contentRect.width;\n }\n else {\n pressPos = data.pressY;\n localPos = event.clientY - data.contentRect.top;\n clientPos = event.clientY;\n clientSize = data.contentRect.height;\n }\n // Compute the target data.\n var targetIndex = data.index;\n var targetPos = localPos - data.tabPressPos;\n var targetEnd = targetPos + data.tabSize;\n // Update the relative tab positions.\n for (var i = 0, n = tabs.length; i < n; ++i) {\n var pxPos = void 0;\n var layout = data.tabLayout[i];\n var threshold = layout.pos + (layout.size >> 1);\n if (i < data.index && targetPos < threshold) {\n pxPos = data.tabSize + data.tabLayout[i + 1].margin + \"px\";\n targetIndex = Math.min(targetIndex, i);\n }\n else if (i > data.index && targetEnd > threshold) {\n pxPos = -data.tabSize - layout.margin + \"px\";\n targetIndex = Math.max(targetIndex, i);\n }\n else if (i === data.index) {\n var ideal = clientPos - pressPos;\n var limit = clientSize - (data.tabPos + data.tabSize);\n pxPos = Math.max(-data.tabPos, Math.min(ideal, limit)) + \"px\";\n }\n else {\n pxPos = '';\n }\n if (orientation === 'horizontal') {\n tabs[i].style.left = pxPos;\n }\n else {\n tabs[i].style.top = pxPos;\n }\n }\n // Update the computed target index.\n data.targetIndex = targetIndex;\n }\n Private.layoutTabs = layoutTabs;\n /**\n * Position the drag tab at its final resting relative position.\n */\n function finalizeTabPosition(data, orientation) {\n // Compute the orientation-sensitive client size.\n var clientSize;\n if (orientation === 'horizontal') {\n clientSize = data.contentRect.width;\n }\n else {\n clientSize = data.contentRect.height;\n }\n // Compute the ideal final tab position.\n var ideal;\n if (data.targetIndex === data.index) {\n ideal = 0;\n }\n else if (data.targetIndex > data.index) {\n var tgt = data.tabLayout[data.targetIndex];\n ideal = tgt.pos + tgt.size - data.tabSize - data.tabPos;\n }\n else {\n var tgt = data.tabLayout[data.targetIndex];\n ideal = tgt.pos - data.tabPos;\n }\n // Compute the tab position limit.\n var limit = clientSize - (data.tabPos + data.tabSize);\n var final = Math.max(-data.tabPos, Math.min(ideal, limit));\n // Set the final orientation-sensitive position.\n if (orientation === 'horizontal') {\n data.tab.style.left = final + \"px\";\n }\n else {\n data.tab.style.top = final + \"px\";\n }\n }\n Private.finalizeTabPosition = finalizeTabPosition;\n /**\n * Reset the relative positions of the given tabs.\n */\n function resetTabPositions(tabs, orientation) {\n algorithm_1.each(tabs, function (tab) {\n if (orientation === 'horizontal') {\n tab.style.left = '';\n }\n else {\n tab.style.top = '';\n }\n });\n }\n Private.resetTabPositions = resetTabPositions;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/tabbar.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/tabpanel.js": +/*!********************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/tabpanel.js ***! + \********************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar domutils_1 = __webpack_require__(/*! @phosphor/domutils */ \"./node_modules/@phosphor/domutils/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar boxlayout_1 = __webpack_require__(/*! ./boxlayout */ \"./node_modules/@phosphor/widgets/lib/boxlayout.js\");\nvar stackedpanel_1 = __webpack_require__(/*! ./stackedpanel */ \"./node_modules/@phosphor/widgets/lib/stackedpanel.js\");\nvar tabbar_1 = __webpack_require__(/*! ./tabbar */ \"./node_modules/@phosphor/widgets/lib/tabbar.js\");\nvar widget_1 = __webpack_require__(/*! ./widget */ \"./node_modules/@phosphor/widgets/lib/widget.js\");\n/**\n * A widget which combines a `TabBar` and a `StackedPanel`.\n *\n * #### Notes\n * This is a simple panel which handles the common case of a tab bar\n * placed next to a content area. The selected tab controls the widget\n * which is shown in the content area.\n *\n * For use cases which require more control than is provided by this\n * panel, the `TabBar` widget may be used independently.\n */\nvar TabPanel = /** @class */ (function (_super) {\n __extends(TabPanel, _super);\n /**\n * Construct a new tab panel.\n *\n * @param options - The options for initializing the tab panel.\n */\n function TabPanel(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this._currentChanged = new signaling_1.Signal(_this);\n _this.addClass('p-TabPanel');\n // Create the tab bar and stacked panel.\n _this.tabBar = new tabbar_1.TabBar(options);\n _this.tabBar.addClass('p-TabPanel-tabBar');\n _this.stackedPanel = new stackedpanel_1.StackedPanel();\n _this.stackedPanel.addClass('p-TabPanel-stackedPanel');\n // Connect the tab bar signal handlers.\n _this.tabBar.tabMoved.connect(_this._onTabMoved, _this);\n _this.tabBar.currentChanged.connect(_this._onCurrentChanged, _this);\n _this.tabBar.tabCloseRequested.connect(_this._onTabCloseRequested, _this);\n _this.tabBar.tabActivateRequested.connect(_this._onTabActivateRequested, _this);\n // Connect the stacked panel signal handlers.\n _this.stackedPanel.widgetRemoved.connect(_this._onWidgetRemoved, _this);\n // Get the data related to the placement.\n _this._tabPlacement = options.tabPlacement || 'top';\n var direction = Private.directionFromPlacement(_this._tabPlacement);\n var orientation = Private.orientationFromPlacement(_this._tabPlacement);\n // Configure the tab bar for the placement.\n _this.tabBar.orientation = orientation;\n _this.tabBar.dataset['placement'] = _this._tabPlacement;\n // Create the box layout.\n var layout = new boxlayout_1.BoxLayout({ direction: direction, spacing: 0 });\n // Set the stretch factors for the child widgets.\n boxlayout_1.BoxLayout.setStretch(_this.tabBar, 0);\n boxlayout_1.BoxLayout.setStretch(_this.stackedPanel, 1);\n // Add the child widgets to the layout.\n layout.addWidget(_this.tabBar);\n layout.addWidget(_this.stackedPanel);\n // Install the layout on the tab panel.\n _this.layout = layout;\n return _this;\n }\n Object.defineProperty(TabPanel.prototype, \"currentChanged\", {\n /**\n * A signal emitted when the current tab is changed.\n *\n * #### Notes\n * This signal is emitted when the currently selected tab is changed\n * either through user or programmatic interaction.\n *\n * Notably, this signal is not emitted when the index of the current\n * tab changes due to tabs being inserted, removed, or moved. It is\n * only emitted when the actual current tab node is changed.\n */\n get: function () {\n return this._currentChanged;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabPanel.prototype, \"currentIndex\", {\n /**\n * Get the index of the currently selected tab.\n *\n * #### Notes\n * This will be `-1` if no tab is selected.\n */\n get: function () {\n return this.tabBar.currentIndex;\n },\n /**\n * Set the index of the currently selected tab.\n *\n * #### Notes\n * If the index is out of range, it will be set to `-1`.\n */\n set: function (value) {\n this.tabBar.currentIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabPanel.prototype, \"currentWidget\", {\n /**\n * Get the currently selected widget.\n *\n * #### Notes\n * This will be `null` if there is no selected tab.\n */\n get: function () {\n var title = this.tabBar.currentTitle;\n return title ? title.owner : null;\n },\n /**\n * Set the currently selected widget.\n *\n * #### Notes\n * If the widget is not in the panel, it will be set to `null`.\n */\n set: function (value) {\n this.tabBar.currentTitle = value ? value.title : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabPanel.prototype, \"tabsMovable\", {\n /**\n * Get the whether the tabs are movable by the user.\n *\n * #### Notes\n * Tabs can always be moved programmatically.\n */\n get: function () {\n return this.tabBar.tabsMovable;\n },\n /**\n * Set the whether the tabs are movable by the user.\n *\n * #### Notes\n * Tabs can always be moved programmatically.\n */\n set: function (value) {\n this.tabBar.tabsMovable = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabPanel.prototype, \"tabPlacement\", {\n /**\n * Get the tab placement for the tab panel.\n *\n * #### Notes\n * This controls the position of the tab bar relative to the content.\n */\n get: function () {\n return this._tabPlacement;\n },\n /**\n * Set the tab placement for the tab panel.\n *\n * #### Notes\n * This controls the position of the tab bar relative to the content.\n */\n set: function (value) {\n // Bail if the placement does not change.\n if (this._tabPlacement === value) {\n return;\n }\n // Update the internal value.\n this._tabPlacement = value;\n // Get the values related to the placement.\n var direction = Private.directionFromPlacement(value);\n var orientation = Private.orientationFromPlacement(value);\n // Configure the tab bar for the placement.\n this.tabBar.orientation = orientation;\n this.tabBar.dataset['placement'] = value;\n // Update the layout direction.\n this.layout.direction = direction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TabPanel.prototype, \"widgets\", {\n /**\n * A read-only array of the widgets in the panel.\n */\n get: function () {\n return this.stackedPanel.widgets;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Add a widget to the end of the tab panel.\n *\n * @param widget - The widget to add to the tab panel.\n *\n * #### Notes\n * If the widget is already contained in the panel, it will be moved.\n *\n * The widget's `title` is used to populate the tab.\n */\n TabPanel.prototype.addWidget = function (widget) {\n this.insertWidget(this.widgets.length, widget);\n };\n /**\n * Insert a widget into the tab panel at a specified index.\n *\n * @param index - The index at which to insert the widget.\n *\n * @param widget - The widget to insert into to the tab panel.\n *\n * #### Notes\n * If the widget is already contained in the panel, it will be moved.\n *\n * The widget's `title` is used to populate the tab.\n */\n TabPanel.prototype.insertWidget = function (index, widget) {\n if (widget !== this.currentWidget) {\n widget.hide();\n }\n this.stackedPanel.insertWidget(index, widget);\n this.tabBar.insertTab(index, widget.title);\n };\n /**\n * Handle the `currentChanged` signal from the tab bar.\n */\n TabPanel.prototype._onCurrentChanged = function (sender, args) {\n // Extract the previous and current title from the args.\n var previousIndex = args.previousIndex, previousTitle = args.previousTitle, currentIndex = args.currentIndex, currentTitle = args.currentTitle;\n // Extract the widgets from the titles.\n var previousWidget = previousTitle ? previousTitle.owner : null;\n var currentWidget = currentTitle ? currentTitle.owner : null;\n // Hide the previous widget.\n if (previousWidget) {\n previousWidget.hide();\n }\n // Show the current widget.\n if (currentWidget) {\n currentWidget.show();\n }\n // Emit the `currentChanged` signal for the tab panel.\n this._currentChanged.emit({\n previousIndex: previousIndex, previousWidget: previousWidget, currentIndex: currentIndex, currentWidget: currentWidget\n });\n // Flush the message loop on IE and Edge to prevent flicker.\n if (domutils_1.Platform.IS_EDGE || domutils_1.Platform.IS_IE) {\n messaging_1.MessageLoop.flush();\n }\n };\n /**\n * Handle the `tabActivateRequested` signal from the tab bar.\n */\n TabPanel.prototype._onTabActivateRequested = function (sender, args) {\n args.title.owner.activate();\n };\n /**\n * Handle the `tabCloseRequested` signal from the tab bar.\n */\n TabPanel.prototype._onTabCloseRequested = function (sender, args) {\n args.title.owner.close();\n };\n /**\n * Handle the `tabMoved` signal from the tab bar.\n */\n TabPanel.prototype._onTabMoved = function (sender, args) {\n this.stackedPanel.insertWidget(args.toIndex, args.title.owner);\n };\n /**\n * Handle the `widgetRemoved` signal from the stacked panel.\n */\n TabPanel.prototype._onWidgetRemoved = function (sender, widget) {\n this.tabBar.removeTab(widget.title);\n };\n return TabPanel;\n}(widget_1.Widget));\nexports.TabPanel = TabPanel;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Convert a tab placement to tab bar orientation.\n */\n function orientationFromPlacement(plc) {\n return placementToOrientationMap[plc];\n }\n Private.orientationFromPlacement = orientationFromPlacement;\n /**\n * Convert a tab placement to a box layout direction.\n */\n function directionFromPlacement(plc) {\n return placementToDirectionMap[plc];\n }\n Private.directionFromPlacement = directionFromPlacement;\n /**\n * A mapping of tab placement to tab bar orientation.\n */\n var placementToOrientationMap = {\n 'top': 'horizontal',\n 'left': 'vertical',\n 'right': 'vertical',\n 'bottom': 'horizontal'\n };\n /**\n * A mapping of tab placement to box layout direction.\n */\n var placementToDirectionMap = {\n 'top': 'top-to-bottom',\n 'left': 'left-to-right',\n 'right': 'right-to-left',\n 'bottom': 'bottom-to-top'\n };\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/tabpanel.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/title.js": +/*!*****************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/title.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\n/**\n * An object which holds data related to an object's title.\n *\n * #### Notes\n * A title object is intended to hold the data necessary to display a\n * header for a particular object. A common example is the `TabPanel`,\n * which uses the widget title to populate the tab for a child widget.\n */\nvar Title = /** @class */ (function () {\n /**\n * Construct a new title.\n *\n * @param options - The options for initializing the title.\n */\n function Title(options) {\n this._label = '';\n this._caption = '';\n this._mnemonic = -1;\n this._iconClass = '';\n this._iconLabel = '';\n this._className = '';\n this._closable = false;\n this._changed = new signaling_1.Signal(this);\n this.owner = options.owner;\n if (options.label !== undefined) {\n this._label = options.label;\n }\n if (options.mnemonic !== undefined) {\n this._mnemonic = options.mnemonic;\n }\n if (options.icon !== undefined) {\n this._iconClass = options.icon;\n }\n if (options.iconClass !== undefined) {\n this._iconClass = options.iconClass;\n }\n if (options.iconLabel !== undefined) {\n this._iconLabel = options.iconLabel;\n }\n if (options.caption !== undefined) {\n this._caption = options.caption;\n }\n if (options.className !== undefined) {\n this._className = options.className;\n }\n if (options.closable !== undefined) {\n this._closable = options.closable;\n }\n this._dataset = options.dataset || {};\n }\n Object.defineProperty(Title.prototype, \"changed\", {\n /**\n * A signal emitted when the state of the title changes.\n */\n get: function () {\n return this._changed;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"label\", {\n /**\n * Get the label for the title.\n *\n * #### Notes\n * The default value is an empty string.\n */\n get: function () {\n return this._label;\n },\n /**\n * Set the label for the title.\n */\n set: function (value) {\n if (this._label === value) {\n return;\n }\n this._label = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"mnemonic\", {\n /**\n * Get the mnemonic index for the title.\n *\n * #### Notes\n * The default value is `-1`.\n */\n get: function () {\n return this._mnemonic;\n },\n /**\n * Set the mnemonic index for the title.\n */\n set: function (value) {\n if (this._mnemonic === value) {\n return;\n }\n this._mnemonic = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"icon\", {\n /**\n * @deprecated Use `iconClass` instead.\n */\n get: function () {\n return this.iconClass;\n },\n /**\n * @deprecated Use `iconClass` instead.\n */\n set: function (value) {\n this.iconClass = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"iconClass\", {\n /**\n * Get the icon class name for the title.\n *\n * #### Notes\n * The default value is an empty string.\n */\n get: function () {\n return this._iconClass;\n },\n /**\n * Set the icon class name for the title.\n *\n * #### Notes\n * Multiple class names can be separated with whitespace.\n */\n set: function (value) {\n if (this._iconClass === value) {\n return;\n }\n this._iconClass = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"iconLabel\", {\n /**\n * Get the icon label for the title.\n *\n * #### Notes\n * The default value is an empty string.\n */\n get: function () {\n return this._iconLabel;\n },\n /**\n * Set the icon label for the title.\n *\n * #### Notes\n * Multiple class names can be separated with whitespace.\n */\n set: function (value) {\n if (this._iconLabel === value) {\n return;\n }\n this._iconLabel = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"caption\", {\n /**\n * Get the caption for the title.\n *\n * #### Notes\n * The default value is an empty string.\n */\n get: function () {\n return this._caption;\n },\n /**\n * Set the caption for the title.\n */\n set: function (value) {\n if (this._caption === value) {\n return;\n }\n this._caption = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"className\", {\n /**\n * Get the extra class name for the title.\n *\n * #### Notes\n * The default value is an empty string.\n */\n get: function () {\n return this._className;\n },\n /**\n * Set the extra class name for the title.\n *\n * #### Notes\n * Multiple class names can be separated with whitespace.\n */\n set: function (value) {\n if (this._className === value) {\n return;\n }\n this._className = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"closable\", {\n /**\n * Get the closable state for the title.\n *\n * #### Notes\n * The default value is `false`.\n */\n get: function () {\n return this._closable;\n },\n /**\n * Set the closable state for the title.\n *\n * #### Notes\n * This controls the presence of a close icon when applicable.\n */\n set: function (value) {\n if (this._closable === value) {\n return;\n }\n this._closable = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Title.prototype, \"dataset\", {\n /**\n * Get the dataset for the title.\n *\n * #### Notes\n * The default value is an empty dataset.\n */\n get: function () {\n return this._dataset;\n },\n /**\n * Set the dataset for the title.\n *\n * #### Notes\n * This controls the data attributes when applicable.\n */\n set: function (value) {\n if (this._dataset === value) {\n return;\n }\n this._dataset = value;\n this._changed.emit(undefined);\n },\n enumerable: true,\n configurable: true\n });\n return Title;\n}());\nexports.Title = Title;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/title.js?"); + +/***/ }), + +/***/ "./node_modules/@phosphor/widgets/lib/widget.js": +/*!******************************************************!*\ + !*** ./node_modules/@phosphor/widgets/lib/widget.js ***! + \******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nvar algorithm_1 = __webpack_require__(/*! @phosphor/algorithm */ \"./node_modules/@phosphor/algorithm/lib/index.js\");\nvar messaging_1 = __webpack_require__(/*! @phosphor/messaging */ \"./node_modules/@phosphor/messaging/lib/index.js\");\nvar properties_1 = __webpack_require__(/*! @phosphor/properties */ \"./node_modules/@phosphor/properties/lib/index.js\");\nvar signaling_1 = __webpack_require__(/*! @phosphor/signaling */ \"./node_modules/@phosphor/signaling/lib/index.js\");\nvar title_1 = __webpack_require__(/*! ./title */ \"./node_modules/@phosphor/widgets/lib/title.js\");\n/**\n * The base class of the Phosphor widget hierarchy.\n *\n * #### Notes\n * This class will typically be subclassed in order to create a useful\n * widget. However, it can be used directly to host externally created\n * content.\n */\nvar Widget = /** @class */ (function () {\n /**\n * Construct a new widget.\n *\n * @param options - The options for initializing the widget.\n */\n function Widget(options) {\n if (options === void 0) { options = {}; }\n this._flags = 0;\n this._layout = null;\n this._parent = null;\n this._disposed = new signaling_1.Signal(this);\n this.node = Private.createNode(options);\n this.addClass('p-Widget');\n }\n /**\n * Dispose of the widget and its descendant widgets.\n *\n * #### Notes\n * It is unsafe to use the widget after it has been disposed.\n *\n * All calls made to this method after the first are a no-op.\n */\n Widget.prototype.dispose = function () {\n // Do nothing if the widget is already disposed.\n if (this.isDisposed) {\n return;\n }\n // Set the disposed flag and emit the disposed signal.\n this.setFlag(Widget.Flag.IsDisposed);\n this._disposed.emit(undefined);\n // Remove or detach the widget if necessary.\n if (this.parent) {\n this.parent = null;\n }\n else if (this.isAttached) {\n Widget.detach(this);\n }\n // Dispose of the widget layout.\n if (this._layout) {\n this._layout.dispose();\n this._layout = null;\n }\n // Clear the extra data associated with the widget.\n signaling_1.Signal.clearData(this);\n messaging_1.MessageLoop.clearData(this);\n properties_1.AttachedProperty.clearData(this);\n };\n Object.defineProperty(Widget.prototype, \"disposed\", {\n /**\n * A signal emitted when the widget is disposed.\n */\n get: function () {\n return this._disposed;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"isDisposed\", {\n /**\n * Test whether the widget has been disposed.\n */\n get: function () {\n return this.testFlag(Widget.Flag.IsDisposed);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"isAttached\", {\n /**\n * Test whether the widget's node is attached to the DOM.\n */\n get: function () {\n return this.testFlag(Widget.Flag.IsAttached);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"isHidden\", {\n /**\n * Test whether the widget is explicitly hidden.\n */\n get: function () {\n return this.testFlag(Widget.Flag.IsHidden);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"isVisible\", {\n /**\n * Test whether the widget is visible.\n *\n * #### Notes\n * A widget is visible when it is attached to the DOM, is not\n * explicitly hidden, and has no explicitly hidden ancestors.\n */\n get: function () {\n return this.testFlag(Widget.Flag.IsVisible);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"title\", {\n /**\n * The title object for the widget.\n *\n * #### Notes\n * The title object is used by some container widgets when displaying\n * the widget alongside some title, such as a tab panel or side bar.\n *\n * Since not all widgets will use the title, it is created on demand.\n *\n * The `owner` property of the title is set to this widget.\n */\n get: function () {\n return Private.titleProperty.get(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"id\", {\n /**\n * Get the id of the widget's DOM node.\n */\n get: function () {\n return this.node.id;\n },\n /**\n * Set the id of the widget's DOM node.\n */\n set: function (value) {\n this.node.id = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"dataset\", {\n /**\n * The dataset for the widget's DOM node.\n */\n get: function () {\n return this.node.dataset;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"parent\", {\n /**\n * Get the parent of the widget.\n */\n get: function () {\n return this._parent;\n },\n /**\n * Set the parent of the widget.\n *\n * #### Notes\n * Children are typically added to a widget by using a layout, which\n * means user code will not normally set the parent widget directly.\n *\n * The widget will be automatically removed from its old parent.\n *\n * This is a no-op if there is no effective parent change.\n */\n set: function (value) {\n if (this._parent === value) {\n return;\n }\n if (value && this.contains(value)) {\n throw new Error('Invalid parent widget.');\n }\n if (this._parent && !this._parent.isDisposed) {\n var msg = new Widget.ChildMessage('child-removed', this);\n messaging_1.MessageLoop.sendMessage(this._parent, msg);\n }\n this._parent = value;\n if (this._parent && !this._parent.isDisposed) {\n var msg = new Widget.ChildMessage('child-added', this);\n messaging_1.MessageLoop.sendMessage(this._parent, msg);\n }\n if (!this.isDisposed) {\n messaging_1.MessageLoop.sendMessage(this, Widget.Msg.ParentChanged);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"layout\", {\n /**\n * Get the layout for the widget.\n */\n get: function () {\n return this._layout;\n },\n /**\n * Set the layout for the widget.\n *\n * #### Notes\n * The layout is single-use only. It cannot be changed after the\n * first assignment.\n *\n * The layout is disposed automatically when the widget is disposed.\n */\n set: function (value) {\n if (this._layout === value) {\n return;\n }\n if (this.testFlag(Widget.Flag.DisallowLayout)) {\n throw new Error('Cannot set widget layout.');\n }\n if (this._layout) {\n throw new Error('Cannot change widget layout.');\n }\n if (value.parent) {\n throw new Error('Cannot change layout parent.');\n }\n this._layout = value;\n value.parent = this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Create an iterator over the widget's children.\n *\n * @returns A new iterator over the children of the widget.\n *\n * #### Notes\n * The widget must have a populated layout in order to have children.\n *\n * If a layout is not installed, the returned iterator will be empty.\n */\n Widget.prototype.children = function () {\n return this._layout ? this._layout.iter() : algorithm_1.empty();\n };\n /**\n * Test whether a widget is a descendant of this widget.\n *\n * @param widget - The descendant widget of interest.\n *\n * @returns `true` if the widget is a descendant, `false` otherwise.\n */\n Widget.prototype.contains = function (widget) {\n for (var value = widget; value; value = value._parent) {\n if (value === this) {\n return true;\n }\n }\n return false;\n };\n /**\n * Test whether the widget's DOM node has the given class name.\n *\n * @param name - The class name of interest.\n *\n * @returns `true` if the node has the class, `false` otherwise.\n */\n Widget.prototype.hasClass = function (name) {\n return this.node.classList.contains(name);\n };\n /**\n * Add a class name to the widget's DOM node.\n *\n * @param name - The class name to add to the node.\n *\n * #### Notes\n * If the class name is already added to the node, this is a no-op.\n *\n * The class name must not contain whitespace.\n */\n Widget.prototype.addClass = function (name) {\n this.node.classList.add(name);\n };\n /**\n * Remove a class name from the widget's DOM node.\n *\n * @param name - The class name to remove from the node.\n *\n * #### Notes\n * If the class name is not yet added to the node, this is a no-op.\n *\n * The class name must not contain whitespace.\n */\n Widget.prototype.removeClass = function (name) {\n this.node.classList.remove(name);\n };\n /**\n * Toggle a class name on the widget's DOM node.\n *\n * @param name - The class name to toggle on the node.\n *\n * @param force - Whether to force add the class (`true`) or force\n * remove the class (`false`). If not provided, the presence of\n * the class will be toggled from its current state.\n *\n * @returns `true` if the class is now present, `false` otherwise.\n *\n * #### Notes\n * The class name must not contain whitespace.\n */\n Widget.prototype.toggleClass = function (name, force) {\n if (force === true) {\n this.node.classList.add(name);\n return true;\n }\n if (force === false) {\n this.node.classList.remove(name);\n return false;\n }\n return this.node.classList.toggle(name);\n };\n /**\n * Post an `'update-request'` message to the widget.\n *\n * #### Notes\n * This is a simple convenience method for posting the message.\n */\n Widget.prototype.update = function () {\n messaging_1.MessageLoop.postMessage(this, Widget.Msg.UpdateRequest);\n };\n /**\n * Post a `'fit-request'` message to the widget.\n *\n * #### Notes\n * This is a simple convenience method for posting the message.\n */\n Widget.prototype.fit = function () {\n messaging_1.MessageLoop.postMessage(this, Widget.Msg.FitRequest);\n };\n /**\n * Post an `'activate-request'` message to the widget.\n *\n * #### Notes\n * This is a simple convenience method for posting the message.\n */\n Widget.prototype.activate = function () {\n messaging_1.MessageLoop.postMessage(this, Widget.Msg.ActivateRequest);\n };\n /**\n * Send a `'close-request'` message to the widget.\n *\n * #### Notes\n * This is a simple convenience method for sending the message.\n */\n Widget.prototype.close = function () {\n messaging_1.MessageLoop.sendMessage(this, Widget.Msg.CloseRequest);\n };\n /**\n * Show the widget and make it visible to its parent widget.\n *\n * #### Notes\n * This causes the [[isHidden]] property to be `false`.\n *\n * If the widget is not explicitly hidden, this is a no-op.\n */\n Widget.prototype.show = function () {\n if (!this.testFlag(Widget.Flag.IsHidden)) {\n return;\n }\n if (this.isAttached && (!this.parent || this.parent.isVisible)) {\n messaging_1.MessageLoop.sendMessage(this, Widget.Msg.BeforeShow);\n }\n this.clearFlag(Widget.Flag.IsHidden);\n this.removeClass('p-mod-hidden');\n if (this.isAttached && (!this.parent || this.parent.isVisible)) {\n messaging_1.MessageLoop.sendMessage(this, Widget.Msg.AfterShow);\n }\n if (this.parent) {\n var msg = new Widget.ChildMessage('child-shown', this);\n messaging_1.MessageLoop.sendMessage(this.parent, msg);\n }\n };\n /**\n * Hide the widget and make it hidden to its parent widget.\n *\n * #### Notes\n * This causes the [[isHidden]] property to be `true`.\n *\n * If the widget is explicitly hidden, this is a no-op.\n */\n Widget.prototype.hide = function () {\n if (this.testFlag(Widget.Flag.IsHidden)) {\n return;\n }\n if (this.isAttached && (!this.parent || this.parent.isVisible)) {\n messaging_1.MessageLoop.sendMessage(this, Widget.Msg.BeforeHide);\n }\n this.setFlag(Widget.Flag.IsHidden);\n this.addClass('p-mod-hidden');\n if (this.isAttached && (!this.parent || this.parent.isVisible)) {\n messaging_1.MessageLoop.sendMessage(this, Widget.Msg.AfterHide);\n }\n if (this.parent) {\n var msg = new Widget.ChildMessage('child-hidden', this);\n messaging_1.MessageLoop.sendMessage(this.parent, msg);\n }\n };\n /**\n * Show or hide the widget according to a boolean value.\n *\n * @param hidden - `true` to hide the widget, or `false` to show it.\n *\n * #### Notes\n * This is a convenience method for `hide()` and `show()`.\n */\n Widget.prototype.setHidden = function (hidden) {\n if (hidden) {\n this.hide();\n }\n else {\n this.show();\n }\n };\n /**\n * Test whether the given widget flag is set.\n *\n * #### Notes\n * This will not typically be called directly by user code.\n */\n Widget.prototype.testFlag = function (flag) {\n return (this._flags & flag) !== 0;\n };\n /**\n * Set the given widget flag.\n *\n * #### Notes\n * This will not typically be called directly by user code.\n */\n Widget.prototype.setFlag = function (flag) {\n this._flags |= flag;\n };\n /**\n * Clear the given widget flag.\n *\n * #### Notes\n * This will not typically be called directly by user code.\n */\n Widget.prototype.clearFlag = function (flag) {\n this._flags &= ~flag;\n };\n /**\n * Process a message sent to the widget.\n *\n * @param msg - The message sent to the widget.\n *\n * #### Notes\n * Subclasses may reimplement this method as needed.\n */\n Widget.prototype.processMessage = function (msg) {\n switch (msg.type) {\n case 'resize':\n this.notifyLayout(msg);\n this.onResize(msg);\n break;\n case 'update-request':\n this.notifyLayout(msg);\n this.onUpdateRequest(msg);\n break;\n case 'fit-request':\n this.notifyLayout(msg);\n this.onFitRequest(msg);\n break;\n case 'before-show':\n this.notifyLayout(msg);\n this.onBeforeShow(msg);\n break;\n case 'after-show':\n this.setFlag(Widget.Flag.IsVisible);\n this.notifyLayout(msg);\n this.onAfterShow(msg);\n break;\n case 'before-hide':\n this.notifyLayout(msg);\n this.onBeforeHide(msg);\n break;\n case 'after-hide':\n this.clearFlag(Widget.Flag.IsVisible);\n this.notifyLayout(msg);\n this.onAfterHide(msg);\n break;\n case 'before-attach':\n this.notifyLayout(msg);\n this.onBeforeAttach(msg);\n break;\n case 'after-attach':\n if (!this.isHidden && (!this.parent || this.parent.isVisible)) {\n this.setFlag(Widget.Flag.IsVisible);\n }\n this.setFlag(Widget.Flag.IsAttached);\n this.notifyLayout(msg);\n this.onAfterAttach(msg);\n break;\n case 'before-detach':\n this.notifyLayout(msg);\n this.onBeforeDetach(msg);\n break;\n case 'after-detach':\n this.clearFlag(Widget.Flag.IsVisible);\n this.clearFlag(Widget.Flag.IsAttached);\n this.notifyLayout(msg);\n this.onAfterDetach(msg);\n break;\n case 'activate-request':\n this.notifyLayout(msg);\n this.onActivateRequest(msg);\n break;\n case 'close-request':\n this.notifyLayout(msg);\n this.onCloseRequest(msg);\n break;\n case 'child-added':\n this.notifyLayout(msg);\n this.onChildAdded(msg);\n break;\n case 'child-removed':\n this.notifyLayout(msg);\n this.onChildRemoved(msg);\n break;\n default:\n this.notifyLayout(msg);\n break;\n }\n };\n /**\n * Invoke the message processing routine of the widget's layout.\n *\n * @param msg - The message to dispatch to the layout.\n *\n * #### Notes\n * This is a no-op if the widget does not have a layout.\n *\n * This will not typically be called directly by user code.\n */\n Widget.prototype.notifyLayout = function (msg) {\n if (this._layout) {\n this._layout.processParentMessage(msg);\n }\n };\n /**\n * A message handler invoked on a `'close-request'` message.\n *\n * #### Notes\n * The default implementation unparents or detaches the widget.\n */\n Widget.prototype.onCloseRequest = function (msg) {\n if (this.parent) {\n this.parent = null;\n }\n else if (this.isAttached) {\n Widget.detach(this);\n }\n };\n /**\n * A message handler invoked on a `'resize'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onResize = function (msg) { };\n /**\n * A message handler invoked on an `'update-request'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onUpdateRequest = function (msg) { };\n /**\n * A message handler invoked on a `'fit-request'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onFitRequest = function (msg) { };\n /**\n * A message handler invoked on an `'activate-request'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onActivateRequest = function (msg) { };\n /**\n * A message handler invoked on a `'before-show'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onBeforeShow = function (msg) { };\n /**\n * A message handler invoked on an `'after-show'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onAfterShow = function (msg) { };\n /**\n * A message handler invoked on a `'before-hide'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onBeforeHide = function (msg) { };\n /**\n * A message handler invoked on an `'after-hide'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onAfterHide = function (msg) { };\n /**\n * A message handler invoked on a `'before-attach'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onBeforeAttach = function (msg) { };\n /**\n * A message handler invoked on an `'after-attach'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onAfterAttach = function (msg) { };\n /**\n * A message handler invoked on a `'before-detach'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onBeforeDetach = function (msg) { };\n /**\n * A message handler invoked on an `'after-detach'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onAfterDetach = function (msg) { };\n /**\n * A message handler invoked on a `'child-added'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onChildAdded = function (msg) { };\n /**\n * A message handler invoked on a `'child-removed'` message.\n *\n * #### Notes\n * The default implementation of this handler is a no-op.\n */\n Widget.prototype.onChildRemoved = function (msg) { };\n return Widget;\n}());\nexports.Widget = Widget;\n/**\n * The namespace for the `Widget` class statics.\n */\n(function (Widget) {\n /**\n * An enum of widget bit flags.\n */\n var Flag;\n (function (Flag) {\n /**\n * The widget has been disposed.\n */\n Flag[Flag[\"IsDisposed\"] = 1] = \"IsDisposed\";\n /**\n * The widget is attached to the DOM.\n */\n Flag[Flag[\"IsAttached\"] = 2] = \"IsAttached\";\n /**\n * The widget is hidden.\n */\n Flag[Flag[\"IsHidden\"] = 4] = \"IsHidden\";\n /**\n * The widget is visible.\n */\n Flag[Flag[\"IsVisible\"] = 8] = \"IsVisible\";\n /**\n * A layout cannot be set on the widget.\n */\n Flag[Flag[\"DisallowLayout\"] = 16] = \"DisallowLayout\";\n })(Flag = Widget.Flag || (Widget.Flag = {}));\n /**\n * A collection of stateless messages related to widgets.\n */\n var Msg;\n (function (Msg) {\n /**\n * A singleton `'before-show'` message.\n *\n * #### Notes\n * This message is sent to a widget before it becomes visible.\n *\n * This message is **not** sent when the widget is being attached.\n */\n Msg.BeforeShow = new messaging_1.Message('before-show');\n /**\n * A singleton `'after-show'` message.\n *\n * #### Notes\n * This message is sent to a widget after it becomes visible.\n *\n * This message is **not** sent when the widget is being attached.\n */\n Msg.AfterShow = new messaging_1.Message('after-show');\n /**\n * A singleton `'before-hide'` message.\n *\n * #### Notes\n * This message is sent to a widget before it becomes not-visible.\n *\n * This message is **not** sent when the widget is being detached.\n */\n Msg.BeforeHide = new messaging_1.Message('before-hide');\n /**\n * A singleton `'after-hide'` message.\n *\n * #### Notes\n * This message is sent to a widget after it becomes not-visible.\n *\n * This message is **not** sent when the widget is being detached.\n */\n Msg.AfterHide = new messaging_1.Message('after-hide');\n /**\n * A singleton `'before-attach'` message.\n *\n * #### Notes\n * This message is sent to a widget before it is attached.\n */\n Msg.BeforeAttach = new messaging_1.Message('before-attach');\n /**\n * A singleton `'after-attach'` message.\n *\n * #### Notes\n * This message is sent to a widget after it is attached.\n */\n Msg.AfterAttach = new messaging_1.Message('after-attach');\n /**\n * A singleton `'before-detach'` message.\n *\n * #### Notes\n * This message is sent to a widget before it is detached.\n */\n Msg.BeforeDetach = new messaging_1.Message('before-detach');\n /**\n * A singleton `'after-detach'` message.\n *\n * #### Notes\n * This message is sent to a widget after it is detached.\n */\n Msg.AfterDetach = new messaging_1.Message('after-detach');\n /**\n * A singleton `'parent-changed'` message.\n *\n * #### Notes\n * This message is sent to a widget when its parent has changed.\n */\n Msg.ParentChanged = new messaging_1.Message('parent-changed');\n /**\n * A singleton conflatable `'update-request'` message.\n *\n * #### Notes\n * This message can be dispatched to supporting widgets in order to\n * update their content based on the current widget state. Not all\n * widgets will respond to messages of this type.\n *\n * For widgets with a layout, this message will inform the layout to\n * update the position and size of its child widgets.\n */\n Msg.UpdateRequest = new messaging_1.ConflatableMessage('update-request');\n /**\n * A singleton conflatable `'fit-request'` message.\n *\n * #### Notes\n * For widgets with a layout, this message will inform the layout to\n * recalculate its size constraints to fit the space requirements of\n * its child widgets, and to update their position and size. Not all\n * layouts will respond to messages of this type.\n */\n Msg.FitRequest = new messaging_1.ConflatableMessage('fit-request');\n /**\n * A singleton conflatable `'activate-request'` message.\n *\n * #### Notes\n * This message should be dispatched to a widget when it should\n * perform the actions necessary to activate the widget, which\n * may include focusing its node or descendant node.\n */\n Msg.ActivateRequest = new messaging_1.ConflatableMessage('activate-request');\n /**\n * A singleton conflatable `'close-request'` message.\n *\n * #### Notes\n * This message should be dispatched to a widget when it should close\n * and remove itself from the widget hierarchy.\n */\n Msg.CloseRequest = new messaging_1.ConflatableMessage('close-request');\n })(Msg = Widget.Msg || (Widget.Msg = {}));\n /**\n * A message class for child related messages.\n */\n var ChildMessage = /** @class */ (function (_super) {\n __extends(ChildMessage, _super);\n /**\n * Construct a new child message.\n *\n * @param type - The message type.\n *\n * @param child - The child widget for the message.\n */\n function ChildMessage(type, child) {\n var _this = _super.call(this, type) || this;\n _this.child = child;\n return _this;\n }\n return ChildMessage;\n }(messaging_1.Message));\n Widget.ChildMessage = ChildMessage;\n /**\n * A message class for `'resize'` messages.\n */\n var ResizeMessage = /** @class */ (function (_super) {\n __extends(ResizeMessage, _super);\n /**\n * Construct a new resize message.\n *\n * @param width - The **offset width** of the widget, or `-1` if\n * the width is not known.\n *\n * @param height - The **offset height** of the widget, or `-1` if\n * the height is not known.\n */\n function ResizeMessage(width, height) {\n var _this = _super.call(this, 'resize') || this;\n _this.width = width;\n _this.height = height;\n return _this;\n }\n return ResizeMessage;\n }(messaging_1.Message));\n Widget.ResizeMessage = ResizeMessage;\n /**\n * The namespace for the `ResizeMessage` class statics.\n */\n (function (ResizeMessage) {\n /**\n * A singleton `'resize'` message with an unknown size.\n */\n ResizeMessage.UnknownSize = new ResizeMessage(-1, -1);\n })(ResizeMessage = Widget.ResizeMessage || (Widget.ResizeMessage = {}));\n /**\n * Attach a widget to a host DOM node.\n *\n * @param widget - The widget of interest.\n *\n * @param host - The DOM node to use as the widget's host.\n *\n * @param ref - The child of `host` to use as the reference element.\n * If this is provided, the widget will be inserted before this\n * node in the host. The default is `null`, which will cause the\n * widget to be added as the last child of the host.\n *\n * #### Notes\n * This will throw an error if the widget is not a root widget, if\n * the widget is already attached, or if the host is not attached\n * to the DOM.\n */\n function attach(widget, host, ref) {\n if (ref === void 0) { ref = null; }\n if (widget.parent) {\n throw new Error('Cannot attach a child widget.');\n }\n if (widget.isAttached || document.body.contains(widget.node)) {\n throw new Error('Widget is already attached.');\n }\n if (!document.body.contains(host)) {\n throw new Error('Host is not attached.');\n }\n messaging_1.MessageLoop.sendMessage(widget, Widget.Msg.BeforeAttach);\n host.insertBefore(widget.node, ref);\n messaging_1.MessageLoop.sendMessage(widget, Widget.Msg.AfterAttach);\n }\n Widget.attach = attach;\n /**\n * Detach the widget from its host DOM node.\n *\n * @param widget - The widget of interest.\n *\n * #### Notes\n * This will throw an error if the widget is not a root widget,\n * or if the widget is not attached to the DOM.\n */\n function detach(widget) {\n if (widget.parent) {\n throw new Error('Cannot detach a child widget.');\n }\n if (!widget.isAttached || !document.body.contains(widget.node)) {\n throw new Error('Widget is not attached.');\n }\n messaging_1.MessageLoop.sendMessage(widget, Widget.Msg.BeforeDetach);\n widget.node.parentNode.removeChild(widget.node);\n messaging_1.MessageLoop.sendMessage(widget, Widget.Msg.AfterDetach);\n }\n Widget.detach = detach;\n})(Widget = exports.Widget || (exports.Widget = {}));\nexports.Widget = Widget;\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * An attached property for the widget title object.\n */\n Private.titleProperty = new properties_1.AttachedProperty({\n name: 'title',\n create: function (owner) { return new title_1.Title({ owner: owner }); },\n });\n /**\n * Create a DOM node for the given widget options.\n */\n function createNode(options) {\n return options.node || document.createElement('div');\n }\n Private.createNode = createNode;\n})(Private || (Private = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/lib/widget.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1.js": +/*!******************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1.js ***! + \******************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst asn1 = exports;\n\nasn1.bignum = __webpack_require__(/*! bn.js */ \"./node_modules/asn1.js/node_modules/bn.js/lib/bn.js\");\n\nasn1.define = (__webpack_require__(/*! ./asn1/api */ \"./node_modules/asn1.js/lib/asn1/api.js\").define);\nasn1.base = __webpack_require__(/*! ./asn1/base */ \"./node_modules/asn1.js/lib/asn1/base/index.js\");\nasn1.constants = __webpack_require__(/*! ./asn1/constants */ \"./node_modules/asn1.js/lib/asn1/constants/index.js\");\nasn1.decoders = __webpack_require__(/*! ./asn1/decoders */ \"./node_modules/asn1.js/lib/asn1/decoders/index.js\");\nasn1.encoders = __webpack_require__(/*! ./asn1/encoders */ \"./node_modules/asn1.js/lib/asn1/encoders/index.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/api.js": +/*!**********************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/api.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst encoders = __webpack_require__(/*! ./encoders */ \"./node_modules/asn1.js/lib/asn1/encoders/index.js\");\nconst decoders = __webpack_require__(/*! ./decoders */ \"./node_modules/asn1.js/lib/asn1/decoders/index.js\");\nconst inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/api.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/buffer.js": +/*!******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/buffer.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\nconst Reporter = (__webpack_require__(/*! ../base/reporter */ \"./node_modules/asn1.js/lib/asn1/base/reporter.js\").Reporter);\nconst Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/base/buffer.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst base = exports;\n\nbase.Reporter = (__webpack_require__(/*! ./reporter */ \"./node_modules/asn1.js/lib/asn1/base/reporter.js\").Reporter);\nbase.DecoderBuffer = (__webpack_require__(/*! ./buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer);\nbase.EncoderBuffer = (__webpack_require__(/*! ./buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").EncoderBuffer);\nbase.Node = __webpack_require__(/*! ./node */ \"./node_modules/asn1.js/lib/asn1/base/node.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/base/index.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/node.js": +/*!****************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/node.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst Reporter = (__webpack_require__(/*! ../base/reporter */ \"./node_modules/asn1.js/lib/asn1/base/reporter.js\").Reporter);\nconst EncoderBuffer = (__webpack_require__(/*! ../base/buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").EncoderBuffer);\nconst DecoderBuffer = (__webpack_require__(/*! ../base/buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer);\nconst assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/base/node.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/base/reporter.js": +/*!********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/base/reporter.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/base/reporter.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/constants/der.js": +/*!********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/constants/der.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/constants/der.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/constants/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/constants/index.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/constants/der.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/constants/index.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/decoders/der.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/decoders/der.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nconst bignum = __webpack_require__(/*! bn.js */ \"./node_modules/asn1.js/node_modules/bn.js/lib/bn.js\");\nconst DecoderBuffer = (__webpack_require__(/*! ../base/buffer */ \"./node_modules/asn1.js/lib/asn1/base/buffer.js\").DecoderBuffer);\nconst Node = __webpack_require__(/*! ../base/node */ \"./node_modules/asn1.js/lib/asn1/base/node.js\");\n\n// Import DER constants\nconst der = __webpack_require__(/*! ../constants/der */ \"./node_modules/asn1.js/lib/asn1/constants/der.js\");\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/decoders/der.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/decoders/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/decoders/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst decoders = exports;\n\ndecoders.der = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/decoders/der.js\");\ndecoders.pem = __webpack_require__(/*! ./pem */ \"./node_modules/asn1.js/lib/asn1/decoders/pem.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/decoders/index.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/decoders/pem.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/decoders/pem.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\nconst Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\n\nconst DERDecoder = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/decoders/der.js\");\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/decoders/pem.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/encoders/der.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/encoders/der.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\nconst Buffer = (__webpack_require__(/*! safer-buffer */ \"./node_modules/safer-buffer/safer.js\").Buffer);\nconst Node = __webpack_require__(/*! ../base/node */ \"./node_modules/asn1.js/lib/asn1/base/node.js\");\n\n// Import DER constants\nconst der = __webpack_require__(/*! ../constants/der */ \"./node_modules/asn1.js/lib/asn1/constants/der.js\");\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/encoders/der.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/encoders/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/encoders/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst encoders = exports;\n\nencoders.der = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/encoders/der.js\");\nencoders.pem = __webpack_require__(/*! ./pem */ \"./node_modules/asn1.js/lib/asn1/encoders/pem.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/encoders/index.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/lib/asn1/encoders/pem.js": +/*!*******************************************************!*\ + !*** ./node_modules/asn1.js/lib/asn1/encoders/pem.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nconst DEREncoder = __webpack_require__(/*! ./der */ \"./node_modules/asn1.js/lib/asn1/encoders/der.js\");\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/lib/asn1/encoders/pem.js?"); + +/***/ }), + +/***/ "./node_modules/asn1.js/node_modules/bn.js/lib/bn.js": +/*!***********************************************************!*\ + !*** ./node_modules/asn1.js/node_modules/bn.js/lib/bn.js ***! + \***********************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = (__webpack_require__(/*! buffer */ \"?d546\").Buffer);\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/asn1.js/node_modules/bn.js/lib/bn.js?"); + +/***/ }), + +/***/ "./node_modules/base64-js/index.js": +/*!*****************************************!*\ + !*** ./node_modules/base64-js/index.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/base64-js/index.js?"); + +/***/ }), + +/***/ "./node_modules/bn.js/lib/bn.js": +/*!**************************************!*\ + !*** ./node_modules/bn.js/lib/bn.js ***! + \**************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = (__webpack_require__(/*! buffer */ \"?8131\").Buffer);\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n var b;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/bn.js/lib/bn.js?"); + +/***/ }), + +/***/ "./node_modules/brorand/index.js": +/*!***************************************!*\ + !*** ./node_modules/brorand/index.js ***! + \***************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = __webpack_require__(/*! crypto */ \"?3fc0\");\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/brorand/index.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/aes.js": +/*!********************************************!*\ + !*** ./node_modules/browserify-aes/aes.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/aes.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/authCipher.js": +/*!***************************************************!*\ + !*** ./node_modules/browserify-aes/authCipher.js ***! + \***************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar GHASH = __webpack_require__(/*! ./ghash */ \"./node_modules/browserify-aes/ghash.js\")\nvar xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\")\nvar incr32 = __webpack_require__(/*! ./incr32 */ \"./node_modules/browserify-aes/incr32.js\")\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/authCipher.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/browser.js": +/*!************************************************!*\ + !*** ./node_modules/browserify-aes/browser.js ***! + \************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var ciphers = __webpack_require__(/*! ./encrypter */ \"./node_modules/browserify-aes/encrypter.js\")\nvar deciphers = __webpack_require__(/*! ./decrypter */ \"./node_modules/browserify-aes/decrypter.js\")\nvar modes = __webpack_require__(/*! ./modes/list.json */ \"./node_modules/browserify-aes/modes/list.json\")\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/browser.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/decrypter.js": +/*!**************************************************!*\ + !*** ./node_modules/browserify-aes/decrypter.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var AuthCipher = __webpack_require__(/*! ./authCipher */ \"./node_modules/browserify-aes/authCipher.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar MODES = __webpack_require__(/*! ./modes */ \"./node_modules/browserify-aes/modes/index.js\")\nvar StreamCipher = __webpack_require__(/*! ./streamCipher */ \"./node_modules/browserify-aes/streamCipher.js\")\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\nvar aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\")\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/evp_bytestokey/index.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/decrypter.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/encrypter.js": +/*!**************************************************!*\ + !*** ./node_modules/browserify-aes/encrypter.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var MODES = __webpack_require__(/*! ./modes */ \"./node_modules/browserify-aes/modes/index.js\")\nvar AuthCipher = __webpack_require__(/*! ./authCipher */ \"./node_modules/browserify-aes/authCipher.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar StreamCipher = __webpack_require__(/*! ./streamCipher */ \"./node_modules/browserify-aes/streamCipher.js\")\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\nvar aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\")\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/evp_bytestokey/index.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/encrypter.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/ghash.js": +/*!**********************************************!*\ + !*** ./node_modules/browserify-aes/ghash.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/ghash.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/incr32.js": +/*!***********************************************!*\ + !*** ./node_modules/browserify-aes/incr32.js ***! + \***********************************************/ +/***/ ((module) => { + +eval("function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/incr32.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/cbc.js": +/*!**************************************************!*\ + !*** ./node_modules/browserify-aes/modes/cbc.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\")\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/cbc.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/cfb.js": +/*!**************************************************!*\ + !*** ./node_modules/browserify-aes/modes/cfb.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\")\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/cfb.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/cfb1.js": +/*!***************************************************!*\ + !*** ./node_modules/browserify-aes/modes/cfb1.js ***! + \***************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/cfb1.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/cfb8.js": +/*!***************************************************!*\ + !*** ./node_modules/browserify-aes/modes/cfb8.js ***! + \***************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/cfb8.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/ctr.js": +/*!**************************************************!*\ + !*** ./node_modules/browserify-aes/modes/ctr.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar incr32 = __webpack_require__(/*! ../incr32 */ \"./node_modules/browserify-aes/incr32.js\")\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/ctr.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/ecb.js": +/*!**************************************************!*\ + !*** ./node_modules/browserify-aes/modes/ecb.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +eval("exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/ecb.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/index.js": +/*!****************************************************!*\ + !*** ./node_modules/browserify-aes/modes/index.js ***! + \****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var modeModules = {\n ECB: __webpack_require__(/*! ./ecb */ \"./node_modules/browserify-aes/modes/ecb.js\"),\n CBC: __webpack_require__(/*! ./cbc */ \"./node_modules/browserify-aes/modes/cbc.js\"),\n CFB: __webpack_require__(/*! ./cfb */ \"./node_modules/browserify-aes/modes/cfb.js\"),\n CFB8: __webpack_require__(/*! ./cfb8 */ \"./node_modules/browserify-aes/modes/cfb8.js\"),\n CFB1: __webpack_require__(/*! ./cfb1 */ \"./node_modules/browserify-aes/modes/cfb1.js\"),\n OFB: __webpack_require__(/*! ./ofb */ \"./node_modules/browserify-aes/modes/ofb.js\"),\n CTR: __webpack_require__(/*! ./ctr */ \"./node_modules/browserify-aes/modes/ctr.js\"),\n GCM: __webpack_require__(/*! ./ctr */ \"./node_modules/browserify-aes/modes/ctr.js\")\n}\n\nvar modes = __webpack_require__(/*! ./list.json */ \"./node_modules/browserify-aes/modes/list.json\")\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/index.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/modes/ofb.js": +/*!**************************************************!*\ + !*** ./node_modules/browserify-aes/modes/ofb.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var xor = __webpack_require__(/*! buffer-xor */ \"./node_modules/buffer-xor/index.js\")\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/modes/ofb.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-aes/streamCipher.js": +/*!*****************************************************!*\ + !*** ./node_modules/browserify-aes/streamCipher.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var aes = __webpack_require__(/*! ./aes */ \"./node_modules/browserify-aes/aes.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar Transform = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-aes/streamCipher.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-cipher/browser.js": +/*!***************************************************!*\ + !*** ./node_modules/browserify-cipher/browser.js ***! + \***************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var DES = __webpack_require__(/*! browserify-des */ \"./node_modules/browserify-des/index.js\")\nvar aes = __webpack_require__(/*! browserify-aes/browser */ \"./node_modules/browserify-aes/browser.js\")\nvar aesModes = __webpack_require__(/*! browserify-aes/modes */ \"./node_modules/browserify-aes/modes/index.js\")\nvar desModes = __webpack_require__(/*! browserify-des/modes */ \"./node_modules/browserify-des/modes.js\")\nvar ebtk = __webpack_require__(/*! evp_bytestokey */ \"./node_modules/evp_bytestokey/index.js\")\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-cipher/browser.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-des/index.js": +/*!**********************************************!*\ + !*** ./node_modules/browserify-des/index.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var CipherBase = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\nvar des = __webpack_require__(/*! des.js */ \"./node_modules/des.js/lib/des.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-des/index.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-des/modes.js": +/*!**********************************************!*\ + !*** ./node_modules/browserify-des/modes.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, exports) => { + +eval("exports[\"des-ecb\"] = {\n key: 8,\n iv: 0\n}\nexports[\"des-cbc\"] = exports.des = {\n key: 8,\n iv: 8\n}\nexports[\"des-ede3-cbc\"] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports[\"des-ede3\"] = {\n key: 24,\n iv: 0\n}\nexports[\"des-ede-cbc\"] = {\n key: 16,\n iv: 8\n}\nexports[\"des-ede\"] = {\n key: 16,\n iv: 0\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-des/modes.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-rsa/index.js": +/*!**********************************************!*\ + !*** ./node_modules/browserify-rsa/index.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var bn = __webpack_require__(/*! bn.js */ \"./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js\");\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\nmodule.exports = crt;\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(bn.mont(priv.modulus))\n .redPow(new bn(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder:r.invm(priv.modulus)\n };\n}\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var mod = bn.mont(priv.modulus);\n var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(bn.mont(priv.prime1));\n var c2 = blinded.toRed(bn.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1);\n var m2 = c2.redPow(priv.exponent2);\n m1 = m1.fromRed();\n m2 = m2.fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p);\n h.imul(q);\n m2.iadd(h);\n return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n}\ncrt.getr = getr;\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r = new bn(randomBytes(len));\n while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n r = new bn(randomBytes(len));\n }\n return r;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-rsa/index.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js": +/*!******************************************************************!*\ + !*** ./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = (__webpack_require__(/*! buffer */ \"?f9d4\").Buffer);\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/algos.js": +/*!***********************************************!*\ + !*** ./node_modules/browserify-sign/algos.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("module.exports = __webpack_require__(/*! ./browser/algorithms.json */ \"./node_modules/browserify-sign/browser/algorithms.json\")\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/algos.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/browser/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/browserify-sign/browser/index.js ***! + \*******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/browserify-sign/node_modules/safe-buffer/index.js\").Buffer)\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\")\nvar stream = __webpack_require__(/*! readable-stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js\")\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar sign = __webpack_require__(/*! ./sign */ \"./node_modules/browserify-sign/browser/sign.js\")\nvar verify = __webpack_require__(/*! ./verify */ \"./node_modules/browserify-sign/browser/verify.js\")\n\nvar algorithms = __webpack_require__(/*! ./algorithms.json */ \"./node_modules/browserify-sign/browser/algorithms.json\")\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/browser/index.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/browser/sign.js": +/*!******************************************************!*\ + !*** ./node_modules/browserify-sign/browser/sign.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/browserify-sign/node_modules/safe-buffer/index.js\").Buffer)\nvar createHmac = __webpack_require__(/*! create-hmac */ \"./node_modules/create-hmac/browser.js\")\nvar crt = __webpack_require__(/*! browserify-rsa */ \"./node_modules/browserify-rsa/index.js\")\nvar EC = (__webpack_require__(/*! elliptic */ \"./node_modules/elliptic/lib/elliptic.js\").ec)\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/bn.js/lib/bn.js\")\nvar parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/parse-asn1/index.js\")\nvar curves = __webpack_require__(/*! ./curves.json */ \"./node_modules/browserify-sign/browser/curves.json\")\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/browser/sign.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/browser/verify.js": +/*!********************************************************!*\ + !*** ./node_modules/browserify-sign/browser/verify.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/browserify-sign/node_modules/safe-buffer/index.js\").Buffer)\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/bn.js/lib/bn.js\")\nvar EC = (__webpack_require__(/*! elliptic */ \"./node_modules/elliptic/lib/elliptic.js\").ec)\nvar parseKeys = __webpack_require__(/*! parse-asn1 */ \"./node_modules/parse-asn1/index.js\")\nvar curves = __webpack_require__(/*! ./curves.json */ \"./node_modules/browserify-sign/browser/curves.json\")\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/browser/verify.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js ***! + \*************************************************************************************/ +/***/ ((module) => { + +"use strict"; +eval("\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js ***! + \*****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js\");\n\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = (__webpack_require__(/*! events */ \"./node_modules/events/events.js\").EventEmitter);\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\n\nvar OurUint8Array = __webpack_require__.g.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = __webpack_require__(/*! util */ \"?593c\");\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js\");\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js\");\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(/*! ./internal/streams/from */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js\");\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js ***! + \********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/util-deprecate/browser.js\")\n};\n/**/\n\n/**/\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\n\nvar OurUint8Array = __webpack_require__.g.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\"); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\"),\n Buffer = _require.Buffer;\n\nvar _require2 = __webpack_require__(/*! util */ \"?cad2\"),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js ***! + \***************************************************************************************************/ +/***/ ((module) => { + +"use strict"; +eval(" // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js": +/*!*********************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes.ERR_STREAM_PREMATURE_CLOSE);\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js": +/*!********************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js ***! + \********************************************************************************************************/ +/***/ ((module) => { + +eval("module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = (__webpack_require__(/*! ../../../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar ERR_INVALID_OPT_VALUE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js\").codes.ERR_INVALID_OPT_VALUE);\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("module.exports = __webpack_require__(/*! events */ \"./node_modules/events/events.js\").EventEmitter;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js ***! + \***************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js\");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js\");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js\");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js\");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js\");\nexports.finished = __webpack_require__(/*! ./lib/internal/streams/end-of-stream.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\nexports.pipeline = __webpack_require__(/*! ./lib/internal/streams/pipeline.js */ \"./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js?"); + +/***/ }), + +/***/ "./node_modules/browserify-sign/node_modules/safe-buffer/index.js": +/*!************************************************************************!*\ + !*** ./node_modules/browserify-sign/node_modules/safe-buffer/index.js ***! + \************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/browserify-sign/node_modules/safe-buffer/index.js?"); + +/***/ }), + +/***/ "./node_modules/buffer-xor/index.js": +/*!******************************************!*\ + !*** ./node_modules/buffer-xor/index.js ***! + \******************************************/ +/***/ ((module) => { + +eval("module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/buffer-xor/index.js?"); + +/***/ }), + +/***/ "./node_modules/buffer/index.js": +/*!**************************************!*\ + !*** ./node_modules/buffer/index.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\n\nconst base64 = __webpack_require__(/*! base64-js */ \"./node_modules/base64-js/index.js\")\nconst ieee754 = __webpack_require__(/*! ieee754 */ \"./node_modules/ieee754/index.js\")\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/buffer/index.js?"); + +/***/ }), + +/***/ "./node_modules/cipher-base/index.js": +/*!*******************************************!*\ + !*** ./node_modules/cipher-base/index.js ***! + \*******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar Transform = (__webpack_require__(/*! stream */ \"./node_modules/stream-browserify/index.js\").Transform)\nvar StringDecoder = (__webpack_require__(/*! string_decoder */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder)\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/cipher-base/index.js?"); + +/***/ }), + +/***/ "./node_modules/create-ecdh/browser.js": +/*!*********************************************!*\ + !*** ./node_modules/create-ecdh/browser.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var elliptic = __webpack_require__(/*! elliptic */ \"./node_modules/elliptic/lib/elliptic.js\")\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js\")\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/create-ecdh/browser.js?"); + +/***/ }), + +/***/ "./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js": +/*!***************************************************************!*\ + !*** ./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js ***! + \***************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = (__webpack_require__(/*! buffer */ \"?4068\").Buffer);\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js?"); + +/***/ }), + +/***/ "./node_modules/create-hash/browser.js": +/*!*********************************************!*\ + !*** ./node_modules/create-hash/browser.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/md5.js/index.js\")\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/ripemd160/index.js\")\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/sha.js/index.js\")\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/create-hash/browser.js?"); + +/***/ }), + +/***/ "./node_modules/create-hash/md5.js": +/*!*****************************************!*\ + !*** ./node_modules/create-hash/md5.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/md5.js/index.js\")\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/create-hash/md5.js?"); + +/***/ }), + +/***/ "./node_modules/create-hmac/browser.js": +/*!*********************************************!*\ + !*** ./node_modules/create-hmac/browser.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Legacy = __webpack_require__(/*! ./legacy */ \"./node_modules/create-hmac/legacy.js\")\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar md5 = __webpack_require__(/*! create-hash/md5 */ \"./node_modules/create-hash/md5.js\")\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ \"./node_modules/ripemd160/index.js\")\n\nvar sha = __webpack_require__(/*! sha.js */ \"./node_modules/sha.js/index.js\")\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/create-hmac/browser.js?"); + +/***/ }), + +/***/ "./node_modules/create-hmac/legacy.js": +/*!********************************************!*\ + !*** ./node_modules/create-hmac/legacy.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\n\nvar Base = __webpack_require__(/*! cipher-base */ \"./node_modules/cipher-base/index.js\")\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/create-hmac/legacy.js?"); + +/***/ }), + +/***/ "./node_modules/crypto-browserify/index.js": +/*!*************************************************!*\ + !*** ./node_modules/crypto-browserify/index.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\")\nexports.createHash = exports.Hash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\")\nexports.createHmac = exports.Hmac = __webpack_require__(/*! create-hmac */ \"./node_modules/create-hmac/browser.js\")\n\nvar algos = __webpack_require__(/*! browserify-sign/algos */ \"./node_modules/browserify-sign/algos.js\")\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = __webpack_require__(/*! pbkdf2 */ \"./node_modules/pbkdf2/browser.js\")\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = __webpack_require__(/*! browserify-cipher */ \"./node_modules/browserify-cipher/browser.js\")\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = __webpack_require__(/*! diffie-hellman */ \"./node_modules/diffie-hellman/browser.js\")\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = __webpack_require__(/*! browserify-sign */ \"./node_modules/browserify-sign/browser/index.js\")\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = __webpack_require__(/*! create-ecdh */ \"./node_modules/create-ecdh/browser.js\")\n\nvar publicEncrypt = __webpack_require__(/*! public-encrypt */ \"./node_modules/public-encrypt/browser.js\")\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = __webpack_require__(/*! randomfill */ \"./node_modules/randomfill/browser.js\")\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/crypto-browserify/index.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/commandpalette.css": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/commandpalette.css ***! + \*************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-CommandPalette {\n font-family: sans-serif;\n background: #F5F5F5;\n}\n\n\n.p-CommandPalette-search {\n padding: 8px;\n}\n\n\n.p-CommandPalette-wrapper {\n padding: 4px 6px;\n background: white;\n border: 1px solid #E0E0E0;\n}\n\n\n.p-CommandPalette-input {\n width: 100%;\n border: none;\n outline: none;\n font-size: 16px;\n}\n\n\n.p-CommandPalette-header {\n padding: 4px;\n color: #757575;\n font-size: 12px;\n font-weight: 600;\n background: #E1E1E1;\n cursor: pointer;\n}\n\n\n.p-CommandPalette-header:hover::before {\n content: '\\\\2026'; /* ellipsis */\n float: right;\n margin-right: 4px;\n}\n\n\n.p-CommandPalette-header > mark {\n background-color: transparent;\n font-weight: bold;\n}\n\n\n.p-CommandPalette-item {\n padding: 4px 8px;\n color: #757575;\n font-size: 13px;\n font-weight: 500;\n}\n\n\n.p-CommandPalette-emptyMessage {\n padding: 4px;\n color: #757575;\n font-size: 12px;\n font-weight: 600;\n text-align: center;\n}\n\n\n.p-CommandPalette-item.p-mod-disabled {\n color: rgba(0, 0, 0, 0.25);\n}\n\n\n.p-CommandPalette-item.p-mod-active {\n background: #7FDBFF;\n}\n\n\n.p-CommandPalette-item:hover:not(.p-mod-active):not(.p-mod-disabled) {\n background: #E5E5E5;\n}\n\n\n.p-CommandPalette-itemIcon {\n display: none;\n}\n\n\n.p-CommandPalette-itemLabel > mark {\n background-color: transparent;\n font-weight: bold;\n}\n\n\n.p-CommandPalette-item.p-mod-disabled mark {\n color: rgba(0, 0, 0, 0.4);\n}\n\n\n.p-CommandPalette-itemCaption {\n color: #9E9E9E;\n font-size: 11px;\n font-weight: 400;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/commandpalette.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/datagrid.css": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/datagrid.css ***! + \*******************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2018, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n.p-DataGrid {\n min-width: 64px;\n min-height: 64px;\n border: 1px solid #A0A0A0;\n}\n\n\n.p-DataGrid-scrollCorner {\n background-color: #F0F0F0;\n}\n\n\n.p-DataGrid-scrollCorner::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n background-color: #A0A0A0;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/datagrid.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/dockpanel.css": +/*!********************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/dockpanel.css ***! + \********************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-DockPanel-overlay {\n background: rgba(255, 255, 255, 0.6);\n border: 1px dashed black;\n transition-property: top, left, right, bottom;\n transition-duration: 150ms;\n transition-timing-function: ease;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/dockpanel.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/index.css": +/*!****************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/index.css ***! + \****************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _css_loader_dist_cjs_js_dragdrop_style_index_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!../../dragdrop/style/index.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/dragdrop/style/index.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_widgets_style_index_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!../../widgets/style/index.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/index.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_commandpalette_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./commandpalette.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/commandpalette.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_datagrid_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./datagrid.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/datagrid.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_dockpanel_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./dockpanel.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/dockpanel.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_menu_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./menu.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/menu.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_menubar_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./menubar.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/menubar.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_scrollbar_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./scrollbar.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/scrollbar.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_tabbar_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./tabbar.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/tabbar.css\");\n// Imports\n\n\n\n\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_dragdrop_style_index_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_widgets_style_index_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_commandpalette_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_datagrid_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_dockpanel_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_menu_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_menubar_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_scrollbar_css__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_tabbar_css__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2018, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/index.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/menu.css": +/*!***************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/menu.css ***! + \***************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-Menu {\n padding: 3px 0px;\n background: white;\n color: rgba(0, 0, 0, 0.87);\n border: 1px solid #C0C0C0;\n font: 12px Helvetica, Arial, sans-serif;\n box-shadow: 0px 1px 6px rgba(0, 0, 0, 0.2);\n}\n\n\n.p-Menu-item.p-mod-active {\n background: #E5E5E5;\n}\n\n\n.p-Menu-item.p-mod-disabled {\n color: rgba(0, 0, 0, 0.25);\n}\n\n\n.p-Menu-itemIcon {\n width: 21px;\n padding: 4px 2px;\n}\n\n\n.p-Menu-itemLabel {\n padding: 4px 35px 4px 2px;\n}\n\n\n.p-Menu-itemMnemonic {\n text-decoration: underline;\n}\n\n\n.p-Menu-itemShortcut {\n padding: 4px 0px;\n}\n\n\n.p-Menu-itemSubmenuIcon {\n width: 16px;\n padding: 4px 0px;\n}\n\n\n.p-Menu-item[data-type='separator'] > div {\n padding: 0;\n height: 9px;\n}\n\n\n.p-Menu-item[data-type='separator'] > div::after {\n content: '';\n display: block;\n position: relative;\n top: 4px;\n border-top: 1px solid #DDDDDD;\n}\n\n\n.p-Menu-itemIcon::before,\n.p-Menu-itemSubmenuIcon::before {\n font-family: FontAwesome;\n}\n\n\n.p-Menu-item.p-mod-toggled > .p-Menu-itemIcon::before {\n content: '\\\\f00c';\n}\n\n\n.p-Menu-item[data-type='submenu'] > .p-Menu-itemSubmenuIcon::before {\n content: '\\\\f0da';\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/menu.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/menubar.css": +/*!******************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/menubar.css ***! + \******************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-MenuBar {\n padding-left: 5px;\n background: #FAFAFA;\n color: rgba(0, 0, 0, 0.87);\n border-bottom: 1px solid #DDDDDD;\n font: 13px Helvetica, Arial, sans-serif;\n}\n\n\n.p-MenuBar-menu {\n transform: translateY(-1px);\n}\n\n\n.p-MenuBar-item {\n padding: 4px 8px;\n border-left: 1px solid transparent;\n border-right: 1px solid transparent;\n}\n\n\n.p-MenuBar-item.p-mod-active {\n background: #E5E5E5;\n}\n\n\n.p-MenuBar.p-mod-active .p-MenuBar-item.p-mod-active {\n z-index: 10001;\n background: white;\n border-left: 1px solid #C0C0C0;\n border-right: 1px solid #C0C0C0;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/menubar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/scrollbar.css": +/*!********************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/scrollbar.css ***! + \********************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! ../images/caretleft.png */ \"./node_modules/@phosphor/default-theme/images/caretleft.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! ../images/caretright.png */ \"./node_modules/@phosphor/default-theme/images/caretright.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(/* asset import */ __webpack_require__(/*! ../images/caretup.png */ \"./node_modules/@phosphor/default-theme/images/caretup.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(/* asset import */ __webpack_require__(/*! ../images/caretdown.png */ \"./node_modules/@phosphor/default-theme/images/caretdown.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_3___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-ScrollBar[data-orientation='horizontal'] {\n min-height: 16px;\n max-height: 16px;\n min-width: 45px;\n border-top: 1px solid #A0A0A0;\n}\n\n\n.p-ScrollBar[data-orientation='vertical'] {\n min-width: 16px;\n max-width: 16px;\n min-height: 45px;\n border-left: 1px solid #A0A0A0;\n}\n\n\n.p-ScrollBar-button {\n background-color: #F0F0F0;\n background-position: center center;\n min-height: 15px;\n max-height: 15px;\n min-width: 15px;\n max-width: 15px;\n}\n\n\n.p-ScrollBar-button:hover {\n background-color: #DADADA;\n}\n\n\n.p-ScrollBar-button.p-mod-active {\n background-color: #CDCDCD;\n}\n\n\n.p-ScrollBar-track {\n background: #F0F0F0;\n}\n\n\n.p-ScrollBar-thumb {\n background: #CDCDCD;\n}\n\n\n.p-ScrollBar-thumb:hover {\n background: #BABABA;\n}\n\n\n.p-ScrollBar-thumb.p-mod-active {\n background: #A0A0A0;\n}\n\n\n.p-ScrollBar[data-orientation='horizontal'] .p-ScrollBar-thumb {\n height: 100%;\n min-width: 15px;\n border-left: 1px solid #A0A0A0;\n border-right: 1px solid #A0A0A0;\n}\n\n\n.p-ScrollBar[data-orientation='vertical'] .p-ScrollBar-thumb {\n width: 100%;\n min-height: 15px;\n border-top: 1px solid #A0A0A0;\n border-bottom: 1px solid #A0A0A0;\n}\n\n\n.p-ScrollBar[data-orientation='horizontal'] .p-ScrollBar-button[data-action='decrement'] {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n\n\n.p-ScrollBar[data-orientation='horizontal'] .p-ScrollBar-button[data-action='increment'] {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n}\n\n\n.p-ScrollBar[data-orientation='vertical'] .p-ScrollBar-button[data-action='decrement'] {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n\n\n.p-ScrollBar[data-orientation='vertical'] .p-ScrollBar-button[data-action='increment'] {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/scrollbar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/tabbar.css": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/default-theme/style/tabbar.css ***! + \*****************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-TabBar {\n min-height: 24px;\n max-height: 24px;\n}\n\n\n.p-TabBar-content {\n min-width: 0;\n min-height: 0;\n align-items: flex-end;\n border-bottom: 1px solid #C0C0C0;\n}\n\n\n.p-TabBar-tab {\n padding: 0px 10px;\n background: #E5E5E5;\n border: 1px solid #C0C0C0;\n border-bottom: none;\n font: 12px Helvetica, Arial, sans-serif;\n flex: 0 1 125px;\n min-height: 20px;\n max-height: 20px;\n min-width: 35px;\n margin-left: -1px;\n line-height: 20px;\n}\n\n\n.p-TabBar-tab.p-mod-current {\n background: white;\n}\n\n\n.p-TabBar-tab:hover:not(.p-mod-current) {\n background: #F0F0F0;\n}\n\n\n.p-TabBar-tab:first-child {\n margin-left: 0;\n}\n\n\n.p-TabBar-tab.p-mod-current {\n min-height: 23px;\n max-height: 23px;\n transform: translateY(1px);\n}\n\n\n.p-TabBar-tabIcon,\n.p-TabBar-tabLabel,\n.p-TabBar-tabCloseIcon {\n display: inline-block;\n}\n\n\n.p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon {\n margin-left: 4px;\n}\n\n\n.p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon:before {\n content: '\\\\f00d';\n font-family: FontAwesome;\n}\n\n\n.p-TabBar-tab.p-mod-drag-image {\n min-height: 23px;\n max-height: 23px;\n min-width: 125px;\n border: none;\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\n transform: translateX(-40%) translateY(-58%);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/default-theme/style/tabbar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/dragdrop/style/index.css": +/*!***********************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/dragdrop/style/index.css ***! + \***********************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\nbody.p-mod-override-cursor * {\n cursor: inherit !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/dragdrop/style/index.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/commandpalette.css": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/commandpalette.css ***! + \*******************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-CommandPalette {\n display: flex;\n flex-direction: column;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n\n.p-CommandPalette-search {\n flex: 0 0 auto;\n}\n\n\n.p-CommandPalette-content {\n flex: 1 1 auto;\n margin: 0;\n padding: 0;\n min-height: 0;\n overflow: auto;\n list-style-type: none;\n}\n\n\n.p-CommandPalette-header {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n\n.p-CommandPalette-item {\n display: flex;\n flex-direction: row;\n}\n\n\n.p-CommandPalette-itemIcon {\n flex: 0 0 auto;\n}\n\n\n.p-CommandPalette-itemContent {\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n\n.p-CommandPalette-itemShortcut {\n flex: 0 0 auto;\n}\n\n\n.p-CommandPalette-itemLabel {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/commandpalette.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/dockpanel.css": +/*!**************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/dockpanel.css ***! + \**************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-DockPanel {\n z-index: 0;\n}\n\n\n.p-DockPanel-widget {\n z-index: 0;\n}\n\n\n.p-DockPanel-tabBar {\n z-index: 1;\n}\n\n\n.p-DockPanel-handle {\n z-index: 2;\n}\n\n\n.p-DockPanel-handle.p-mod-hidden {\n display: none !important;\n}\n\n\n.p-DockPanel-handle:after {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n content: '';\n}\n\n\n.p-DockPanel-handle[data-orientation='horizontal'] {\n cursor: ew-resize;\n}\n\n\n.p-DockPanel-handle[data-orientation='vertical'] {\n cursor: ns-resize;\n}\n\n\n.p-DockPanel-handle[data-orientation='horizontal']:after {\n left: 50%;\n min-width: 8px;\n transform: translateX(-50%);\n}\n\n\n.p-DockPanel-handle[data-orientation='vertical']:after {\n top: 50%;\n min-height: 8px;\n transform: translateY(-50%);\n}\n\n\n.p-DockPanel-overlay {\n z-index: 3;\n box-sizing: border-box;\n pointer-events: none;\n}\n\n\n.p-DockPanel-overlay.p-mod-hidden {\n display: none !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/dockpanel.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/index.css": +/*!**********************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/index.css ***! + \**********************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _css_loader_dist_cjs_js_widget_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./widget.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/widget.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_commandpalette_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./commandpalette.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/commandpalette.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_dockpanel_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./dockpanel.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/dockpanel.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_menu_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./menu.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/menu.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_menubar_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./menubar.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/menubar.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_scrollbar_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./scrollbar.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/scrollbar.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_splitpanel_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./splitpanel.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/splitpanel.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_tabbar_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./tabbar.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/tabbar.css\");\n/* harmony import */ var _css_loader_dist_cjs_js_tabpanel_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! -!../../../css-loader/dist/cjs.js!./tabpanel.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/tabpanel.css\");\n// Imports\n\n\n\n\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_widget_css__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_commandpalette_css__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_dockpanel_css__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_menu_css__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_menubar_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_scrollbar_css__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_splitpanel_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_tabbar_css__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n___CSS_LOADER_EXPORT___.i(_css_loader_dist_cjs_js_tabpanel_css__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/index.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/menu.css": +/*!*********************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/menu.css ***! + \*********************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-Menu {\n z-index: 10000;\n position: absolute;\n white-space: nowrap;\n overflow-x: hidden;\n overflow-y: auto;\n outline: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n\n.p-Menu-content {\n margin: 0;\n padding: 0;\n display: table;\n list-style-type: none;\n}\n\n\n.p-Menu-item {\n display: table-row;\n}\n\n\n.p-Menu-item.p-mod-hidden,\n.p-Menu-item.p-mod-collapsed {\n display: none !important;\n}\n\n\n.p-Menu-itemIcon,\n.p-Menu-itemSubmenuIcon {\n display: table-cell;\n text-align: center;\n}\n\n\n.p-Menu-itemLabel {\n display: table-cell;\n text-align: left;\n}\n\n\n.p-Menu-itemShortcut {\n display: table-cell;\n text-align: right;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/menu.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/menubar.css": +/*!************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/menubar.css ***! + \************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-MenuBar {\n outline: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n\n.p-MenuBar-content {\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: row;\n list-style-type: none;\n}\n\n\n.p-MenuBar-item {\n box-sizing: border-box;\n}\n\n\n.p-MenuBar-itemIcon,\n.p-MenuBar-itemLabel {\n display: inline-block;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/menubar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/scrollbar.css": +/*!**************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/scrollbar.css ***! + \**************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-ScrollBar {\n display: flex;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n\n.p-ScrollBar[data-orientation='horizontal'] {\n flex-direction: row;\n}\n\n\n.p-ScrollBar[data-orientation='vertical'] {\n flex-direction: column;\n}\n\n\n.p-ScrollBar-button {\n box-sizing: border-box;\n flex: 0 0 auto;\n}\n\n\n.p-ScrollBar-track {\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n flex: 1 1 auto;\n}\n\n\n.p-ScrollBar-thumb {\n box-sizing: border-box;\n position: absolute;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/scrollbar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/splitpanel.css": +/*!***************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/splitpanel.css ***! + \***************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-SplitPanel-child {\n z-index: 0;\n}\n\n\n.p-SplitPanel-handle {\n z-index: 1;\n}\n\n\n.p-SplitPanel-handle.p-mod-hidden {\n display: none !important;\n}\n\n\n.p-SplitPanel-handle:after {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n content: '';\n}\n\n\n.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle {\n cursor: ew-resize;\n}\n\n\n.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle {\n cursor: ns-resize;\n}\n\n\n.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle:after {\n left: 50%;\n min-width: 8px;\n transform: translateX(-50%);\n}\n\n\n.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle:after {\n top: 50%;\n min-height: 8px;\n transform: translateY(-50%);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/splitpanel.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/tabbar.css": +/*!***********************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/tabbar.css ***! + \***********************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-TabBar {\n display: flex;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n\n.p-TabBar[data-orientation='horizontal'] {\n flex-direction: row;\n}\n\n\n.p-TabBar[data-orientation='vertical'] {\n flex-direction: column;\n}\n\n\n.p-TabBar-content {\n margin: 0;\n padding: 0;\n display: flex;\n flex: 1 1 auto;\n list-style-type: none;\n}\n\n\n.p-TabBar[data-orientation='horizontal'] > .p-TabBar-content {\n flex-direction: row;\n}\n\n\n.p-TabBar[data-orientation='vertical'] > .p-TabBar-content {\n flex-direction: column;\n}\n\n\n.p-TabBar-tab {\n display: flex;\n flex-direction: row;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n\n.p-TabBar-tabIcon,\n.p-TabBar-tabCloseIcon {\n flex: 0 0 auto;\n}\n\n\n.p-TabBar-tabLabel {\n flex: 1 1 auto;\n overflow: hidden;\n white-space: nowrap;\n}\n\n\n.p-TabBar-tab.p-mod-hidden {\n display: none !important;\n}\n\n\n.p-TabBar.p-mod-dragging .p-TabBar-tab {\n position: relative;\n}\n\n\n.p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab {\n left: 0;\n transition: left 150ms ease;\n}\n\n\n.p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab {\n top: 0;\n transition: top 150ms ease;\n}\n\n\n.p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging {\n transition: none;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/tabbar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/tabpanel.css": +/*!*************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/tabpanel.css ***! + \*************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-TabPanel-tabBar {\n z-index: 1;\n}\n\n\n.p-TabPanel-stackedPanel {\n z-index: 0;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/tabpanel.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/widget.css": +/*!***********************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@phosphor/widgets/style/widget.css ***! + \***********************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n\n\n.p-Widget {\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n cursor: default;\n}\n\n\n.p-Widget.p-mod-hidden {\n display: none !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/@phosphor/widgets/style/widget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./src/index.less": +/*!*****************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./src/index.less ***! + \*****************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `body {\n display: flex;\n flex-direction: column;\n color: #cccccc;\n background: #252526;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0;\n padding: 0;\n overflow: hidden;\n font-family: sans-serif;\n}\na:link {\n color: #0cc;\n text-decoration: none;\n}\na:visited {\n color: #0cc;\n text-decoration: none;\n}\na:hover {\n text-decoration: none;\n}\na:active {\n text-decoration: none;\n}\n#menuBar {\n background: #252526;\n color: #cccccc;\n flex: 0 0 auto;\n}\n#main {\n flex: 1 1 auto;\n}\n#tree {\n max-width: 300px;\n background: #252526;\n border-right: 1px solid #DDDDDD;\n}\n#problems {\n min-height: 200px;\n background: #252526;\n border-top: 1px solid #DDDDDD;\n}\n.help {\n overflow: auto;\n}\n#dock {\n padding: 4px;\n}\n.p-TabBar-tab {\n background: unset;\n}\n.p-TabBar-tab.p-mod-current {\n background: unset;\n}\n.editor > div {\n flex: 1 1 auto;\n border: 1px solid #505050;\n overflow: none;\n}\n.content ul {\n padding-left: 1em;\n}\n.content ul li {\n font-family: monospace;\n list-style-type: none;\n}\n.abapHighlightDefinitions {\n background-color: darkgreen;\n}\n.abapHighlightReads {\n border: 1px solid red;\n}\n.abapHighlightWrites {\n outline: 1px solid blue;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./src/index.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css": +/*!*************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css ***! + \*************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-action-bar {\n\twhite-space: nowrap;\n\theight: 100%;\n}\n\n.monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\theight: 100%;\n\twidth: 100%;\n\talign-items: center;\n}\n\n.monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-action-bar .action-item {\n\tdisplay: block;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-action-bar .action-item .icon,\n.monaco-action-bar .action-item .codicon {\n\tdisplay: block;\n}\n\n.monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 16px;\n\theight: 16px;\n}\n\n.monaco-action-bar .action-label {\n\tdisplay: flex;\n\tfont-size: 11px;\n\tpadding: 3px;\n\tborder-radius: 5px;\n}\n\n.monaco-action-bar .action-item.disabled .action-label,\n.monaco-action-bar .action-item.disabled .action-label::before,\n.monaco-action-bar .action-item.disabled .action-label:hover {\n\topacity: 0.6;\n}\n\n/* Vertical actions */\n\n.monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid #bbb;\n\tpadding-top: 1px;\n\tmargin-left: .8em;\n\tmargin-right: .8em;\n}\n\n.monaco-action-bar .action-item .action-label.separator {\n\twidth: 1px;\n\theight: 16px;\n\tmargin: 5px 4px !important;\n\tcursor: default;\n\tmin-width: 1px;\n\tpadding: 0;\n\tbackground-color: #bbb;\n}\n\n.secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-action-bar .action-item.action-dropdown-item {\n\tdisplay: flex;\n}\n\n.monaco-action-bar .action-item.action-dropdown-item > .action-dropdown-item-separator {\n\tdisplay: flex;\n\talign-items: center;\n\tcursor: default;\n}\n\n.monaco-action-bar .action-item.action-dropdown-item > .action-dropdown-item-separator > div {\n\twidth: 1px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css": +/*!***************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css ***! + \***************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-aria-container {\n\tposition: absolute; /* try to hide from window but not from screen readers */\n\tleft:-999em;\n}`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css": +/*!*******************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css ***! + \*******************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-text-button {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\twidth: 100%;\n\tpadding: 4px;\n\tborder-radius: 2px;\n\ttext-align: center;\n\tcursor: pointer;\n\tjustify-content: center;\n\talign-items: center;\n\tborder: 1px solid var(--vscode-button-border, transparent);\n\tline-height: 18px;\n}\n\n.monaco-text-button:focus {\n\toutline-offset: 2px !important;\n}\n\n.monaco-text-button:hover {\n\ttext-decoration: none !important;\n}\n\n.monaco-button.disabled:focus,\n.monaco-button.disabled {\n\topacity: 0.4 !important;\n\tcursor: default;\n}\n\n.monaco-text-button .codicon {\n\tmargin: 0 0.2em;\n\tcolor: inherit !important;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label {\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tpadding: 0 4px;\n\toverflow: hidden;\n\theight: 28px;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label {\n\tflex-basis: 100%;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label-short {\n\tflex-grow: 1;\n\twidth: 0;\n\toverflow: hidden;\n}\n\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label,\n.monaco-text-button.monaco-text-button-with-short-label > .monaco-button-label-short {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tfont-weight: normal;\n\tfont-style: inherit;\n\tpadding: 4px 0;\n}\n\n.monaco-button-dropdown {\n\tdisplay: flex;\n\tcursor: pointer;\n}\n\n.monaco-button-dropdown.disabled {\n\tcursor: default;\n}\n\n.monaco-button-dropdown > .monaco-button:focus {\n\toutline-offset: -1px !important;\n}\n\n.monaco-button-dropdown.disabled > .monaco-button.disabled,\n.monaco-button-dropdown.disabled > .monaco-button.disabled:focus,\n.monaco-button-dropdown.disabled > .monaco-button-dropdown-separator {\n\topacity: 0.4 !important;\n}\n\n.monaco-button-dropdown > .monaco-button.monaco-text-button {\n\tborder-right-width: 0 !important;\n}\n\n.monaco-button-dropdown .monaco-button-dropdown-separator {\n\tpadding: 4px 0;\n\tcursor: default;\n}\n\n.monaco-button-dropdown .monaco-button-dropdown-separator > div {\n\theight: 100%;\n\twidth: 1px;\n}\n\n.monaco-button-dropdown > .monaco-button.monaco-dropdown-button {\n\tborder: 1px solid var(--vscode-button-border, transparent);\n\tborder-left-width: 0 !important;\n\tborder-radius: 0 2px 2px 0;\n}\n\n.monaco-button-dropdown > .monaco-button.monaco-text-button {\n\tborder-radius: 2px 0 0 2px;\n}\n\n.monaco-description-button {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tmargin: 4px 5px; /* allows button focus outline to be visible */\n}\n\n.monaco-description-button .monaco-button-description {\n\tfont-style: italic;\n\tfont-size: 11px;\n\tpadding: 4px 20px;\n}\n\n.monaco-description-button .monaco-button-label,\n.monaco-description-button .monaco-button-description {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.monaco-description-button .monaco-button-label > .codicon,\n.monaco-description-button .monaco-button-description > .codicon {\n\tmargin: 0 0.2em;\n\tcolor: inherit !important;\n}\n\n/* default color styles - based on CSS variables */\n\n.monaco-button.default-colors,\n.monaco-button-dropdown.default-colors > .monaco-button{\n\tcolor: var(--vscode-button-foreground);\n\tbackground-color: var(--vscode-button-background);\n}\n\n.monaco-button.default-colors:hover,\n.monaco-button-dropdown.default-colors > .monaco-button:hover {\n\tbackground-color: var(--vscode-button-hoverBackground);\n}\n\n.monaco-button.default-colors.secondary,\n.monaco-button-dropdown.default-colors > .monaco-button.secondary {\n\tcolor: var(--vscode-button-secondaryForeground);\n\tbackground-color: var(--vscode-button-secondaryBackground);\n}\n\n.monaco-button.default-colors.secondary:hover,\n.monaco-button-dropdown.default-colors > .monaco-button.secondary:hover {\n\tbackground-color: var(--vscode-button-secondaryHoverBackground);\n}\n\n.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator {\n\tbackground-color: var(--vscode-button-background);\n\tborder-top: 1px solid var(--vscode-button-border);\n\tborder-bottom: 1px solid var(--vscode-button-border);\n}\n\n.monaco-button-dropdown.default-colors .monaco-button.secondary + .monaco-button-dropdown-separator {\n\tbackground-color: var(--vscode-button-secondaryBackground);\n}\n\n.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator > div {\n\tbackground-color: var(--vscode-button-separator);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css": +/*!****************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css ***! + \****************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.codicon-wrench-subaction {\n\topacity: 0.5;\n}\n\n@keyframes codicon-spin {\n\t100% {\n\t\ttransform:rotate(360deg);\n\t}\n}\n\n.codicon-sync.codicon-modifier-spin,\n.codicon-loading.codicon-modifier-spin,\n.codicon-gear.codicon-modifier-spin,\n.codicon-notebook-state-executing.codicon-modifier-spin {\n\t/* Use steps to throttle FPS to reduce CPU usage */\n\tanimation: codicon-spin 1.5s steps(30) infinite;\n}\n\n.codicon-modifier-disabled {\n\topacity: 0.4;\n}\n\n/* custom speed & easing for loading icon */\n.codicon-loading,\n.codicon-tree-item-loading::before {\n\tanimation-duration: 1s !important;\n\tanimation-timing-function: cubic-bezier(0.53, 0.21, 0.29, 0.67) !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css": +/*!******************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css ***! + \******************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! ./codicon.ttf */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n@font-face {\n\tfont-family: \"codicon\";\n\tfont-display: block;\n\tsrc: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format(\"truetype\");\n}\n\n.codicon[class*='codicon-'] {\n\tfont: normal normal normal 16px/1 codicon;\n\tdisplay: inline-block;\n\ttext-decoration: none;\n\ttext-rendering: auto;\n\ttext-align: center;\n\ttext-transform: none;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n\n/* icon rules are dynamically created by the platform theme service (see iconsStyleSheet.ts) */\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css": +/*!*****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css ***! + \*****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.context-view {\n\tposition: absolute;\n}\n\n.context-view.fixed {\n\tall: initial;\n\tfont-family: inherit;\n\tfont-size: 13px;\n\tposition: fixed;\n\tcolor: inherit;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css": +/*!***************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css ***! + \***************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-count-badge {\n\tpadding: 3px 6px;\n\tborder-radius: 11px;\n\tfont-size: 11px;\n\tmin-width: 18px;\n\tmin-height: 18px;\n\tline-height: 11px;\n\tfont-weight: normal;\n\ttext-align: center;\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n}\n\n.monaco-count-badge.long {\n\tpadding: 2px 3px;\n\tborder-radius: 2px;\n\tmin-height: auto;\n\tline-height: normal;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css": +/*!***********************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css ***! + \***********************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-dropdown {\n\theight: 100%;\n\tpadding: 0;\n}\n\n.monaco-dropdown > .dropdown-label {\n\tcursor: pointer;\n\theight: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.monaco-dropdown > .dropdown-label > .action-label.disabled {\n\tcursor: default;\n}\n\n.monaco-dropdown-with-primary {\n\tdisplay: flex !important;\n\tflex-direction: row;\n\tborder-radius: 5px;\n}\n\n.monaco-dropdown-with-primary > .action-container > .action-label {\n\tmargin-right: 0;\n}\n\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*='codicon-'] {\n\tfont-size: 12px;\n\tpadding-left: 0px;\n\tpadding-right: 0px;\n\tline-height: 16px;\n\tmargin-left: -3px;\n}\n\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label {\n\tdisplay: block;\n\tbackground-size: 16px;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css": +/*!*************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css ***! + \*************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/* ---------- Find input ---------- */\n\n.monaco-findInput {\n\tposition: relative;\n}\n\n.monaco-findInput .monaco-inputbox {\n\tfont-size: 13px;\n\twidth: 100%;\n}\n\n.monaco-findInput > .controls {\n\tposition: absolute;\n\ttop: 3px;\n\tright: 2px;\n}\n\n.vs .monaco-findInput.disabled {\n\tbackground-color: #E1E1E1;\n}\n\n/* Theming */\n.vs-dark .monaco-findInput.disabled {\n\tbackground-color: #333;\n}\n\n/* Highlighting */\n.monaco-findInput.highlight-0 .controls,\n.hc-light .monaco-findInput.highlight-0 .controls {\n\tanimation: monaco-findInput-highlight-0 100ms linear 0s;\n}\n\n.monaco-findInput.highlight-1 .controls,\n.hc-light .monaco-findInput.highlight-1 .controls {\n\tanimation: monaco-findInput-highlight-1 100ms linear 0s;\n}\n\n.hc-black .monaco-findInput.highlight-0 .controls,\n.vs-dark .monaco-findInput.highlight-0 .controls {\n\tanimation: monaco-findInput-highlight-dark-0 100ms linear 0s;\n}\n\n.hc-black .monaco-findInput.highlight-1 .controls,\n.vs-dark .monaco-findInput.highlight-1 .controls {\n\tanimation: monaco-findInput-highlight-dark-1 100ms linear 0s;\n}\n\n@keyframes monaco-findInput-highlight-0 {\n\t0% { background: rgba(253, 255, 0, 0.8); }\n\t100% { background: transparent; }\n}\n@keyframes monaco-findInput-highlight-1 {\n\t0% { background: rgba(253, 255, 0, 0.8); }\n\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\n\t99% { background: transparent; }\n}\n\n@keyframes monaco-findInput-highlight-dark-0 {\n\t0% { background: rgba(255, 255, 255, 0.44); }\n\t100% { background: transparent; }\n}\n@keyframes monaco-findInput-highlight-dark-1 {\n\t0% { background: rgba(255, 255, 255, 0.44); }\n\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\n\t99% { background: transparent; }\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css": +/*!*****************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css ***! + \*****************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-hover {\n\tcursor: default;\n\tposition: absolute;\n\toverflow: hidden;\n\tuser-select: text;\n\t-webkit-user-select: text;\n\tbox-sizing: border-box;\n\tanimation: fadein 100ms linear;\n\tline-height: 1.5em;\n}\n\n.monaco-hover.hidden {\n\tdisplay: none;\n}\n\n.monaco-hover a:hover:not(.disabled) {\n\tcursor: pointer;\n}\n\n.monaco-hover .hover-contents:not(.html-hover-contents) {\n\tpadding: 4px 8px;\n}\n\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) {\n\tmax-width: 500px;\n\tword-wrap: break-word;\n}\n\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) hr {\n\tmin-width: 100%;\n}\n\n.monaco-hover p,\n.monaco-hover .code,\n.monaco-hover ul,\n.monaco-hover h1,\n.monaco-hover h2,\n.monaco-hover h3,\n.monaco-hover h4,\n.monaco-hover h5,\n.monaco-hover h6 {\n\tmargin: 8px 0;\n}\n\n.monaco-hover h1,\n.monaco-hover h2,\n.monaco-hover h3,\n.monaco-hover h4,\n.monaco-hover h5,\n.monaco-hover h6 {\n\tline-height: 1.1;\n}\n\n.monaco-hover code {\n\tfont-family: var(--monaco-monospace-font);\n}\n\n.monaco-hover hr {\n\tbox-sizing: border-box;\n\tborder-left: 0px;\n\tborder-right: 0px;\n\tmargin-top: 4px;\n\tmargin-bottom: -4px;\n\tmargin-left: -8px;\n\tmargin-right: -8px;\n\theight: 1px;\n}\n\n.monaco-hover p:first-child,\n.monaco-hover .code:first-child,\n.monaco-hover ul:first-child {\n\tmargin-top: 0;\n}\n\n.monaco-hover p:last-child,\n.monaco-hover .code:last-child,\n.monaco-hover ul:last-child {\n\tmargin-bottom: 0;\n}\n\n/* MarkupContent Layout */\n.monaco-hover ul {\n\tpadding-left: 20px;\n}\n.monaco-hover ol {\n\tpadding-left: 20px;\n}\n\n.monaco-hover li > p {\n\tmargin-bottom: 0;\n}\n\n.monaco-hover li > ul {\n\tmargin-top: 0;\n}\n\n.monaco-hover code {\n\tborder-radius: 3px;\n\tpadding: 0 0.4em;\n}\n\n.monaco-hover .monaco-tokenized-source {\n\twhite-space: pre-wrap;\n}\n\n.monaco-hover .hover-row.status-bar {\n\tfont-size: 12px;\n\tline-height: 22px;\n}\n\n.monaco-hover .hover-row.status-bar .info {\n\tfont-style: italic;\n\tpadding: 0px 8px;\n}\n\n.monaco-hover .hover-row.status-bar .actions {\n\tdisplay: flex;\n\tpadding: 0px 8px;\n}\n\n.monaco-hover .hover-row.status-bar .actions .action-container {\n\tmargin-right: 16px;\n\tcursor: pointer;\n}\n\n.monaco-hover .hover-row.status-bar .actions .action-container .action .icon {\n\tpadding-right: 4px;\n}\n\n.monaco-hover .markdown-hover .hover-contents .codicon {\n\tcolor: inherit;\n\tfont-size: inherit;\n\tvertical-align: middle;\n}\n\n.monaco-hover .hover-contents a.code-link:hover,\n.monaco-hover .hover-contents a.code-link {\n\tcolor: inherit;\n}\n\n.monaco-hover .hover-contents a.code-link:before {\n\tcontent: '(';\n}\n\n.monaco-hover .hover-contents a.code-link:after {\n\tcontent: ')';\n}\n\n.monaco-hover .hover-contents a.code-link > span {\n\ttext-decoration: underline;\n\t/** Hack to force underline to show **/\n\tborder-bottom: 1px solid transparent;\n\ttext-underline-position: under;\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-hover .hover-contents a.code-link > span:hover {\n\tcolor: var(--vscode-textLink-activeForeground);\n}\n\n/** Spans in markdown hovers need a margin-bottom to avoid looking cramped: https://github.com/microsoft/vscode/issues/101496 **/\n.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span {\n\tmargin-bottom: 4px;\n\tdisplay: inline-block;\n}\n\n.monaco-hover-content .action-container a {\n\t-webkit-user-select: none;\n\tuser-select: none;\n}\n\n.monaco-hover-content .action-container.disabled {\n\tpointer-events: none;\n\topacity: 0.4;\n\tcursor: default;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css": +/*!*************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css ***! + \*************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* ---------- Icon label ---------- */\n\n.monaco-icon-label {\n\tdisplay: flex; /* required for icons support :before rule */\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.monaco-icon-label::before {\n\n\t/* svg icons rendered as background image */\n\tbackground-size: 16px;\n\tbackground-position: left center;\n\tbackground-repeat: no-repeat;\n\tpadding-right: 6px;\n\twidth: 16px;\n\theight: 22px;\n\tline-height: inherit !important;\n\tdisplay: inline-block;\n\n\t/* fonts icons */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tvertical-align: top;\n\n\tflex-shrink: 0; /* fix for https://github.com/microsoft/vscode/issues/13787 */\n}\n\n.monaco-icon-label-container.disabled {\n\tcolor: var(--vscode-disabledForeground);\n}\n.monaco-icon-label > .monaco-icon-label-container {\n\tmin-width: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tflex: 1;\n}\n\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name {\n\tcolor: inherit;\n\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\n}\n\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name > .label-separator {\n\tmargin: 0 2px;\n\topacity: 0.5;\n}\n\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\n\topacity: .7;\n\tmargin-left: 0.5em;\n\tfont-size: 0.9em;\n\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\n}\n\n.monaco-icon-label.nowrap > .monaco-icon-label-container > .monaco-icon-description-container > .label-description{\n\twhite-space: nowrap\n}\n\n.vs .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\n\topacity: .95;\n}\n\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\n\tfont-style: italic;\n}\n\n.monaco-icon-label.deprecated {\n\ttext-decoration: line-through;\n\topacity: 0.66;\n}\n\n/* make sure apply italic font style to decorations as well */\n.monaco-icon-label.italic::after {\n\tfont-style: italic;\n}\n\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\n\ttext-decoration: line-through;\n}\n\n.monaco-icon-label::after {\n\topacity: 0.75;\n\tfont-size: 90%;\n\tfont-weight: 600;\n\tmargin: auto 16px 0 5px; /* https://github.com/microsoft/vscode/issues/113223 */\n\ttext-align: center;\n}\n\n/* make sure selection color wins when a label is being selected */\n.monaco-list:focus .selected .monaco-icon-label, /* list */\n.monaco-list:focus .selected .monaco-icon-label::after\n{\n\tcolor: inherit !important;\n}\n\n.monaco-list-row.focused.selected .label-description,\n.monaco-list-row.selected .label-description {\n\topacity: .8;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css": +/*!***********************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css ***! + \***********************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-inputbox {\n\tposition: relative;\n\tdisplay: block;\n\tpadding: 0;\n\tbox-sizing:\tborder-box;\n\tborder-radius: 2px;\n\n\t/* Customizable */\n\tfont-size: inherit;\n}\n\n.monaco-inputbox > .ibwrapper > .input,\n.monaco-inputbox > .ibwrapper > .mirror {\n\n\t/* Customizable */\n\tpadding: 4px 6px;\n}\n\n.monaco-inputbox > .ibwrapper {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-inputbox > .ibwrapper > .input {\n\tdisplay: inline-block;\n\tbox-sizing:\tborder-box;\n\twidth: 100%;\n\theight: 100%;\n\tline-height: inherit;\n\tborder: none;\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tresize: none;\n\tcolor: inherit;\n}\n\n.monaco-inputbox > .ibwrapper > input {\n\ttext-overflow: ellipsis;\n}\n\n.monaco-inputbox > .ibwrapper > textarea.input {\n\tdisplay: block;\n\tscrollbar-width: none; /* Firefox: hide scrollbars */\n\toutline: none;\n}\n\n.monaco-inputbox > .ibwrapper > textarea.input::-webkit-scrollbar {\n\tdisplay: none; /* Chrome + Safari: hide scrollbar */\n}\n\n.monaco-inputbox > .ibwrapper > textarea.input.empty {\n\twhite-space: nowrap;\n}\n\n.monaco-inputbox > .ibwrapper > .mirror {\n\tposition: absolute;\n\tdisplay: inline-block;\n\twidth: 100%;\n\ttop: 0;\n\tleft: 0;\n\tbox-sizing: border-box;\n\twhite-space: pre-wrap;\n\tvisibility: hidden;\n\tword-wrap: break-word;\n}\n\n/* Context view */\n\n.monaco-inputbox-container {\n\ttext-align: right;\n}\n\n.monaco-inputbox-container .monaco-inputbox-message {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\ttext-align: left;\n\twidth: 100%;\n\tbox-sizing:\tborder-box;\n\tpadding: 0.4em;\n\tfont-size: 12px;\n\tline-height: 17px;\n\tmargin-top: -1px;\n\tword-wrap: break-word;\n}\n\n/* Action bar support */\n.monaco-inputbox .monaco-action-bar {\n\tposition: absolute;\n\tright: 2px;\n\ttop: 4px;\n}\n\n.monaco-inputbox .monaco-action-bar .action-item {\n\tmargin-left: 2px;\n}\n\n.monaco-inputbox .monaco-action-bar .action-item .codicon {\n\tbackground-repeat: no-repeat;\n\twidth: 16px;\n\theight: 16px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css": +/*!*************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css ***! + \*************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-keybinding {\n\tdisplay: flex;\n\talign-items: center;\n\tline-height: 10px;\n}\n\n.monaco-keybinding > .monaco-keybinding-key {\n\tdisplay: inline-block;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-radius: 3px;\n\tvertical-align: middle;\n\tfont-size: 11px;\n\tpadding: 3px 5px;\n\tmargin: 0 2px;\n}\n\n.monaco-keybinding > .monaco-keybinding-key:first-child {\n\tmargin-left: 0;\n}\n\n.monaco-keybinding > .monaco-keybinding-key:last-child {\n\tmargin-right: 0;\n}\n\n.monaco-keybinding > .monaco-keybinding-key-separator {\n\tdisplay: inline-block;\n}\n\n.monaco-keybinding > .monaco-keybinding-key-chord-separator {\n\twidth: 6px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css": +/*!***************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css ***! + \***************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-list {\n\tposition: relative;\n\theight: 100%;\n\twidth: 100%;\n\twhite-space: nowrap;\n}\n\n.monaco-list.mouse-support {\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n\n.monaco-list > .monaco-scrollable-element {\n\theight: 100%;\n}\n\n.monaco-list-rows {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-list.horizontal-scrolling .monaco-list-rows {\n\twidth: auto;\n\tmin-width: 100%;\n}\n\n.monaco-list-row {\n\tposition: absolute;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\twidth: 100%;\n}\n\n.monaco-list.mouse-support .monaco-list-row {\n\tcursor: pointer;\n\ttouch-action: none;\n}\n\n/* for OS X ballistic scrolling */\n.monaco-list-row.scrolling {\n\tdisplay: none !important;\n}\n\n/* Focus */\n.monaco-list.element-focused,\n.monaco-list.selection-single,\n.monaco-list.selection-multiple {\n\toutline: 0 !important;\n}\n\n/* Dnd */\n.monaco-drag-image {\n\tdisplay: inline-block;\n\tpadding: 1px 7px;\n\tborder-radius: 10px;\n\tfont-size: 12px;\n\tposition: absolute;\n\tz-index: 1000;\n}\n\n/* Filter */\n\n.monaco-list-type-filter-message {\n\tposition: absolute;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tpadding: 40px 1em 1em 1em;\n\ttext-align: center;\n\twhite-space: normal;\n\topacity: 0.7;\n\tpointer-events: none;\n}\n\n.monaco-list-type-filter-message:empty {\n\tdisplay: none;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css": +/*!*****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css ***! + \*****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-mouse-cursor-text {\n\tcursor: text;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css": +/*!*****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css ***! + \*****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-progress-container {\n\twidth: 100%;\n\theight: 5px;\n\toverflow: hidden; /* keep progress bit in bounds */\n}\n\n.monaco-progress-container .progress-bit {\n\twidth: 2%;\n\theight: 5px;\n\tposition: absolute;\n\tleft: 0;\n\tdisplay: none;\n}\n\n.monaco-progress-container.active .progress-bit {\n\tdisplay: inherit;\n}\n\n.monaco-progress-container.discrete .progress-bit {\n\tleft: 0;\n\ttransition: width 100ms linear;\n}\n\n.monaco-progress-container.discrete.done .progress-bit {\n\twidth: 100%;\n}\n\n.monaco-progress-container.infinite .progress-bit {\n\tanimation-name: progress;\n\tanimation-duration: 4s;\n\tanimation-iteration-count: infinite;\n\ttransform: translate3d(0px, 0px, 0px);\n\tanimation-timing-function: linear;\n}\n\n.monaco-progress-container.infinite.infinite-long-running .progress-bit {\n\t/*\n\t\tThe more smooth \\`linear\\` timing function can cause\n\t\thigher GPU consumption as indicated in\n\t\thttps://github.com/microsoft/vscode/issues/97900 &\n\t\thttps://github.com/microsoft/vscode/issues/138396\n\t*/\n\tanimation-timing-function: steps(100);\n}\n\n/**\n * The progress bit has a width: 2% (1/50) of the parent container. The animation moves it from 0% to 100% of\n * that container. Since translateX is relative to the progress bit size, we have to multiple it with\n * its relative size to the parent container:\n * parent width: 5000%\n * bit width: 100%\n * translateX should be as follow:\n * 50%: 5000% * 50% - 50% (set to center) = 2450%\n * 100%: 5000% * 100% - 100% (do not overflow) = 4900%\n */\n@keyframes progress { from { transform: translateX(0%) scaleX(1) } 50% { transform: translateX(2500%) scaleX(3) } to { transform: translateX(4900%) scaleX(1) } }\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css": +/*!***************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css ***! + \***************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n:root {\n\t--vscode-sash-size: 4px;\n}\n\n.monaco-sash {\n\tposition: absolute;\n\tz-index: 35;\n\ttouch-action: none;\n}\n\n.monaco-sash.disabled {\n\tpointer-events: none;\n}\n\n.monaco-sash.mac.vertical {\n\tcursor: col-resize;\n}\n\n.monaco-sash.vertical.minimum {\n\tcursor: e-resize;\n}\n\n.monaco-sash.vertical.maximum {\n\tcursor: w-resize;\n}\n\n.monaco-sash.mac.horizontal {\n\tcursor: row-resize;\n}\n\n.monaco-sash.horizontal.minimum {\n\tcursor: s-resize;\n}\n\n.monaco-sash.horizontal.maximum {\n\tcursor: n-resize;\n}\n\n.monaco-sash.disabled {\n\tcursor: default !important;\n\tpointer-events: none !important;\n}\n\n.monaco-sash.vertical {\n\tcursor: ew-resize;\n\ttop: 0;\n\twidth: var(--vscode-sash-size);\n\theight: 100%;\n}\n\n.monaco-sash.horizontal {\n\tcursor: ns-resize;\n\tleft: 0;\n\twidth: 100%;\n\theight: var(--vscode-sash-size);\n}\n\n.monaco-sash:not(.disabled) > .orthogonal-drag-handle {\n\tcontent: \" \";\n\theight: calc(var(--vscode-sash-size) * 2);\n\twidth: calc(var(--vscode-sash-size) * 2);\n\tz-index: 100;\n\tdisplay: block;\n\tcursor: all-scroll;\n\tposition: absolute;\n}\n\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\n\t> .orthogonal-drag-handle.start,\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\n\t> .orthogonal-drag-handle.end {\n\tcursor: nwse-resize;\n}\n\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\n\t> .orthogonal-drag-handle.end,\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\n\t> .orthogonal-drag-handle.start {\n\tcursor: nesw-resize;\n}\n\n.monaco-sash.vertical > .orthogonal-drag-handle.start {\n\tleft: calc(var(--vscode-sash-size) * -0.5);\n\ttop: calc(var(--vscode-sash-size) * -1);\n}\n.monaco-sash.vertical > .orthogonal-drag-handle.end {\n\tleft: calc(var(--vscode-sash-size) * -0.5);\n\tbottom: calc(var(--vscode-sash-size) * -1);\n}\n.monaco-sash.horizontal > .orthogonal-drag-handle.start {\n\ttop: calc(var(--vscode-sash-size) * -0.5);\n\tleft: calc(var(--vscode-sash-size) * -1);\n}\n.monaco-sash.horizontal > .orthogonal-drag-handle.end {\n\ttop: calc(var(--vscode-sash-size) * -0.5);\n\tright: calc(var(--vscode-sash-size) * -1);\n}\n\n.monaco-sash:before {\n\tcontent: '';\n\tpointer-events: none;\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: transparent;\n}\n\n.monaco-workbench:not(.reduce-motion) .monaco-sash:before {\n\ttransition: background-color 0.1s ease-out;\n}\n\n.monaco-sash.hover:before,\n.monaco-sash.active:before {\n\tbackground: var(--vscode-sash-hoverBorder);\n}\n\n.monaco-sash.vertical:before {\n\twidth: var(--vscode-sash-hover-size);\n\tleft: calc(50% - (var(--vscode-sash-hover-size) / 2));\n}\n\n.monaco-sash.horizontal:before {\n\theight: var(--vscode-sash-hover-size);\n\ttop: calc(50% - (var(--vscode-sash-hover-size) / 2));\n}\n\n.pointer-events-disabled {\n\tpointer-events: none !important;\n}\n\n/** Debug **/\n\n.monaco-sash.debug {\n\tbackground: cyan;\n}\n\n.monaco-sash.debug.disabled {\n\tbackground: rgba(0, 255, 255, 0.2);\n}\n\n.monaco-sash.debug:not(.disabled) > .orthogonal-drag-handle {\n\tbackground: red;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css": +/*!********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css ***! + \********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* Arrows */\n.monaco-scrollable-element > .scrollbar > .scra {\n\tcursor: pointer;\n\tfont-size: 11px !important;\n}\n\n.monaco-scrollable-element > .visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n\t/* In front of peek view */\n\tz-index: 11;\n}\n.monaco-scrollable-element > .invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.monaco-scrollable-element > .invisible.fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.monaco-scrollable-element > .shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.monaco-scrollable-element > .shadow.top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.monaco-scrollable-element > .shadow.top.left {\n\tbox-shadow: var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset;\n}\n\n.monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: var(--vscode-scrollbarSlider-background);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: var(--vscode-scrollbarSlider-hoverBackground);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: var(--vscode-scrollbarSlider-activeBackground);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.css": +/*!*************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.css ***! + \*************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-select-box {\n\twidth: 100%;\n\tcursor: pointer;\n\tborder-radius: 2px;\n}\n\n.monaco-select-box-dropdown-container {\n\tfont-size: 13px;\n\tfont-weight: normal;\n\ttext-transform: none;\n}\n\n/** Actions */\n\n.monaco-action-bar .action-item.select-container {\n\tcursor: default;\n}\n\n.monaco-action-bar .action-item .monaco-select-box {\n\tcursor: pointer;\n\tmin-width: 100px;\n\tmin-height: 18px;\n\tpadding: 2px 23px 2px 8px;\n}\n\n.mac .monaco-action-bar .action-item .monaco-select-box {\n\tfont-size: 11px;\n\tborder-radius: 5px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css": +/*!*******************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css ***! + \*******************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* Use custom CSS vars to expose padding into parent select for padding calculation */\n.monaco-select-box-dropdown-padding {\n\t--dropdown-padding-top: 1px;\n\t--dropdown-padding-bottom: 1px;\n}\n\n.hc-black .monaco-select-box-dropdown-padding,\n.hc-light .monaco-select-box-dropdown-padding {\n\t--dropdown-padding-top: 3px;\n\t--dropdown-padding-bottom: 4px;\n}\n\n.monaco-select-box-dropdown-container {\n\tdisplay: none;\n\tbox-sizing:\tborder-box;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown * {\n\tmargin: 0;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a:focus {\n\toutline: 1px solid -webkit-focus-ring-color;\n\toutline-offset: -1px;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown code {\n\tline-height: 15px; /** For some reason, this is needed, otherwise will take up 20px height */\n\tfont-family: var(--monaco-monospace-font);\n}\n\n\n.monaco-select-box-dropdown-container.visible {\n\tdisplay: flex;\n\tflex-direction: column;\n\ttext-align: left;\n\twidth: 1px;\n\toverflow: hidden;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container {\n\tflex: 0 0 auto;\n\talign-self: flex-start;\n\tpadding-top: var(--dropdown-padding-top);\n\tpadding-bottom: var(--dropdown-padding-bottom);\n\tpadding-left: 1px;\n\tpadding-right: 1px;\n\twidth: 100%;\n\toverflow: hidden;\n\tbox-sizing:\tborder-box;\n}\n\n.monaco-select-box-dropdown-container > .select-box-details-pane {\n\tpadding: 5px;\n}\n\n.hc-black .monaco-select-box-dropdown-container > .select-box-dropdown-list-container {\n\tpadding-top: var(--dropdown-padding-top);\n\tpadding-bottom: var(--dropdown-padding-bottom);\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row {\n\tcursor: pointer;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-text {\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 3.5px;\n\twhite-space: nowrap;\n\tfloat: left;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-detail {\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 3.5px;\n\twhite-space: nowrap;\n\tfloat: left;\n\topacity: 0.7;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-decorator-right {\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-right: 10px;\n\twhite-space: nowrap;\n\tfloat: right;\n}\n\n\n/* Accepted CSS hiding technique for accessibility reader text */\n/* https://webaim.org/techniques/css/invisiblecontent/ */\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .visually-hidden {\n\t\tposition: absolute;\n\t\tleft: -10000px;\n\t\ttop: auto;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\toverflow: hidden;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control {\n\tflex: 1 1 auto;\n\talign-self: flex-start;\n\topacity: 0;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control > .width-control-div {\n\toverflow: hidden;\n\tmax-height: 0px;\n}\n\n.monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control > .width-control-div > .option-text-width-control {\n\tpadding-left: 4px;\n\tpadding-right: 8px;\n\twhite-space: nowrap;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css": +/*!*************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css ***! + \*************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-split-view2 {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-split-view2 > .sash-container {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tpointer-events: none;\n}\n\n.monaco-split-view2 > .sash-container > .monaco-sash {\n\tpointer-events: initial;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element {\n\twidth: 100%;\n\theight: 100%;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container {\n\twidth: 100%;\n\theight: 100%;\n\twhite-space: nowrap;\n\tposition: relative;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view {\n\twhite-space: initial;\n\tposition: absolute;\n}\n\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view:not(.visible) {\n\tdisplay: none;\n}\n\n.monaco-split-view2.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view {\n\twidth: 100%;\n}\n\n.monaco-split-view2.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view {\n\theight: 100%;\n}\n\n.monaco-split-view2.separator-border > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\n\tcontent: ' ';\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 5;\n\tpointer-events: none;\n\tbackground-color: var(--separator-border);\n}\n\n.monaco-split-view2.separator-border.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\n\theight: 100%;\n\twidth: 1px;\n}\n\n.monaco-split-view2.separator-border.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\n\theight: 1px;\n\twidth: 100%;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css": +/*!*****************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css ***! + \*****************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-table {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\theight: 100%;\n\twidth: 100%;\n\twhite-space: nowrap;\n\toverflow: hidden;\n}\n\n.monaco-table > .monaco-split-view2 {\n\tborder-bottom: 1px solid transparent;\n}\n\n.monaco-table > .monaco-list {\n\tflex: 1;\n}\n\n.monaco-table-tr {\n\tdisplay: flex;\n\theight: 100%;\n}\n\n.monaco-table-th {\n\twidth: 100%;\n\theight: 100%;\n\tfont-weight: bold;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.monaco-table-th,\n.monaco-table-td {\n\tbox-sizing: border-box;\n\tflex-shrink: 0;\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n}\n\n.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tleft: calc(var(--vscode-sash-size) / 2);\n\twidth: 0;\n\tborder-left: 1px solid transparent;\n}\n\n.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2,\n.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\n\ttransition: border-color 0.2s ease-out;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.css": +/*!*******************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.css ***! + \*******************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-custom-toggle {\n\tmargin-left: 2px;\n\tfloat: left;\n\tcursor: pointer;\n\toverflow: hidden;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 3px;\n\tborder: 1px solid transparent;\n\tpadding: 1px;\n\tbox-sizing:\tborder-box;\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n\n.monaco-custom-toggle:hover {\n\tbackground-color: var(--vscode-inputOption-hoverBackground);\n}\n\n.hc-black .monaco-custom-toggle:hover,\n.hc-light .monaco-custom-toggle:hover {\n\tborder: 1px dashed var(--vscode-focusBorder);\n}\n\n.hc-black .monaco-custom-toggle,\n.hc-light .monaco-custom-toggle {\n\tbackground: none;\n}\n\n.hc-black .monaco-custom-toggle:hover,\n.hc-light .monaco-custom-toggle:hover {\n\tbackground: none;\n}\n\n.monaco-custom-toggle.monaco-checkbox {\n\theight: 18px;\n\twidth: 18px;\n\tborder: 1px solid transparent;\n\tborder-radius: 3px;\n\tmargin-right: 9px;\n\tmargin-left: 0px;\n\tpadding: 0px;\n\topacity: 1;\n\tbackground-size: 16px !important;\n}\n\n/* hide check when unchecked */\n.monaco-custom-toggle.monaco-checkbox:not(.checked)::before {\n\tvisibility: hidden;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.css": +/*!*********************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.css ***! + \*********************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-toolbar {\n\theight: 100%;\n}\n\n.monaco-toolbar .toolbar-toggle-more {\n\tdisplay: inline-block;\n\tpadding: 0;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css": +/*!*********************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css ***! + \*********************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-tl-row {\n\tdisplay: flex;\n\theight: 100%;\n\talign-items: center;\n\tposition: relative;\n}\n\n.monaco-tl-row.disabled {\n\tcursor: default;\n}\n.monaco-tl-indent {\n\theight: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 16px;\n\tpointer-events: none;\n}\n\n.hide-arrows .monaco-tl-indent {\n\tleft: 12px;\n}\n\n.monaco-tl-indent > .indent-guide {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\theight: 100%;\n\tborder-left: 1px solid transparent;\n}\n\n.monaco-workbench:not(.reduce-motion) .monaco-tl-indent > .indent-guide {\n\ttransition: border-color 0.1s linear;\n}\n\n.monaco-tl-twistie,\n.monaco-tl-contents {\n\theight: 100%;\n}\n\n.monaco-tl-twistie {\n\tfont-size: 10px;\n\ttext-align: right;\n\tpadding-right: 6px;\n\tflex-shrink: 0;\n\twidth: 16px;\n\tdisplay: flex !important;\n\talign-items: center;\n\tjustify-content: center;\n\ttransform: translateX(3px);\n}\n\n.monaco-tl-contents {\n\tflex: 1;\n\toverflow: hidden;\n}\n\n.monaco-tl-twistie::before {\n\tborder-radius: 20px;\n}\n\n.monaco-tl-twistie.collapsed::before {\n\ttransform: rotate(-90deg);\n}\n\n.monaco-tl-twistie.codicon-tree-item-loading::before {\n\t/* Use steps to throttle FPS to reduce CPU usage */\n\tanimation: codicon-spin 1.25s steps(30) infinite;\n}\n\n.monaco-tree-type-filter {\n\tposition: absolute;\n\ttop: 0;\n\tdisplay: flex;\n\tpadding: 3px;\n\tmax-width: 200px;\n\tz-index: 100;\n\tmargin: 0 6px;\n\tborder: 1px solid var(--vscode-widget-border);\n\tborder-bottom-left-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n}\n\n.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter {\n\ttransition: top 0.3s;\n}\n\n.monaco-tree-type-filter.disabled {\n\ttop: -40px !important;\n}\n\n.monaco-tree-type-filter-grab {\n\tdisplay: flex !important;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: grab;\n\tmargin-right: 2px;\n}\n\n.monaco-tree-type-filter-grab.grabbing {\n\tcursor: grabbing;\n}\n\n.monaco-tree-type-filter-input {\n\tflex: 1;\n}\n\n.monaco-tree-type-filter-input .monaco-inputbox {\n\theight: 23px;\n}\n\n.monaco-tree-type-filter-input .monaco-inputbox > .ibwrapper > .input,\n.monaco-tree-type-filter-input .monaco-inputbox > .ibwrapper > .mirror {\n\tpadding: 2px 4px;\n}\n\n.monaco-tree-type-filter-input .monaco-findInput > .controls {\n\ttop: 2px;\n}\n\n.monaco-tree-type-filter-actionbar {\n\tmargin-left: 4px;\n}\n\n.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label {\n\tpadding: 2px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css": +/*!*******************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css ***! + \*******************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .inputarea {\n\tmin-width: 0;\n\tmin-height: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tposition: absolute;\n\toutline: none !important;\n\tresize: none;\n\tborder: none;\n\toverflow: hidden;\n\tcolor: transparent;\n\tbackground-color: transparent;\n\tz-index: -10;\n}\n/*.monaco-editor .inputarea {\n\tposition: fixed !important;\n\twidth: 800px !important;\n\theight: 500px !important;\n\ttop: initial !important;\n\tleft: initial !important;\n\tbottom: 0 !important;\n\tright: 0 !important;\n\tcolor: black !important;\n\tbackground: white !important;\n\tline-height: 15px !important;\n\tfont-size: 14px !important;\n\tz-index: 10 !important;\n}*/\n.monaco-editor .inputarea.ime-input {\n\tz-index: 10;\n\tcaret-color: var(--vscode-editorCursor-foreground);\n\tcolor: var(--vscode-editor-foreground);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.css": +/*!************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.css ***! + \************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .blockDecorations-container {\n\tposition: absolute;\n\ttop: 0;\n\tpointer-events: none;\n}\n\n.monaco-editor .blockDecorations-block {\n\tposition: absolute;\n\tbox-sizing: border-box;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css": +/*!********************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css ***! + \********************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .view-overlays .current-line {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tbox-sizing: border-box;\n}\n\n.monaco-editor .margin-view-overlays .current-line {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tbox-sizing: border-box;\n}\n\n.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both {\n\tborder-right: 0;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/*\n\tKeeping name short for faster parsing.\n\tcdr = core decorations rendering (div)\n*/\n.monaco-editor .lines-content .cdr {\n\tposition: absolute;\n}`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .glyph-margin {\n\tposition: absolute;\n\ttop: 0;\n}\n\n/*\n\tKeeping name short for faster parsing.\n\tcgmr = core glyph margin rendering (div)\n*/\n.monaco-editor .glyph-margin-widgets .cgmr {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css": +/*!****************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css ***! + \****************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .lines-content .core-guide {\n\tposition: absolute;\n\tbox-sizing: border-box;\n}\n\n.monaco-editor .lines-content .core-guide-indent {\n\tbox-shadow: 1px 0 0 0 var(--vscode-editorIndentGuide-background) inset;\n}\n\n.monaco-editor .lines-content .core-guide-indent-active {\n\tbox-shadow: 1px 0 0 0 var(--vscode-editorIndentGuide-activeBackground, --vscode-editorIndentGuide-background) inset;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .margin-view-overlays .line-numbers {\n\tfont-variant-numeric: tabular-nums;\n\tposition: absolute;\n\ttext-align: right;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tbox-sizing: border-box;\n\tcursor: default;\n\theight: 100%;\n}\n\n.monaco-editor .relative-current-line-number {\n\ttext-align: left;\n\tdisplay: inline-block;\n\twidth: 100%;\n}\n\n.monaco-editor .margin-view-overlays .line-numbers.lh-odd {\n\tmargin-top: 1px;\n}\n\n.monaco-editor .line-numbers {\n\tcolor: var(--vscode-editorLineNumber-foreground);\n}\n\n.monaco-editor .line-numbers.active-line-number {\n\tcolor: var(--vscode-editorLineNumber-activeForeground);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css": +/*!******************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css ***! + \******************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* Uncomment to see lines flashing when they're painted */\n/*.monaco-editor .view-lines > .view-line {\n\tbackground-color: none;\n\tanimation-name: flash-background;\n\tanimation-duration: 800ms;\n}\n@keyframes flash-background {\n\t0% { background-color: lightgreen; }\n\t100% { background-color: none }\n}*/\n\n.mtkcontrol {\n\tcolor: rgb(255, 255, 255) !important;\n\tbackground: rgb(150, 0, 0) !important;\n}\n\n.mtkoverflow {\n\tbackground-color: var(--vscode-button-background, --vscode-editor-background);\n\tcolor: var(--vscode-button-foreground, --vscode-editor-foreground);\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: var(--vscode-contrastBorder);\n\tborder-radius: 2px;\n\tpadding: 4px;\n\tcursor: pointer;\n}\n.mtkoverflow:hover {\n\tbackground-color: var(--vscode-button-hoverBackground);\n}\n\n.monaco-editor.no-user-select .lines-content,\n.monaco-editor.no-user-select .view-line,\n.monaco-editor.no-user-select .view-lines {\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n/* Use user-select: text for lookup feature on macOS */\n/* https://github.com/microsoft/vscode/issues/85632 */\n.monaco-editor.mac .lines-content:hover,\n.monaco-editor.mac .view-line:hover,\n.monaco-editor.mac .view-lines:hover {\n\tuser-select: text;\n\t-webkit-user-select: text;\n\t-ms-user-select: text;\n}\n\n.monaco-editor.enable-user-select {\n\tuser-select: initial;\n\t-webkit-user-select: initial;\n}\n\n.monaco-editor .view-lines {\n\twhite-space: nowrap;\n}\n\n.monaco-editor .view-line {\n\tposition: absolute;\n\twidth: 100%;\n}\n\n.monaco-editor .mtkw {\n\tcolor: var(--vscode-editorWhitespace-foreground) !important;\n}\n\n.monaco-editor .mtkz {\n\tdisplay: inline-block;\n\tcolor: var(--vscode-editorWhitespace-foreground) !important;\n}\n\n/* TODO@tokenization bootstrap fix */\n/*.monaco-editor .view-line > span > span {\n\tfloat: none;\n\tmin-height: inherit;\n\tmargin-left: inherit;\n}*/\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css": +/*!************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css ***! + \************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n.monaco-editor .lines-decorations {\n\tposition: absolute;\n\ttop: 0;\n\tbackground: white;\n}\n\n/*\n\tKeeping name short for faster parsing.\n\tcldr = core lines decorations rendering (div)\n*/\n.monaco-editor .margin-view-overlays .cldr {\n\tposition: absolute;\n\theight: 100%;\n}`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.css": +/*!****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.css ***! + \****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .margin {\n\tbackground-color: var(--vscode-editorGutter-background);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css": +/*!**************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css ***! + \**************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/*\n\tKeeping name short for faster parsing.\n\tcmdr = core margin decorations rendering (div)\n*/\n.monaco-editor .margin-view-overlays .cmdr {\n\tposition: absolute;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css": +/*!******************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css ***! + \******************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* START cover the case that slider is visible on mouseover */\n.monaco-editor .minimap.slider-mouseover .minimap-slider {\n\topacity: 0;\n\ttransition: opacity 100ms linear;\n}\n.monaco-editor .minimap.slider-mouseover:hover .minimap-slider {\n\topacity: 1;\n}\n.monaco-editor .minimap.slider-mouseover .minimap-slider.active {\n\topacity: 1;\n}\n/* END cover the case that slider is visible on mouseover */\n.monaco-editor .minimap-slider .minimap-slider-horizontal {\n\tbackground: var(--vscode-minimapSlider-background);\n}\n.monaco-editor .minimap-slider:hover .minimap-slider-horizontal {\n\tbackground: var(--vscode-minimapSlider-hoverBackground);\n}\n.monaco-editor .minimap-slider.active .minimap-slider-horizontal {\n\tbackground: var(--vscode-minimapSlider-activeBackground);\n}\n.monaco-editor .minimap-shadow-visible {\n\tbox-shadow: var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset;\n}\n.monaco-editor .minimap-shadow-hidden {\n\tposition: absolute;\n\twidth: 0;\n}\n.monaco-editor .minimap-shadow-visible {\n\tposition: absolute;\n\tleft: -6px;\n\twidth: 6px;\n}\n.monaco-editor.no-minimap-shadow .minimap-shadow-visible {\n\tposition: absolute;\n\tleft: -1px;\n\twidth: 1px;\n}\n\n/* 0.5s fade in/out for the minimap */\n.minimap.autohide {\n\topacity: 0;\n\ttransition: opacity 0.5s;\n}\n.minimap.autohide:hover {\n\topacity: 1;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css": +/*!********************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css ***! + \********************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n.monaco-editor .overlayWidgets {\n\tposition: absolute;\n\ttop: 0;\n\tleft:0;\n}`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css": +/*!****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css ***! + \****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .view-ruler {\n\tposition: absolute;\n\ttop: 0;\n\tbox-shadow: 1px 0 0 0 var(--vscode-editorRuler-foreground) inset;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css": +/*!************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css ***! + \************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .scroll-decoration {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\theight: 6px;\n\tbox-shadow: var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css": +/*!************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css ***! + \************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/*\n\tKeeping name short for faster parsing.\n\tcslr = core selections layer rendering (div)\n*/\n.monaco-editor .lines-content .cslr {\n\tposition: absolute;\n}\n\n.monaco-editor .focused .selected-text {\n\tbackground-color: var(--vscode-editor-selectionBackground);\n}\n\n.monaco-editor .selected-text {\n\tbackground-color: var(--vscode-editor-inactiveSelectionBackground);\n}\n\n.monaco-editor\t\t\t.top-left-radius\t\t{ border-top-left-radius: 3px; }\n.monaco-editor\t\t\t.bottom-left-radius\t\t{ border-bottom-left-radius: 3px; }\n.monaco-editor\t\t\t.top-right-radius\t\t{ border-top-right-radius: 3px; }\n.monaco-editor\t\t\t.bottom-right-radius\t{ border-bottom-right-radius: 3px; }\n\n.monaco-editor.hc-black .top-left-radius\t\t{ border-top-left-radius: 0; }\n.monaco-editor.hc-black .bottom-left-radius\t\t{ border-bottom-left-radius: 0; }\n.monaco-editor.hc-black .top-right-radius\t\t{ border-top-right-radius: 0; }\n.monaco-editor.hc-black .bottom-right-radius\t{ border-bottom-right-radius: 0; }\n\n.monaco-editor.hc-light .top-left-radius\t\t{ border-top-left-radius: 0; }\n.monaco-editor.hc-light .bottom-left-radius\t\t{ border-bottom-left-radius: 0; }\n.monaco-editor.hc-light .top-right-radius\t\t{ border-top-right-radius: 0; }\n.monaco-editor.hc-light .bottom-right-radius\t{ border-bottom-right-radius: 0; }\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n.monaco-editor .cursors-layer {\n\tposition: absolute;\n\ttop: 0;\n}\n\n.monaco-editor .cursors-layer > .cursor {\n\tposition: absolute;\n\toverflow: hidden;\n\tbox-sizing: border-box;\n}\n\n/* -- smooth-caret-animation -- */\n.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor {\n\ttransition: all 80ms;\n}\n\n/* -- block-outline-style -- */\n.monaco-editor .cursors-layer.cursor-block-outline-style > .cursor {\n\tbackground: transparent !important;\n\tborder-style: solid;\n\tborder-width: 1px;\n}\n\n/* -- underline-style -- */\n.monaco-editor .cursors-layer.cursor-underline-style > .cursor {\n\tborder-bottom-width: 2px;\n\tborder-bottom-style: solid;\n\tbackground: transparent !important;\n}\n\n/* -- underline-thin-style -- */\n.monaco-editor .cursors-layer.cursor-underline-thin-style > .cursor {\n\tborder-bottom-width: 1px;\n\tborder-bottom-style: solid;\n\tbackground: transparent !important;\n}\n\n@keyframes monaco-cursor-smooth {\n\t0%,\n\t20% {\n\t\topacity: 1;\n\t}\n\t60%,\n\t100% {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes monaco-cursor-phase {\n\t0%,\n\t20% {\n\t\topacity: 1;\n\t}\n\t90%,\n\t100% {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes monaco-cursor-expand {\n\t0%,\n\t20% {\n\t\ttransform: scaleY(1);\n\t}\n\t80%,\n\t100% {\n\t\ttransform: scaleY(0);\n\t}\n}\n\n.cursor-smooth {\n\tanimation: monaco-cursor-smooth 0.5s ease-in-out 0s 20 alternate;\n}\n\n.cursor-phase {\n\tanimation: monaco-cursor-phase 0.5s ease-in-out 0s 20 alternate;\n}\n\n.cursor-expand > .cursor {\n\tanimation: monaco-cursor-expand 0.5s ease-in-out 0s 20 alternate;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/whitespace/whitespace.css": +/*!************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/whitespace/whitespace.css ***! + \************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .mwh {\n\tposition: absolute;\n\tcolor: var(--vscode-editorWhitespace-foreground) !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/whitespace/whitespace.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget2/style.css": +/*!***********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget2/style.css ***! + \***********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .diff-hidden-lines-widget {\n\twidth: 100%;\n}\n\n.monaco-editor .diff-hidden-lines {\n\theight: 0px; /* The children each have a fixed height, the transform confuses the browser */\n\ttransform: translate(0px, -10px);\n\tfont-size: 13px;\n\tline-height: 14px;\n}\n\n.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover, .diff-hidden-lines:not(.dragging) .bottom:hover, .diff-hidden-lines .top.dragging, .diff-hidden-lines .bottom.dragging {\n\tbackground-color: var(--vscode-focusBorder);\n}\n\n.monaco-editor .diff-hidden-lines .top, .diff-hidden-lines .bottom {\n\ttransition: background-color 0.1s ease-out;\n\theight: 4px;\n\tbackground-color: transparent;\n\tbackground-clip: padding-box;\n\tborder-bottom: 2px solid transparent;\n\tborder-top: 4px solid transparent;\n\tcursor: ns-resize;\n}\n\n.monaco-editor .diff-hidden-lines .top {\n\ttransform: translate(0px, 4px);\n}\n\n.monaco-editor .diff-hidden-lines .bottom {\n\ttransform: translate(0px, -6px);\n}\n\n.monaco-editor .diff-unchanged-lines {\n\tbackground: var(--vscode-diffEditor-unchangedCodeBackground);\n}\n\n.monaco-editor .noModificationsOverlay {\n\tz-index: 1;\n\tbackground: var(--vscode-editor-background);\n\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n\n.monaco-editor .diff-hidden-lines .center {\n\tbackground: var(--vscode-diffEditor-unchangedRegionBackground);\n\tcolor: var(--vscode-diffEditor-unchangedRegionForeground);\n\toverflow: hidden;\n\tdisplay: block;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\n\theight: 24px;\n}\n\n.monaco-editor .diff-hidden-lines .center span.codicon {\n\tvertical-align: middle;\n}\n\n.monaco-editor .diff-hidden-lines .center a:hover .codicon {\n\tcursor: pointer;\n\tcolor: var(--vscode-editorLink-activeForeground) !important;\n}\n\n.monaco-editor .movedOriginal {\n\tborder: 2px solid var(--vscode-diffEditor-move-border);\n}\n\n.monaco-editor .movedModified {\n\tborder: 2px solid var(--vscode-diffEditor-move-border);\n}\n\n.monaco-diff-editor .moved-blocks-lines {\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.monaco-diff-editor .moved-blocks-lines path {\n\tfill: none;\n\tstroke: var(--vscode-diffEditor-move-border);\n\tstroke-width: 2;\n}\n\n.monaco-editor .char-delete.diff-range-empty {\n\tmargin-left: -1px;\n\tborder-left: solid var(--vscode-diffEditor-removedTextBackground) 3px;\n}\n\n.monaco-editor .char-insert.diff-range-empty {\n\tborder-left: solid var(--vscode-diffEditor-insertedTextBackground) 3px;\n}\n\n.monaco-editor .fold-unchanged {\n\tcursor: pointer;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget2/style.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css": +/*!****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css ***! + \****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/* ---------- DiffEditor ---------- */\n\n.monaco-diff-editor .diffOverview {\n\tz-index: 9;\n}\n\n.monaco-diff-editor .diffOverview .diffViewport {\n\tz-index: 10;\n}\n\n/* colors not externalized: using transparancy on background */\n.monaco-diff-editor.vs\t\t\t.diffOverview { background: rgba(0, 0, 0, 0.03); }\n.monaco-diff-editor.vs-dark\t\t.diffOverview { background: rgba(255, 255, 255, 0.01); }\n\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs\t\t.scrollbar { background: rgba(0,0,0,0); }\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark\t.scrollbar { background: rgba(0,0,0,0); }\n.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black\t.scrollbar { background: none; }\n.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light\t.scrollbar { background: none; }\n\n.monaco-scrollable-element.modified-in-monaco-diff-editor .slider {\n\tz-index: 10;\n}\n.modified-in-monaco-diff-editor\t\t\t\t.slider.active { background: rgba(171, 171, 171, .4); }\n.modified-in-monaco-diff-editor.hc-black\t.slider.active { background: none; }\n.modified-in-monaco-diff-editor.hc-light\t.slider.active { background: none; }\n\n/* ---------- Diff ---------- */\n\n.monaco-editor .insert-sign,\n.monaco-diff-editor .insert-sign,\n.monaco-editor .delete-sign,\n.monaco-diff-editor .delete-sign {\n\tfont-size: 11px !important;\n\topacity: 0.7 !important;\n\tdisplay: flex !important;\n\talign-items: center;\n}\n.monaco-editor.hc-black .insert-sign,\n.monaco-diff-editor.hc-black .insert-sign,\n.monaco-editor.hc-black .delete-sign,\n.monaco-diff-editor.hc-black .delete-sign,\n.monaco-editor.hc-light .insert-sign,\n.monaco-diff-editor.hc-light .insert-sign,\n.monaco-editor.hc-light .delete-sign,\n.monaco-diff-editor.hc-light .delete-sign {\n\topacity: 1;\n}\n\n.monaco-editor .inline-deleted-margin-view-zone {\n\ttext-align: right;\n}\n.monaco-editor .inline-added-margin-view-zone {\n\ttext-align: right;\n}\n\n.monaco-editor .arrow-revert-change {\n\tz-index: 10;\n\tposition: absolute;\n}\n\n.monaco-editor .arrow-revert-change:hover {\n\tcursor: pointer;\n}\n\n/* ---------- Inline Diff ---------- */\n\n.monaco-editor .view-zones .view-lines .view-line span {\n\tdisplay: inline-block;\n}\n\n.monaco-editor .margin-view-zones .lightbulb-glyph:hover {\n\tcursor: pointer;\n}\n\n.monaco-editor .char-insert, .monaco-diff-editor .char-insert {\n\tbackground-color: var(--vscode-diffEditor-insertedTextBackground);\n}\n\n.monaco-editor .line-insert, .monaco-diff-editor .line-insert {\n\tbackground-color: var(--vscode-diffEditor-insertedLineBackground, --vscode-diffEditor-insertedTextBackground);\n}\n\n.monaco-editor .line-insert,\n.monaco-editor .char-insert {\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-diffEditor-insertedTextBorder);\n}\n.monaco-editor.hc-black .line-insert, .monaco-editor.hc-light .line-insert,\n.monaco-editor.hc-black .char-insert, .monaco-editor.hc-light .char-insert {\n\tborder-style: dashed;\n}\n\n.monaco-editor .line-delete,\n.monaco-editor .char-delete {\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-diffEditor-removedTextBorder);\n}\n.monaco-editor.hc-black .line-delete, .monaco-editor.hc-light .line-delete,\n.monaco-editor.hc-black .char-delete, .monaco-editor.hc-light .char-delete {\n\tborder-style: dashed;\n}\n\n.monaco-editor .inline-added-margin-view-zone,\n.monaco-editor .gutter-insert, .monaco-diff-editor .gutter-insert {\n\tbackground-color: var(--vscode-diffEditorGutter-insertedLineBackground, --vscode-diffEditor-insertedLineBackground, --vscode-diffEditor-insertedTextBackground);\n}\n\n.monaco-editor .char-delete, .monaco-diff-editor .char-delete {\n\tbackground-color: var(--vscode-diffEditor-removedTextBackground);\n}\n\n.monaco-editor .line-delete, .monaco-diff-editor .line-delete {\n\tbackground-color: var(--vscode-diffEditor-removedLineBackground, --vscode-diffEditor-removedTextBackground);\n}\n\n.monaco-editor .inline-deleted-margin-view-zone,\n.monaco-editor .gutter-delete, .monaco-diff-editor .gutter-delete {\n\tbackground-color: var(--vscode-diffEditorGutter-removedLineBackground, --vscode-diffEditor-removedLineBackground, --vscode-diffEditor-removedTextBackground);\n}\n\n.monaco-diff-editor.side-by-side .editor.modified {\n\tbox-shadow: -6px 0 5px -5px var(--vscode-scrollbar-shadow);\n\tborder-left: 1px solid var(--vscode-diffEditor-border);\n}\n\n.monaco-diff-editor .diffViewport {\n\tbackground: var(--vscode-scrollbarSlider-background);\n}\n\n.monaco-diff-editor .diffViewport:hover {\n\tbackground: var(--vscode-scrollbarSlider-hoverBackground);\n}\n\n.monaco-diff-editor .diffViewport:active {\n\tbackground: var(--vscode-scrollbarSlider-activeBackground);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css": +/*!****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css ***! + \****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-diff-editor .diff-review-line-number {\n\ttext-align: right;\n\tdisplay: inline-block;\n\tcolor: var(--vscode-editorLineNumber-foreground);\n}\n\n.monaco-diff-editor .diff-review {\n\tposition: absolute;\n\tuser-select: none;\n\t-webkit-user-select: none;\n\tz-index: 99;\n}\n\n.monaco-diff-editor .diff-review-summary {\n\tpadding-left: 10px;\n}\n\n.monaco-diff-editor .diff-review-shadow {\n\tposition: absolute;\n\tbox-shadow: var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset;\n}\n\n.monaco-diff-editor .diff-review-row {\n\twhite-space: pre;\n}\n\n.monaco-diff-editor .diff-review-table {\n\tdisplay: table;\n\tmin-width: 100%;\n}\n\n.monaco-diff-editor .diff-review-row {\n\tdisplay: table-row;\n\twidth: 100%;\n}\n\n.monaco-diff-editor .diff-review-spacer {\n\tdisplay: inline-block;\n\twidth: 10px;\n\tvertical-align: middle;\n}\n\n.monaco-diff-editor .diff-review-spacer > .codicon {\n\tfont-size: 9px !important;\n}\n\n.monaco-diff-editor .diff-review-actions {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tright: 10px;\n\ttop: 2px;\n\tz-index: 100;\n}\n\n.monaco-diff-editor .diff-review-actions .action-label {\n\twidth: 16px;\n\theight: 16px;\n\tmargin: 2px 0;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css": +/*!************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css ***! + \************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* -------------------- IE10 remove auto clear button -------------------- */\n\n::-ms-clear {\n\tdisplay: none;\n}\n\n/* All widgets */\n/* I am not a big fan of this rule */\n.monaco-editor .editor-widget input {\n\tcolor: inherit;\n}\n\n/* -------------------- Editor -------------------- */\n\n.monaco-editor {\n\tposition: relative;\n\toverflow: visible;\n\t-webkit-text-size-adjust: 100%;\n\tcolor: var(--vscode-editor-foreground);\n\tbackground-color: var(--vscode-editor-background);\n}\n.monaco-editor-background {\n\tbackground-color: var(--vscode-editor-background);\n}\n.monaco-editor .rangeHighlight {\n\tbackground-color: var(--vscode-editor-rangeHighlightBackground);\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-editor-rangeHighlightBorder);\n}\n.monaco-editor.hc-black .rangeHighlight, .monaco-editor.hc-light .rangeHighlight {\n\tborder-style: dotted;\n}\n.monaco-editor .symbolHighlight {\n\tbackground-color: var(--vscode-editor-symbolHighlightBackground);\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-editor-symbolHighlightBorder);\n}\n.monaco-editor.hc-black .symbolHighlight, .monaco-editor.hc-light .symbolHighlight {\n\tborder-style: dotted;\n}\n\n/* -------------------- Misc -------------------- */\n\n.monaco-editor .overflow-guard {\n\tposition: relative;\n\toverflow: hidden;\n}\n\n.monaco-editor .view-overlays {\n\tposition: absolute;\n\ttop: 0;\n}\n\n/*\n.monaco-editor .auto-closed-character {\n\topacity: 0.3;\n}\n*/\n\n\n.monaco-editor .squiggly-error {\n\tborder-bottom: 4px double var(--vscode-editorError-border);\n}\n.monaco-editor .squiggly-error::before {\n\tdisplay: block;\n\tcontent: '';\n\twidth: 100%;\n\theight: 100%;\n\tbackground: var(--vscode-editorError-background);\n}\n.monaco-editor .squiggly-warning {\n\tborder-bottom: 4px double var(--vscode-editorWarning-border);\n}\n.monaco-editor .squiggly-warning::before {\n\tdisplay: block;\n\tcontent: '';\n\twidth: 100%;\n\theight: 100%;\n\tbackground: var(--vscode-editorWarning-background);\n}\n.monaco-editor .squiggly-info {\n\tborder-bottom: 4px double var(--vscode-editorInfo-border);\n}\n.monaco-editor .squiggly-info::before {\n\tdisplay: block;\n\tcontent: '';\n\twidth: 100%;\n\theight: 100%;\n\tbackground: var(--vscode-editorInfo-background);\n}\n.monaco-editor .squiggly-hint {\n\tborder-bottom: 2px dotted var(--vscode-editorHint-border);\n}\n.monaco-editor.showUnused .squiggly-unnecessary {\n\tborder-bottom: 2px dashed var(--vscode-editorUnnecessaryCode-border);\n}\n.monaco-editor.showDeprecated .squiggly-inline-deprecated {\n\ttext-decoration: line-through;\n\ttext-decoration-color: var(--vscode-editor-foreground, inherit);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .selection-anchor {\n\tbackground-color: #007ACC;\n\twidth: 2px !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.css": +/*!********************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.css ***! + \********************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .bracket-match {\n\tbox-sizing: border-box;\n\tbackground-color: var(--vscode-editorBracketMatch-background);\n\tborder: 1px solid var(--vscode-editorBracketMatch-border);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.css": +/*!***************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.css ***! + \***************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .lightBulbWidget {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.monaco-editor .lightBulbWidget:hover{\n\tcursor: pointer;\n}\n\n.monaco-editor .lightBulbWidget.codicon-light-bulb {\n\tcolor: var(--vscode-editorLightBulb-foreground);\n}\n\n.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix {\n\tcolor: var(--vscode-editorLightBulbAutoFix-foreground, var(--vscode-editorLightBulb-foreground));\n}\n\n.monaco-editor .lightBulbWidget:before {\n\tposition: relative;\n\tz-index: 2;\n}\n\n.monaco-editor .lightBulbWidget:after {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcontent: '';\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\topacity: 0.3;\n\tbackground-color: var(--vscode-editor-background);\n\tz-index: 1;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensWidget.css": +/*!************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensWidget.css ***! + \************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .codelens-decoration {\n\toverflow: hidden;\n\tdisplay: inline-block;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tcolor: var(--vscode-editorCodeLens-foreground);\n\tline-height: var(--vscode-editorCodeLens-lineHeight);\n\tfont-size: var(--vscode-editorCodeLens-fontSize);\n\tpadding-right: calc(var(--vscode-editorCodeLens-fontSize)*0.5);\n\tfont-feature-settings: var(--vscode-editorCodeLens-fontFeatureSettings);\n\tfont-family: var(--vscode-editorCodeLens-fontFamily), var(--vscode-editorCodeLens-fontFamilyDefault);\n}\n\n.monaco-editor .codelens-decoration>span,\n.monaco-editor .codelens-decoration>a {\n\tuser-select: none;\n\t-webkit-user-select: none;\n\twhite-space: nowrap;\n\tvertical-align: sub;\n}\n\n.monaco-editor .codelens-decoration>a {\n\ttext-decoration: none;\n}\n\n.monaco-editor .codelens-decoration>a:hover {\n\tcursor: pointer;\n\tcolor: var(--vscode-editorLink-activeForeground) !important;\n}\n\n.monaco-editor .codelens-decoration>a:hover .codicon {\n\tcolor: var(--vscode-editorLink-activeForeground) !important;\n}\n\n.monaco-editor .codelens-decoration .codicon {\n\tvertical-align: middle;\n\tcolor: currentColor !important;\n\tcolor: var(--vscode-editorCodeLens-foreground);\n\tline-height: var(--vscode-editorCodeLens-lineHeight);\n\tfont-size: var(--vscode-editorCodeLens-fontSize);\n}\n\n.monaco-editor .codelens-decoration>a:hover .codicon::before {\n\tcursor: pointer;\n}\n\n@keyframes fadein {\n\t0% {\n\t\topacity: 0;\n\t\tvisibility: visible;\n\t}\n\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n.monaco-editor .codelens-decoration.fadein {\n\tanimation: fadein 0.1s linear;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPicker.css": +/*!************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPicker.css ***! + \************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII= */ \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.colorpicker-widget {\n\theight: 190px;\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n\n/* Decoration */\n\n.colorpicker-color-decoration,\n.hc-light .colorpicker-color-decoration {\n\tborder: solid 0.1em #000;\n\tbox-sizing: border-box;\n\tmargin: 0.1em 0.2em 0 0.2em;\n\twidth: 0.8em;\n\theight: 0.8em;\n\tline-height: 0.8em;\n\tdisplay: inline-block;\n\tcursor: pointer;\n}\n\n.hc-black .colorpicker-color-decoration,\n.vs-dark .colorpicker-color-decoration {\n\tborder: solid 0.1em #eee;\n}\n\n/* Header */\n\n.colorpicker-header {\n\tdisplay: flex;\n\theight: 24px;\n\tposition: relative;\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n\tbackground-size: 9px 9px;\n\timage-rendering: pixelated;\n}\n\n.colorpicker-header .picked-color {\n\twidth: 240px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tline-height: 24px;\n\tcursor: pointer;\n\tcolor: white;\n\tflex: 1;\n}\n\n.colorpicker-header .picked-color .codicon {\n\tcolor: inherit;\n\tfont-size: 14px;\n\tposition: absolute;\n\tleft: 8px;\n}\n\n.colorpicker-header .picked-color.light {\n\tcolor: black;\n}\n\n.colorpicker-header .original-color {\n\twidth: 74px;\n\tz-index: inherit;\n\tcursor: pointer;\n}\n\n.standalone-colorpicker {\n\tcolor: var(--vscode-editorHoverWidget-foreground);\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder: 1px solid var(--vscode-editorHoverWidget-border);\n}\n\n.colorpicker-header.standalone-colorpicker {\n\tborder-bottom: none;\n}\n\n.colorpicker-header .close-button {\n\tcursor: pointer;\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder-left: 1px solid var(--vscode-editorHoverWidget-border);\n}\n\n.colorpicker-header .close-button-inner-div {\n\twidth: 100%;\n\theight: 100%;\n\ttext-align: center;\n}\n\n.colorpicker-header .close-button-inner-div:hover {\n\tbackground-color: var(--vscode-toolbar-hoverBackground);\n}\n\n.colorpicker-header .close-icon {\n\tpadding: 3px;\n}\n\n/* Body */\n\n.colorpicker-body {\n\tdisplay: flex;\n\tpadding: 8px;\n\tposition: relative;\n}\n\n.colorpicker-body .saturation-wrap {\n\toverflow: hidden;\n\theight: 150px;\n\tposition: relative;\n\tmin-width: 220px;\n\tflex: 1;\n}\n\n.colorpicker-body .saturation-box {\n\theight: 150px;\n\tposition: absolute;\n}\n\n.colorpicker-body .saturation-selection {\n\twidth: 9px;\n\theight: 9px;\n\tmargin: -5px 0 0 -5px;\n\tborder: 1px solid rgb(255, 255, 255);\n\tborder-radius: 100%;\n\tbox-shadow: 0px 0px 2px rgba(0, 0, 0, 0.8);\n\tposition: absolute;\n}\n\n.colorpicker-body .strip {\n\twidth: 25px;\n\theight: 150px;\n}\n\n.colorpicker-body .standalone-strip {\n\twidth: 25px;\n\theight: 122px;\n}\n\n.colorpicker-body .hue-strip {\n\tposition: relative;\n\tmargin-left: 8px;\n\tcursor: grab;\n\tbackground: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n}\n\n.colorpicker-body .opacity-strip {\n\tposition: relative;\n\tmargin-left: 8px;\n\tcursor: grab;\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n\tbackground-size: 9px 9px;\n\timage-rendering: pixelated;\n}\n\n.colorpicker-body .strip.grabbing {\n\tcursor: grabbing;\n}\n\n.colorpicker-body .slider {\n\tposition: absolute;\n\ttop: 0;\n\tleft: -2px;\n\twidth: calc(100% + 4px);\n\theight: 4px;\n\tbox-sizing: border-box;\n\tborder: 1px solid rgba(255, 255, 255, 0.71);\n\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);\n}\n\n.colorpicker-body .strip .overlay {\n\theight: 150px;\n\tpointer-events: none;\n}\n\n.colorpicker-body .standalone-strip .standalone-overlay {\n\theight: 122px;\n\tpointer-events: none;\n}\n\n.standalone-colorpicker-body {\n\tdisplay: block;\n\tborder: 1px solid transparent;\n\tborder-bottom: 1px solid var(--vscode-editorHoverWidget-border);\n\toverflow: hidden;\n}\n\n.colorpicker-body .insert-button {\n\tposition: absolute;\n\theight: 20px;\n\twidth: 58px;\n\tpadding: 0px;\n\tright: 8px;\n\tbottom: 8px;\n\tbackground: var(--vscode-button-background);\n\tcolor: var(--vscode-button-foreground);\n\tborder-radius: 2px;\n\tborder: none;\n\tcursor: pointer;\n}\n\n.colorpicker-body .insert-button:hover{\n\tbackground: var(--vscode-button-hoverBackground);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPicker.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/browser/dnd.css": +/*!********************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/browser/dnd.css ***! + \********************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor.vs .dnd-target,\n.monaco-editor.hc-light .dnd-target {\n\tborder-right: 2px dotted black;\n\tcolor: white; /* opposite of black */\n}\n.monaco-editor.vs-dark .dnd-target {\n\tborder-right: 2px dotted #AEAFAD;\n\tcolor: #51504f; /* opposite of #AEAFAD */\n}\n.monaco-editor.hc-black .dnd-target {\n\tborder-right: 2px dotted #fff;\n\tcolor: #000; /* opposite of #fff */\n}\n\n.monaco-editor.mouse-default .view-lines,\n.monaco-editor.vs-dark.mac.mouse-default .view-lines,\n.monaco-editor.hc-black.mac.mouse-default .view-lines,\n.monaco-editor.hc-light.mac.mouse-default .view-lines {\n\tcursor: default;\n}\n.monaco-editor.mouse-copy .view-lines,\n.monaco-editor.vs-dark.mac.mouse-copy .view-lines,\n.monaco-editor.hc-black.mac.mouse-copy .view-lines,\n.monaco-editor.hc-light.mac.mouse-copy .view-lines {\n\tcursor: copy;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/browser/dnd.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.css": +/*!*******************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.css ***! + \*******************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.post-edit-widget {\n\tbox-shadow: 0 0 8px 2px var(--vscode-widget-shadow);\n\tborder: 1px solid var(--vscode-widget-border, transparent);\n\tborder-radius: 4px;\n\tbackground-color: var(--vscode-editorWidget-background);\n\toverflow: hidden;\n}\n\n.post-edit-widget .monaco-button {\n\tpadding: 2px;\n\tborder: none;\n\tborder-radius: 0;\n}\n\n.post-edit-widget .monaco-button:hover {\n\tbackground-color: var(--vscode-button-secondaryHoverBackground) !important;\n}\n\n.post-edit-widget .monaco-button .codicon {\n\tmargin: 0;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findOptionsWidget.css": +/*!***********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findOptionsWidget.css ***! + \***********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .findOptionsWidget {\n\tbackground-color: var(--vscode-editorWidget-background);\n\tcolor: var(--vscode-editorWidget-foreground);\n\tbox-shadow: 0 0 8px 2px var(--vscode-widget-shadow);\n\tborder: 2px solid var(--vscode-contrastBorder);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findOptionsWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findWidget.css": +/*!****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findWidget.css ***! + \****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* Find widget */\n.monaco-editor .find-widget {\n\tposition: absolute;\n\tz-index: 35;\n\theight: 33px;\n\toverflow: hidden;\n\tline-height: 19px;\n\ttransition: transform 200ms linear;\n\tpadding: 0 4px;\n\tbox-sizing: border-box;\n\ttransform: translateY(calc(-100% - 10px)); /* shadow (10px) */\n\tborder-bottom-left-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n}\n\n.monaco-workbench.reduce-motion .monaco-editor .find-widget {\n\ttransition: transform 0ms linear;\n}\n\n.monaco-editor .find-widget textarea {\n\tmargin: 0px;\n}\n\n.monaco-editor .find-widget.hiddenEditor {\n\tdisplay: none;\n}\n\n/* Find widget when replace is toggled on */\n.monaco-editor .find-widget.replaceToggled > .replace-part {\n\tdisplay: flex;\n}\n\n.monaco-editor .find-widget.visible {\n\ttransform: translateY(0);\n}\n\n.monaco-editor .find-widget .monaco-inputbox.synthetic-focus {\n\toutline: 1px solid -webkit-focus-ring-color;\n\toutline-offset: -1px;\n}\n\n.monaco-editor .find-widget .monaco-inputbox .input {\n\tbackground-color: transparent;\n\tmin-height: 0;\n}\n\n.monaco-editor .find-widget .monaco-findInput .input {\n\tfont-size: 13px;\n}\n\n.monaco-editor .find-widget > .find-part,\n.monaco-editor .find-widget > .replace-part {\n\tmargin: 3px 25px 0 17px;\n\tfont-size: 12px;\n\tdisplay: flex;\n}\n\n.monaco-editor .find-widget > .find-part .monaco-inputbox,\n.monaco-editor .find-widget > .replace-part .monaco-inputbox {\n\tmin-height: 25px;\n}\n\n\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .mirror {\n\tpadding-right: 22px;\n}\n\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .ibwrapper > .input,\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .ibwrapper > .mirror,\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .input,\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .mirror {\n\tpadding-top: 2px;\n\tpadding-bottom: 2px;\n}\n\n.monaco-editor .find-widget > .find-part .find-actions {\n\theight: 25px;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-editor .find-widget > .replace-part .replace-actions {\n\theight: 25px;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-editor .find-widget .monaco-findInput {\n\tvertical-align: middle;\n\tdisplay: flex;\n\tflex:1;\n}\n\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element {\n\t/* Make sure textarea inherits the width correctly */\n\twidth: 100%;\n}\n\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical {\n\t/* Hide vertical scrollbar */\n\topacity: 0;\n}\n\n.monaco-editor .find-widget .matchesCount {\n\tdisplay: flex;\n\tflex: initial;\n\tmargin: 0 0 0 3px;\n\tpadding: 2px 0 0 2px;\n\theight: 25px;\n\tvertical-align: middle;\n\tbox-sizing: border-box;\n\ttext-align: center;\n\tline-height: 23px;\n}\n\n.monaco-editor .find-widget .button {\n\twidth: 16px;\n\theight: 16px;\n\tpadding: 3px;\n\tborder-radius: 5px;\n\tdisplay: flex;\n\tflex: initial;\n\tmargin-left: 3px;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* find in selection button */\n.monaco-editor .find-widget .codicon-find-selection {\n\twidth: 22px;\n\theight: 22px;\n\tpadding: 3px;\n\tborder-radius: 5px;\n}\n\n.monaco-editor .find-widget .button.left {\n\tmargin-left: 0;\n\tmargin-right: 3px;\n}\n\n.monaco-editor .find-widget .button.wide {\n\twidth: auto;\n\tpadding: 1px 6px;\n\ttop: -1px;\n}\n\n.monaco-editor .find-widget .button.toggle {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 3px;\n\twidth: 18px;\n\theight: 100%;\n\tborder-radius: 0;\n\tbox-sizing: border-box;\n}\n\n.monaco-editor .find-widget .button.toggle.disabled {\n\tdisplay: none;\n}\n\n.monaco-editor .find-widget .disabled {\n\tcolor: var(--vscode-disabledForeground);\n\tcursor: default;\n}\n\n.monaco-editor .find-widget > .replace-part {\n\tdisplay: none;\n}\n\n.monaco-editor .find-widget > .replace-part > .monaco-findInput {\n\tposition: relative;\n\tdisplay: flex;\n\tvertical-align: middle;\n\tflex: auto;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n}\n\n.monaco-editor .find-widget > .replace-part > .monaco-findInput > .controls {\n\tposition: absolute;\n\ttop: 3px;\n\tright: 2px;\n}\n\n/* REDUCED */\n.monaco-editor .find-widget.reduced-find-widget .matchesCount {\n\tdisplay:none;\n}\n\n/* NARROW (SMALLER THAN REDUCED) */\n.monaco-editor .find-widget.narrow-find-widget {\n\tmax-width: 257px !important;\n}\n\n/* COLLAPSED (SMALLER THAN NARROW) */\n.monaco-editor .find-widget.collapsed-find-widget {\n\tmax-width: 170px !important;\n}\n\n.monaco-editor .find-widget.collapsed-find-widget .button.previous,\n.monaco-editor .find-widget.collapsed-find-widget .button.next,\n.monaco-editor .find-widget.collapsed-find-widget .button.replace,\n.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,\n.monaco-editor .find-widget.collapsed-find-widget > .find-part .monaco-findInput .controls {\n\tdisplay:none;\n}\n\n.monaco-editor .findMatch {\n\tanimation-duration: 0;\n\tanimation-name: inherit !important;\n}\n\n.monaco-editor .find-widget .monaco-sash {\n\tleft: 0 !important;\n}\n\n.monaco-editor.hc-black .find-widget .button:before {\n\tposition: relative;\n\ttop: 1px;\n\tleft: 2px;\n}\n\n/* Close button position. */\n.monaco-editor .find-widget > .button.codicon-widget-close {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 4px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/folding.css": +/*!****************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/folding.css ***! + \****************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,\n.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded,\n.monaco-editor .margin-view-overlays .codicon-folding-expanded,\n.monaco-editor .margin-view-overlays .codicon-folding-collapsed {\n\tcursor: pointer;\n\topacity: 0;\n\ttransition: opacity 0.5s;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tfont-size: 140%;\n\tmargin-left: 2px;\n}\n\n.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,\n.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded,\n.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,\n.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed {\n\ttransition: initial;\n}\n\n.monaco-editor .margin-view-overlays:hover .codicon,\n.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,\n.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,\n.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons {\n\topacity: 1;\n}\n\n.monaco-editor .inline-folded:after {\n\tcolor: grey;\n\tmargin: 0.1em 0.2em 0 0.2em;\n\tcontent: \"\\\\22EF\"; /* ellipses unicode character */\n\tdisplay: inline;\n\tline-height: 1em;\n\tcursor: pointer;\n}\n\n.monaco-editor .folded-background {\n\tbackground-color: var(--vscode-editor-foldBackground);\n}\n\n.monaco-editor .cldr.codicon.codicon-folding-expanded,\n.monaco-editor .cldr.codicon.codicon-folding-collapsed,\n.monaco-editor .cldr.codicon.codicon-folding-manual-expanded,\n.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed {\n\tcolor: var(--vscode-editorGutter-foldingControlForeground) !important;\n}\n\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/folding.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/media/gotoErrorWidget.css": +/*!********************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/media/gotoErrorWidget.css ***! + \********************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* marker zone */\n\n.monaco-editor .peekview-widget .head .peekview-title .severity-icon {\n\tdisplay: inline-block;\n\tvertical-align: text-top;\n\tmargin-right: 4px;\n}\n\n.monaco-editor .marker-widget {\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.monaco-editor .marker-widget > .stale {\n\topacity: 0.6;\n\tfont-style: italic;\n}\n\n.monaco-editor .marker-widget .title {\n\tdisplay: inline-block;\n\tpadding-right: 5px;\n}\n\n.monaco-editor .marker-widget .descriptioncontainer {\n\tposition: absolute;\n\twhite-space: pre;\n\tuser-select: text;\n\t-webkit-user-select: text;\n\tpadding: 8px 12px 0 20px;\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message .details {\n\tpadding-left: 6px;\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message .source,\n.monaco-editor .marker-widget .descriptioncontainer .message span.code {\n\topacity: 0.6;\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link {\n\topacity: 0.6;\n\tcolor: inherit;\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before {\n\tcontent: '(';\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after {\n\tcontent: ')';\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span {\n\ttext-decoration: underline;\n\t/** Hack to force underline to show **/\n\tborder-bottom: 1px solid transparent;\n\ttext-underline-position: under;\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span {\n\tcolor: var(--vscode-textLink-activeForeground);\n}\n\n.monaco-editor .marker-widget .descriptioncontainer .filename {\n\tcursor: pointer;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/media/gotoErrorWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.css": +/*!*****************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.css ***! + \*****************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .goto-definition-link {\n\ttext-decoration: underline;\n\tcursor: pointer;\n\tcolor: var(--vscode-editorLink-activeForeground) !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.css": +/*!*********************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.css ***! + \*********************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* -- zone widget */\n.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget {\n\tborder-top-width: 1px;\n\tborder-bottom-width: 1px;\n}\n\n.monaco-editor .reference-zone-widget .inline {\n\tdisplay: inline-block;\n\tvertical-align: top;\n}\n\n.monaco-editor .reference-zone-widget .messages {\n\theight: 100%;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding: 3em 0;\n}\n\n.monaco-editor .reference-zone-widget .ref-tree {\n\tline-height: 23px;\n\tbackground-color: var(--vscode-peekViewResult-background);\n\tcolor: var(--vscode-peekViewResult-lineForeground);\n}\n\n.monaco-editor .reference-zone-widget .ref-tree .reference {\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n}\n\n.monaco-editor .reference-zone-widget .ref-tree .reference-file {\n\tdisplay: inline-flex;\n\twidth: 100%;\n\theight: 100%;\n\tcolor: var(--vscode-peekViewResult-fileForeground);\n}\n\n.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file {\n\tcolor: inherit !important;\n}\n\n.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) {\n\tbackground-color: var(--vscode-peekViewResult-selectionBackground);\n\tcolor: var(--vscode-peekViewResult-selectionForeground) !important;\n}\n\n.monaco-editor .reference-zone-widget .ref-tree .reference-file .count {\n\tmargin-right: 12px;\n\tmargin-left: auto;\n}\n\n.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight {\n\tbackground-color: var(--vscode-peekViewResult-matchHighlightBackground);\n}\n\n.monaco-editor .reference-zone-widget .preview .reference-decoration {\n\tbackground-color: var(--vscode-peekViewEditor-matchHighlightBackground);\n\tborder: 2px solid var(--vscode-peekViewEditor-matchHighlightBorder);\n\tbox-sizing: border-box;\n}\n\n.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,\n.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {\n\tbackground-color: var(--vscode-peekViewEditor-background);\n}\n\n.monaco-editor .reference-zone-widget .preview .monaco-editor .margin {\n\tbackground-color: var(--vscode-peekViewEditorGutter-background);\n}\n\n/* High Contrast Theming */\n\n.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,\n.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file {\n\tfont-weight: bold;\n}\n\n.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,\n.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight {\n\tborder: 1px dotted var(--vscode-contrastActiveBorder, transparent);\n\tbox-sizing: border-box;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hover.css": +/*!************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hover.css ***! + \************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .hoverHighlight {\n\tbackground-color: var(--vscode-editor-hoverHighlightBackground);\n}\n\n.monaco-editor .monaco-hover {\n\tcolor: var(--vscode-editorHoverWidget-foreground);\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder: 1px solid var(--vscode-editorHoverWidget-border);\n\tborder-radius: 3px;\n}\n\n.monaco-editor .monaco-hover a {\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-editor .monaco-hover a:hover {\n\tcolor: var(--vscode-textLink-activeForeground);\n}\n\n.monaco-editor .monaco-hover .hover-row .actions {\n\tbackground-color: var(--vscode-editorHoverWidget-statusBarBackground);\n}\n\n.monaco-editor .monaco-hover code {\n\tbackground-color: var(--vscode-textCodeBlock-background);\n}\n\n\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hover.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.css": +/*!******************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.css ***! + \******************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n.monaco-editor.vs .valueSetReplacement {\n\toutline: solid 2px var(--vscode-editorBracketMatch-border);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostText.css": +/*!****************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostText.css ***! + \****************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .suggest-preview-additional-widget {\n\twhite-space: nowrap;\n}\n\n.monaco-editor .suggest-preview-additional-widget .content-spacer {\n\tcolor: transparent;\n\twhite-space: pre;\n}\n\n.monaco-editor .suggest-preview-additional-widget .button {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\ttext-decoration: underline;\n\ttext-underline-position: under;\n}\n\n.monaco-editor .ghost-text-hidden {\n\topacity: 0;\n\tfont-size: 0;\n}\n\n.monaco-editor .ghost-text-decoration, .monaco-editor .suggest-preview-text .ghost-text {\n\tfont-style: italic;\n}\n\n.monaco-editor .inline-completion-text-to-replace {\n\ttext-decoration: underline;\n\ttext-underline-position: under;\n}\n\n.monaco-editor .ghost-text-decoration,\n.monaco-editor .ghost-text-decoration-preview,\n.monaco-editor .suggest-preview-text .ghost-text {\n\tcolor: var(--vscode-editorGhostText-foreground) !important;\n\tbackground-color: var(--vscode-editorGhostText-background);\n\tborder: 1px solid var(--vscode-editorGhostText-border);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostText.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget.css": +/*!***********************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget.css ***! + \***********************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .inlineSuggestionsHints.withBorder {\n\tz-index: 39;\n\tcolor: var(--vscode-editorHoverWidget-foreground);\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder: 1px solid var(--vscode-editorHoverWidget-border);\n}\n\n.monaco-editor .inlineSuggestionsHints a {\n\tcolor: var(--vscode-foreground);\n}\n\n.monaco-editor .inlineSuggestionsHints a:hover {\n\tcolor: var(--vscode-foreground);\n}\n\n.monaco-editor .inlineSuggestionsHints .keybinding {\n\tdisplay: flex;\n\tmargin-left: 4px;\n\topacity: 0.6;\n}\n\n.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key {\n\tfont-size: 8px;\n\tpadding: 2px 3px;\n}\n\n.monaco-editor .inlineSuggestionsHints .custom-actions .action-item:nth-child(2) a {\n\tdisplay: flex;\n\tmin-width: 19px;\n\tjustify-content: center;\n}\n\n.monaco-editor .inlineSuggestionStatusBarItemLabel {\n\tmargin-right: 2px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inlineProgress/browser/inlineProgressWidget.css": +/*!************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/inlineProgress/browser/inlineProgressWidget.css ***! + \************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.inline-editor-progress-decoration {\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 1em;\n}\n\n.inline-progress-widget {\n\tdisplay: flex !important;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.inline-progress-widget .icon {\n\tfont-size: 80% !important;\n}\n\n.inline-progress-widget:hover .icon {\n\tfont-size: 90% !important;\n\tanimation: none;\n}\n\n.inline-progress-widget:hover .icon::before {\n\tcontent: \"\\\\ea76\"; /* codicon-x */\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineProgress/browser/inlineProgressWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.css": +/*!****************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.css ***! + \****************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .linked-editing-decoration {\n\tbackground-color: var(--vscode-editor-linkedEditingBackground);\n\n\t/* Ensure decoration is visible even if range is empty */\n\tmin-width: 1px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/links/browser/links.css": +/*!************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/links/browser/links.css ***! + \************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n.monaco-editor .detected-link,\n.monaco-editor .detected-link-active {\n\ttext-decoration: underline;\n\ttext-underline-position: under;\n}\n\n.monaco-editor .detected-link-active {\n\tcursor: pointer;\n\tcolor: var(--vscode-editorLink-activeForeground) !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/links/browser/links.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/markdownRenderer/browser/renderedMarkdown.css": +/*!**********************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/markdownRenderer/browser/renderedMarkdown.css ***! + \**********************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .rendered-markdown kbd {\n\tbackground-color: var(--vscode-keybindingLabel-background);\n\tcolor: var(--vscode-keybindingLabel-foreground);\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-radius: 3px;\n\tborder-color: var(--vscode-keybindingLabel-border);\n\tborder-bottom-color: var(--vscode-keybindingLabel-bottomBorder);\n\tbox-shadow: inset 0 -1px 0 var(--vscode-widget-shadow);\n\tvertical-align: middle;\n\tpadding: 1px 3px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/markdownRenderer/browser/renderedMarkdown.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/message/browser/messageController.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/message/browser/messageController.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .monaco-editor-overlaymessage {\n\tpadding-bottom: 8px;\n\tz-index: 10000;\n}\n\n.monaco-editor .monaco-editor-overlaymessage.below {\n\tpadding-bottom: 0;\n\tpadding-top: 8px;\n\tz-index: 10000;\n}\n\n@keyframes fadeIn {\n\tfrom { opacity: 0; }\n\tto { opacity: 1; }\n}\n.monaco-editor .monaco-editor-overlaymessage.fadeIn {\n\tanimation: fadeIn 150ms ease-out;\n}\n\n@keyframes fadeOut {\n\tfrom { opacity: 1; }\n\tto { opacity: 0; }\n}\n.monaco-editor .monaco-editor-overlaymessage.fadeOut {\n\tanimation: fadeOut 100ms ease-out;\n}\n\n.monaco-editor .monaco-editor-overlaymessage .message {\n\tpadding: 2px 4px;\n\tcolor: var(--vscode-editorHoverWidget-foreground);\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder: 1px solid var(--vscode-inputValidation-infoBorder);\n\tborder-radius: 3px;\n}\n\n.monaco-editor .monaco-editor-overlaymessage .message p {\n\tmargin-block: 0px;\n}\n\n.monaco-editor .monaco-editor-overlaymessage .message a {\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-editor .monaco-editor-overlaymessage .message a:hover {\n\tcolor: var(--vscode-textLink-activeForeground);\n}\n\n.monaco-editor.hc-black .monaco-editor-overlaymessage .message,\n.monaco-editor.hc-light .monaco-editor-overlaymessage .message {\n\tborder-width: 2px;\n}\n\n.monaco-editor .monaco-editor-overlaymessage .anchor {\n\twidth: 0 !important;\n\theight: 0 !important;\n\tborder-color: transparent;\n\tborder-style: solid;\n\tz-index: 1000;\n\tborder-width: 8px;\n\tposition: absolute;\n\tleft: 2px;\n}\n\n.monaco-editor .monaco-editor-overlaymessage .anchor.top {\n\tborder-bottom-color: var(--vscode-inputValidation-infoBorder);\n}\n\n.monaco-editor .monaco-editor-overlaymessage .anchor.below {\n\tborder-top-color: var(--vscode-inputValidation-infoBorder);\n}\n\n.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top,\n.monaco-editor .monaco-editor-overlaymessage.below .anchor.below {\n\tdisplay: none;\n}\n\n.monaco-editor .monaco-editor-overlaymessage.below .anchor.top {\n\tdisplay: inherit;\n\ttop: -8px;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/message/browser/messageController.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHints.css": +/*!******************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHints.css ***! + \******************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .parameter-hints-widget {\n\t/* Must be higher than the sash's z-index and terminal canvases but lower than the suggest widget */\n\tz-index: 39;\n\tdisplay: flex;\n\tflex-direction: column;\n\tline-height: 1.5em;\n\tcursor: default;\n\tcolor: var(--vscode-editorHoverWidget-foreground);\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder: 1px solid var(--vscode-editorHoverWidget-border);\n}\n\n.hc-black .monaco-editor .parameter-hints-widget,\n.hc-light .monaco-editor .parameter-hints-widget {\n\tborder-width: 2px;\n}\n\n.monaco-editor .parameter-hints-widget > .phwrapper {\n\tmax-width: 440px;\n\tdisplay: flex;\n\tflex-direction: row;\n}\n\n.monaco-editor .parameter-hints-widget.multiple {\n\tmin-height: 3.3em;\n\tpadding: 0;\n}\n\n.monaco-editor .parameter-hints-widget.multiple .body::before {\n\tcontent: \"\";\n\tdisplay: block;\n\theight: 100%;\n\tposition: absolute;\n\topacity: 0.5;\n\tborder-left: 1px solid var(--vscode-editorHoverWidget-border);\n}\n\n.monaco-editor .parameter-hints-widget p,\n.monaco-editor .parameter-hints-widget ul {\n\tmargin: 8px 0;\n}\n\n.monaco-editor .parameter-hints-widget .monaco-scrollable-element,\n.monaco-editor .parameter-hints-widget .body {\n\tdisplay: flex;\n\tflex: 1;\n\tflex-direction: column;\n\tmin-height: 100%;\n}\n\n.monaco-editor .parameter-hints-widget .signature {\n\tpadding: 4px 5px;\n\tposition: relative;\n}\n\n.monaco-editor .parameter-hints-widget .signature.has-docs::after {\n\tcontent: \"\";\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 0;\n\twidth: 100%;\n\tpadding-top: 4px;\n\topacity: 0.5;\n\tborder-bottom: 1px solid var(--vscode-editorHoverWidget-border);\n}\n\n.monaco-editor .parameter-hints-widget .docs {\n\tpadding: 0 10px 0 5px;\n\twhite-space: pre-wrap;\n}\n\n.monaco-editor .parameter-hints-widget .docs.empty {\n\tdisplay: none;\n}\n\n.monaco-editor .parameter-hints-widget .docs a {\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-editor .parameter-hints-widget .docs a:hover {\n\tcolor: var(--vscode-textLink-activeForeground);\n\tcursor: pointer;\n}\n\n.monaco-editor .parameter-hints-widget .docs .markdown-docs {\n\twhite-space: initial;\n}\n\n.monaco-editor .parameter-hints-widget .docs code {\n\tfont-family: var(--monaco-monospace-font);\n\tborder-radius: 3px;\n\tpadding: 0 0.4em;\n\tbackground-color: var(--vscode-textCodeBlock-background);\n}\n\n.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source,\n.monaco-editor .parameter-hints-widget .docs .code {\n\twhite-space: pre-wrap;\n}\n\n.monaco-editor .parameter-hints-widget .controls {\n\tdisplay: none;\n\tflex-direction: column;\n\talign-items: center;\n\tmin-width: 22px;\n\tjustify-content: flex-end;\n}\n\n.monaco-editor .parameter-hints-widget.multiple .controls {\n\tdisplay: flex;\n\tpadding: 0 2px;\n}\n\n.monaco-editor .parameter-hints-widget.multiple .button {\n\twidth: 16px;\n\theight: 16px;\n\tbackground-repeat: no-repeat;\n\tcursor: pointer;\n}\n\n.monaco-editor .parameter-hints-widget .button.previous {\n\tbottom: 24px;\n}\n\n.monaco-editor .parameter-hints-widget .overloads {\n\ttext-align: center;\n\theight: 12px;\n\tline-height: 12px;\n\tfont-family: var(--monaco-monospace-font);\n}\n\n.monaco-editor .parameter-hints-widget .signature .parameter.active {\n\tcolor: var(--vscode-editorHoverWidget-highlightForeground);\n\tfont-weight: bold;\n}\n\n.monaco-editor .parameter-hints-widget .documentation-parameter > .parameter {\n\tfont-weight: bold;\n\tmargin-right: 0.5em;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHints.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/browser/media/peekViewWidget.css": +/*!******************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/browser/media/peekViewWidget.css ***! + \******************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .peekview-widget .head {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-wrap: nowrap;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title {\n\tdisplay: flex;\n\talign-items: baseline;\n\tfont-size: 13px;\n\tmargin-left: 20px;\n\tmin-width: 0;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title.clickable {\n\tcursor: pointer;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty) {\n\tfont-size: 0.9em;\n\tmargin-left: 0.5em;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title .meta {\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title .dirname {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title .filename {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty)::before {\n\tcontent: '-';\n\tpadding: 0 0.3em;\n}\n\n.monaco-editor .peekview-widget .head .peekview-actions {\n\tflex: 1;\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar {\n\tdisplay: inline-block;\n}\n\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar,\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar > .actions-container {\n\theight: 100%;\n}\n\n.monaco-editor .peekview-widget > .body {\n\tborder-top: 1px solid;\n\tposition: relative;\n}\n\n.monaco-editor .peekview-widget .head .peekview-title .codicon {\n\tmargin-right: 4px;\n\talign-self: center;\n}\n\n.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon {\n\tcolor: inherit !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/browser/media/peekViewWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/renameInputField.css": +/*!************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/renameInputField.css ***! + \************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .rename-box {\n\tz-index: 100;\n\tcolor: inherit;\n\tborder-radius: 4px;\n}\n\n.monaco-editor .rename-box.preview {\n\tpadding: 4px 4px 0 4px;\n}\n\n.monaco-editor .rename-box .rename-input {\n\tpadding: 3px;\n\tborder-radius: 2px;\n}\n\n.monaco-editor .rename-box .rename-label {\n\tdisplay: none;\n\topacity: .8;\n}\n\n.monaco-editor .rename-box.preview .rename-label {\n\tdisplay: inherit;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/renameInputField.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetSession.css": +/*!***********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetSession.css ***! + \***********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .snippet-placeholder {\n\tmin-width: 2px;\n\toutline-style: solid;\n\toutline-width: 1px;\n\tbackground-color: var(--vscode-editor-snippetTabstopHighlightBackground, transparent);\n\toutline-color: var(--vscode-editor-snippetTabstopHighlightBorder, transparent);\n}\n\n.monaco-editor .finish-snippet-placeholder {\n\toutline-style: solid;\n\toutline-width: 1px;\n\tbackground-color: var(--vscode-editor-snippetFinalTabstopHighlightBackground, transparent);\n\toutline-color: var(--vscode-editor-snippetFinalTabstopHighlightBorder, transparent);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetSession.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScroll.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScroll.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .sticky-line {\n\tcolor: var(--vscode-editorLineNumber-foreground);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\tdisplay: inline-block;\n}\n\n.monaco-editor .sticky-line-number {\n\ttext-align: right;\n\tfloat: left;\n}\n\n.monaco-editor .sticky-line-root {\n\tbackground-color: inherit;\n\toverflow: hidden;\n\twhite-space: nowrap;\n\twidth: 100%;\n}\n\n.monaco-editor.hc-black .sticky-widget,\n.monaco-editor.hc-light .sticky-widget {\n\tborder-bottom: 1px solid var(--vscode-contrastBorder);\n}\n\n.monaco-editor .sticky-line-root:hover {\n\tbackground-color: var(--vscode-editorStickyScrollHover-background);\n\tcursor: pointer;\n}\n\n.monaco-editor .sticky-widget {\n\twidth: 100%;\n\tbox-shadow: var(--vscode-scrollbar-shadow) 0 3px 2px -2px;\n\tz-index: 4;\n\tbackground-color: var(--vscode-editorStickyScroll-background);\n}\n\n.monaco-editor .sticky-widget.peek {\n\tbackground-color: var(--vscode-peekViewEditorStickyScroll-background);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScroll.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/media/suggest.css": +/*!**********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/media/suggest.css ***! + \**********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/* Suggest widget*/\n\n.monaco-editor .suggest-widget {\n\twidth: 430px;\n\tz-index: 40;\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder-radius: 3px;\n}\n\n.monaco-editor .suggest-widget.message {\n\tflex-direction: row;\n\talign-items: center;\n}\n\n.monaco-editor .suggest-widget,\n.monaco-editor .suggest-details {\n\tflex: 0 1 auto;\n\twidth: 100%;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-color: var(--vscode-editorSuggestWidget-border);\n\tbackground-color: var(--vscode-editorSuggestWidget-background);\n}\n\n.monaco-editor.hc-black .suggest-widget,\n.monaco-editor.hc-black .suggest-details,\n.monaco-editor.hc-light .suggest-widget,\n.monaco-editor.hc-light .suggest-details {\n\tborder-width: 2px;\n}\n\n/* Styles for status bar part */\n\n\n.monaco-editor .suggest-widget .suggest-status-bar {\n\tbox-sizing: border-box;\n\tdisplay: none;\n\tflex-flow: row nowrap;\n\tjustify-content: space-between;\n\twidth: 100%;\n\tfont-size: 80%;\n\tpadding: 0 4px 0 4px;\n\tborder-top: 1px solid var(--vscode-editorSuggestWidget-border);\n\toverflow: hidden;\n}\n\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar {\n\tdisplay: flex;\n}\n\n.monaco-editor .suggest-widget .suggest-status-bar .left {\n\tpadding-right: 8px;\n}\n\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label {\n\tcolor: var(--vscode-editorSuggestWidgetStatus-foreground);\n}\n\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label {\n\tmargin-right: 0;\n}\n\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label::after {\n\tcontent: ', ';\n\tmargin-right: 0.3em;\n}\n\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {\n\tdisplay: none;\n}\n\n.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label {\n\twidth: 100%;\n}\n\n/* Styles for Message element for when widget is loading or is empty */\n\n.monaco-editor .suggest-widget>.message {\n\tpadding-left: 22px;\n}\n\n/** Styles for the list element **/\n\n.monaco-editor .suggest-widget>.tree {\n\theight: 100%;\n\twidth: 100%;\n}\n\n.monaco-editor .suggest-widget .monaco-list {\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n\n/** Styles for each row in the list element **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row {\n\tdisplay: flex;\n\t-mox-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tpadding-right: 10px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 2px 2px;\n\twhite-space: nowrap;\n\tcursor: pointer;\n\ttouch-action: none;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused {\n\tcolor: var(--vscode-editorSuggestWidget-selectedForeground);\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon {\n\tcolor: var(--vscode-editorSuggestWidget-selectedIconForeground);\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents {\n\tflex: 1;\n\theight: 100%;\n\toverflow: hidden;\n\tpadding-left: 2px;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main {\n\tdisplay: flex;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: pre;\n\tjustify-content: space-between;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {\n\tdisplay: flex;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label {\n\tcolor: var(--vscode-editorSuggestWidget-foreground);\n}\n\n.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight {\n\tfont-weight: bold;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight {\n\tcolor: var(--vscode-editorSuggestWidget-highlightForeground);\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight {\n\tcolor: var(--vscode-editorSuggestWidget-focusHighlightForeground);\n}\n\n/** ReadMore Icon styles **/\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore::before {\n\tcolor: inherit;\n\topacity: 1;\n\tfont-size: 14px;\n\tcursor: pointer;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 2px;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover {\n\topacity: 1;\n}\n\n/** signature, qualifier, type/details opacity **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\n\topacity: 0.7;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\topacity: 0.6;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label {\n\tmargin-left: 12px;\n\topacity: 0.4;\n\tfont-size: 85%;\n\tline-height: initial;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\talign-self: center;\n}\n\n/** Type Info and icon next to the label in the focused completion item **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\n\tfont-size: 85%;\n\tmargin-left: 1.1em;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source {\n\tdisplay: inline;\n}\n\n/** Details: if using CompletionItem#details, show on focus **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\n\tdisplay: none;\n}\n\n.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label {\n\tdisplay: inline;\n}\n\n/** Details: if using CompletionItemLabel#details, always show **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label {\n\tdisplay: inline;\n}\n\n/** Ellipsis on hover **/\n\n.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label {\n\twidth: calc(100% - 26px);\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left {\n\tflex-shrink: 1;\n\tflex-grow: 1;\n\toverflow: hidden;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label {\n\tflex-shrink: 0;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label {\n\tmax-width: 100%;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label {\n\tflex-shrink: 1;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {\n\toverflow: hidden;\n\tflex-shrink: 4;\n\tmax-width: 70%;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tright: 10px;\n\twidth: 18px;\n\theight: 18px;\n\tvisibility: hidden;\n}\n\n/** Do NOT display ReadMore when docs is side/below **/\n\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\n\tdisplay: none !important;\n}\n\n/** Do NOT display ReadMore when using plain CompletionItemLabel (details/documentation might not be resolved) **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore {\n\tdisplay: none;\n}\n\n/** Focused item can show ReadMore, but can't when docs is side/below **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {\n\tdisplay: inline-block;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore {\n\tvisibility: visible;\n}\n\n/** Styles for each row in the list **/\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated {\n\topacity: 0.66;\n\ttext-decoration: unset;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container {\n\ttext-decoration: line-through;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label::before {\n\theight: 100%;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon {\n\tdisplay: block;\n\theight: 16px;\n\twidth: 16px;\n\tmargin-left: 2px;\n\tbackground-repeat: no-repeat;\n\tbackground-size: 80%;\n\tbackground-position: center;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide {\n\tdisplay: none;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-right: 4px;\n}\n\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon::before {\n\tdisplay: none;\n}\n\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan {\n\tmargin: 0 0 0 0.3em;\n\tborder: 0.1em solid #000;\n\twidth: 0.7em;\n\theight: 0.7em;\n\tdisplay: inline-block;\n}\n\n/** Styles for the docs of the completion item in focus **/\n\n.monaco-editor .suggest-details-container {\n\tz-index: 41;\n}\n\n.monaco-editor .suggest-details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tcursor: default;\n\tcolor: var(--vscode-editorSuggestWidget-foreground);\n}\n\n.monaco-editor .suggest-details.focused {\n\tborder-color: var(--vscode-focusBorder);\n}\n\n.monaco-editor .suggest-details a {\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-editor .suggest-details a:hover {\n\tcolor: var(--vscode-textLink-activeForeground);\n}\n\n.monaco-editor .suggest-details code {\n\tbackground-color: var(--vscode-textCodeBlock-background);\n}\n\n.monaco-editor .suggest-details.no-docs {\n\tdisplay: none;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element {\n\tflex: 1;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body {\n\tbox-sizing: border-box;\n\theight: 100%;\n\twidth: 100%;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type {\n\tflex: 2;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\topacity: 0.7;\n\twhite-space: pre;\n\tmargin: 0 24px 0 0;\n\tpadding: 4px 0 12px 5px;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap {\n\twhite-space: normal;\n\tword-break: break-all;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs {\n\tmargin: 0;\n\tpadding: 4px 5px;\n\twhite-space: pre-wrap;\n}\n\n.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs {\n\tmargin-right: 24px;\n\toverflow: hidden;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs {\n\tpadding: 0;\n\twhite-space: initial;\n\tmin-height: calc(1rem + 8px);\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty) {\n\tpadding: 4px 5px;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child {\n\tmargin-top: 0;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child {\n\tmargin-bottom: 0;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source {\n\twhite-space: pre;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code {\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon {\n\tvertical-align: sub;\n}\n\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty {\n\tdisplay: none;\n}\n\n.monaco-editor .suggest-details code {\n\tborder-radius: 3px;\n\tpadding: 0 0.4em;\n}\n\n.monaco-editor .suggest-details ul {\n\tpadding-left: 20px;\n}\n\n.monaco-editor .suggest-details ol {\n\tpadding-left: 20px;\n}\n\n.monaco-editor .suggest-details p code {\n\tfont-family: var(--monaco-monospace-font);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/media/suggest.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css": +/*!************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css ***! + \************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .codicon.codicon-symbol-array,\n.monaco-workbench .codicon.codicon-symbol-array { color: var(--vscode-symbolIcon-arrayForeground); }\n.monaco-editor .codicon.codicon-symbol-boolean,\n.monaco-workbench .codicon.codicon-symbol-boolean { color: var(--vscode-symbolIcon-booleanForeground); }\n.monaco-editor .codicon.codicon-symbol-class,\n.monaco-workbench .codicon.codicon-symbol-class { color: var(--vscode-symbolIcon-classForeground); }\n.monaco-editor .codicon.codicon-symbol-method,\n.monaco-workbench .codicon.codicon-symbol-method { color: var(--vscode-symbolIcon-methodForeground); }\n.monaco-editor .codicon.codicon-symbol-color,\n.monaco-workbench .codicon.codicon-symbol-color { color: var(--vscode-symbolIcon-colorForeground); }\n.monaco-editor .codicon.codicon-symbol-constant,\n.monaco-workbench .codicon.codicon-symbol-constant { color: var(--vscode-symbolIcon-constantForeground); }\n.monaco-editor .codicon.codicon-symbol-constructor,\n.monaco-workbench .codicon.codicon-symbol-constructor { color: var(--vscode-symbolIcon-constructorForeground); }\n.monaco-editor .codicon.codicon-symbol-value,\n.monaco-workbench .codicon.codicon-symbol-value,\n.monaco-editor .codicon.codicon-symbol-enum,\n.monaco-workbench .codicon.codicon-symbol-enum { color: var(--vscode-symbolIcon-enumeratorForeground); }\n.monaco-editor .codicon.codicon-symbol-enum-member,\n.monaco-workbench .codicon.codicon-symbol-enum-member { color: var(--vscode-symbolIcon-enumeratorMemberForeground); }\n.monaco-editor .codicon.codicon-symbol-event,\n.monaco-workbench .codicon.codicon-symbol-event { color: var(--vscode-symbolIcon-eventForeground); }\n.monaco-editor .codicon.codicon-symbol-field,\n.monaco-workbench .codicon.codicon-symbol-field { color: var(--vscode-symbolIcon-fieldForeground); }\n.monaco-editor .codicon.codicon-symbol-file,\n.monaco-workbench .codicon.codicon-symbol-file { color: var(--vscode-symbolIcon-fileForeground); }\n.monaco-editor .codicon.codicon-symbol-folder,\n.monaco-workbench .codicon.codicon-symbol-folder { color: var(--vscode-symbolIcon-folderForeground); }\n.monaco-editor .codicon.codicon-symbol-function,\n.monaco-workbench .codicon.codicon-symbol-function { color: var(--vscode-symbolIcon-functionForeground); }\n.monaco-editor .codicon.codicon-symbol-interface,\n.monaco-workbench .codicon.codicon-symbol-interface { color: var(--vscode-symbolIcon-interfaceForeground); }\n.monaco-editor .codicon.codicon-symbol-key,\n.monaco-workbench .codicon.codicon-symbol-key { color: var(--vscode-symbolIcon-keyForeground); }\n.monaco-editor .codicon.codicon-symbol-keyword,\n.monaco-workbench .codicon.codicon-symbol-keyword { color: var(--vscode-symbolIcon-keywordForeground); }\n.monaco-editor .codicon.codicon-symbol-module,\n.monaco-workbench .codicon.codicon-symbol-module { color: var(--vscode-symbolIcon-moduleForeground); }\n.monaco-editor .codicon.codicon-symbol-namespace,\n.monaco-workbench .codicon.codicon-symbol-namespace { color: var(--vscode-symbolIcon-namespaceForeground); }\n.monaco-editor .codicon.codicon-symbol-null,\n.monaco-workbench .codicon.codicon-symbol-null { color: var(--vscode-symbolIcon-nullForeground); }\n.monaco-editor .codicon.codicon-symbol-number,\n.monaco-workbench .codicon.codicon-symbol-number { color: var(--vscode-symbolIcon-numberForeground); }\n.monaco-editor .codicon.codicon-symbol-object,\n.monaco-workbench .codicon.codicon-symbol-object { color: var(--vscode-symbolIcon-objectForeground); }\n.monaco-editor .codicon.codicon-symbol-operator,\n.monaco-workbench .codicon.codicon-symbol-operator { color: var(--vscode-symbolIcon-operatorForeground); }\n.monaco-editor .codicon.codicon-symbol-package,\n.monaco-workbench .codicon.codicon-symbol-package { color: var(--vscode-symbolIcon-packageForeground); }\n.monaco-editor .codicon.codicon-symbol-property,\n.monaco-workbench .codicon.codicon-symbol-property { color: var(--vscode-symbolIcon-propertyForeground); }\n.monaco-editor .codicon.codicon-symbol-reference,\n.monaco-workbench .codicon.codicon-symbol-reference { color: var(--vscode-symbolIcon-referenceForeground); }\n.monaco-editor .codicon.codicon-symbol-snippet,\n.monaco-workbench .codicon.codicon-symbol-snippet { color: var(--vscode-symbolIcon-snippetForeground); }\n.monaco-editor .codicon.codicon-symbol-string,\n.monaco-workbench .codicon.codicon-symbol-string { color: var(--vscode-symbolIcon-stringForeground); }\n.monaco-editor .codicon.codicon-symbol-struct,\n.monaco-workbench .codicon.codicon-symbol-struct { color: var(--vscode-symbolIcon-structForeground); }\n.monaco-editor .codicon.codicon-symbol-text,\n.monaco-workbench .codicon.codicon-symbol-text { color: var(--vscode-symbolIcon-textForeground); }\n.monaco-editor .codicon.codicon-symbol-type-parameter,\n.monaco-workbench .codicon.codicon-symbol-type-parameter { color: var(--vscode-symbolIcon-typeParameterForeground); }\n.monaco-editor .codicon.codicon-symbol-unit,\n.monaco-workbench .codicon.codicon-symbol-unit { color: var(--vscode-symbolIcon-unitForeground); }\n.monaco-editor .codicon.codicon-symbol-variable,\n.monaco-workbench .codicon.codicon-symbol-variable { color: var(--vscode-symbolIcon-variableForeground); }\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.css": +/*!************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.css ***! + \************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.editor-banner {\n\tbox-sizing: border-box;\n\tcursor: default;\n\twidth: 100%;\n\tfont-size: 12px;\n\tdisplay: flex;\n\toverflow: visible;\n\n\theight: 26px;\n\n\tbackground: var(--vscode-banner-background);\n}\n\n\n.editor-banner .icon-container {\n\tdisplay: flex;\n\tflex-shrink: 0;\n\talign-items: center;\n\tpadding: 0 6px 0 10px;\n}\n\n.editor-banner .icon-container.custom-icon {\n\tbackground-repeat: no-repeat;\n\tbackground-position: center center;\n\tbackground-size: 16px;\n\twidth: 16px;\n\tpadding: 0;\n\tmargin: 0 6px 0 10px;\n}\n\n.editor-banner .message-container {\n\tdisplay: flex;\n\talign-items: center;\n\tline-height: 26px;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\toverflow: hidden;\n}\n\n.editor-banner .message-container p {\n\tmargin-block-start: 0;\n\tmargin-block-end: 0;\n}\n\n.editor-banner .message-actions-container {\n\tflex-grow: 1;\n\tflex-shrink: 0;\n\tline-height: 26px;\n\tmargin: 0 4px;\n}\n\n.editor-banner .message-actions-container a.monaco-button {\n\twidth: inherit;\n\tmargin: 2px 8px;\n\tpadding: 0px 12px;\n}\n\n.editor-banner .message-actions-container a {\n\tpadding: 3px;\n\tmargin-left: 12px;\n\ttext-decoration: underline;\n}\n\n.editor-banner .action-container {\n\tpadding: 0 10px 0 6px;\n}\n\n.editor-banner {\n\tbackground-color: var(--vscode-banner-background);\n}\n\n.editor-banner,\n.editor-banner .action-container .codicon,\n.editor-banner .message-actions-container .monaco-link {\n\tcolor: var(--vscode-banner-foreground);\n}\n\n.editor-banner .icon-container .codicon {\n\tcolor: var(--vscode-banner-iconForeground);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.css": +/*!**************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.css ***! + \**************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .unicode-highlight {\n\tborder: 1px solid var(--vscode-editorUnicodeHighlight-border);\n\tbackground-color: var(--vscode-editorUnicodeHighlight-background);\n\tbox-sizing: border-box;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.css": +/*!*************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.css ***! + \*************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .focused .selectionHighlight {\n\tbackground-color: var(--vscode-editor-selectionHighlightBackground);\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-editor-selectionHighlightBorder);\n}\n.monaco-editor.hc-black .focused .selectionHighlight, .monaco-editor.hc-light .focused .selectionHighlight {\n\tborder-style: dotted;\n}\n\n.monaco-editor .wordHighlight {\n\tbackground-color: var(--vscode-editor-wordHighlightBackground);\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-editor-wordHighlightBorder);\n}\n.monaco-editor.hc-black .wordHighlight, .monaco-editor.hc-light .wordHighlight {\n\tborder-style: dotted;\n}\n\n.monaco-editor .wordHighlightStrong {\n\tbackground-color: var(--vscode-editor-wordHighlightStrongBackground);\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-editor-wordHighlightStrongBorder);\n}\n.monaco-editor.hc-black .wordHighlightStrong, .monaco-editor.hc-light .wordHighlightStrong {\n\tborder-style: dotted;\n}\n\n.monaco-editor .wordHighlightText {\n\tbackground-color: var(--vscode-editor-wordHighlightTextBackground);\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--vscode-editor-wordHighlightTextBorder);\n}\n.monaco-editor.hc-black .wordHighlightText, .monaco-editor.hc-light .wordHighlightText {\n\tborder-style: dotted;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/browser/zoneWidget.css": +/*!**********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/browser/zoneWidget.css ***! + \**********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n.monaco-editor .zone-widget {\n\tposition: absolute;\n\tz-index: 10;\n}\n\n\n.monaco-editor .zone-widget .zone-widget-container {\n\tborder-top-style: solid;\n\tborder-bottom-style: solid;\n\tborder-top-width: 0;\n\tborder-bottom-width: 0;\n\tposition: relative;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/browser/zoneWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.css": +/*!*************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.css ***! + \*************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjNDI0MjQyIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg== */ \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjNDI0MjQyIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjQzVDNUM1Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg== */ \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjQzVDNUM1Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .iPadShowKeyboard {\n\twidth: 58px;\n\tmin-width: 0;\n\theight: 36px;\n\tmin-height: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tposition: absolute;\n\tresize: none;\n\toverflow: hidden;\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) center center no-repeat;\n\tborder: 4px solid #F6F6F6;\n\tborder-radius: 4px;\n}\n\n.monaco-editor.vs-dark .iPadShowKeyboard {\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) center center no-repeat;\n\tborder: 4px solid #252526;\n}`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css": +/*!*******************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css ***! + \*******************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .tokens-inspect-widget {\n\tz-index: 50;\n\tuser-select: text;\n\t-webkit-user-select: text;\n\tpadding: 10px;\n\tcolor: var(--vscode-editorHoverWidget-foreground);\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder: 1px solid var(--vscode-editorHoverWidget-border);\n}\n.monaco-editor.hc-black .tokens-inspect-widget, .monaco-editor.hc-light .tokens-inspect-widget {\n\tborder-width: 2px;\n}\n\n.monaco-editor .tokens-inspect-widget .tokens-inspect-separator {\n\theight: 1px;\n\tborder: 0;\n\tbackground-color: var(--vscode-editorHoverWidget-border);\n}\n\n.monaco-editor .tokens-inspect-widget .tm-token {\n\tfont-family: var(--monaco-monospace-font);\n}\n\n.monaco-editor .tokens-inspect-widget .tm-token-length {\n\tfont-weight: normal;\n\tfont-size: 60%;\n\tfloat: right;\n}\n\n.monaco-editor .tokens-inspect-widget .tm-metadata-table {\n\twidth: 100%;\n}\n\n.monaco-editor .tokens-inspect-widget .tm-metadata-value {\n\tfont-family: var(--monaco-monospace-font);\n\ttext-align: right;\n}\n\n.monaco-editor .tokens-inspect-widget .tm-token-type {\n\tfont-family: var(--monaco-monospace-font);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css": +/*!***********************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css ***! + \***********************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.quick-input-widget {\n\tfont-size: 13px;\n}\n\n.quick-input-widget .monaco-highlighted-label .highlight,\n.quick-input-widget .monaco-highlighted-label .highlight {\n\tcolor: #0066BF;\n}\n\n.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight,\n.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight {\n\tcolor: #9DDDFF;\n}\n\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight,\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight {\n\tcolor: #0097fb;\n}\n\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight,\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight {\n\tcolor: #F38518;\n}\n\n.hc-light .quick-input-widget .monaco-highlighted-label .highlight,\n.hc-light .quick-input-widget .monaco-highlighted-label .highlight {\n\tcolor: #0F4A85;\n}\n\n.monaco-keybinding > .monaco-keybinding-key {\n\tbackground-color: rgba(221, 221, 221, 0.4);\n\tborder: solid 1px rgba(204, 204, 204, 0.4);\n\tborder-bottom-color: rgba(187, 187, 187, 0.4);\n\tbox-shadow: inset 0 -1px 0 rgba(187, 187, 187, 0.4);\n\tcolor: #555;\n}\n\n.hc-black .monaco-keybinding > .monaco-keybinding-key {\n\tbackground-color: transparent;\n\tborder: solid 1px rgb(111, 195, 223);\n\tbox-shadow: none;\n\tcolor: #fff;\n}\n\n.hc-light .monaco-keybinding > .monaco-keybinding-key {\n\tbackground-color: transparent;\n\tborder: solid 1px #0F4A85;\n\tbox-shadow: none;\n\tcolor: #292929;\n}\n\n.vs-dark .monaco-keybinding > .monaco-keybinding-key {\n\tbackground-color: rgba(128, 128, 128, 0.17);\n\tborder: solid 1px rgba(51, 51, 51, 0.6);\n\tborder-bottom-color: rgba(68, 68, 68, 0.6);\n\tbox-shadow: inset 0 -1px 0 rgba(68, 68, 68, 0.6);\n\tcolor: #ccc;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css": +/*!*********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css ***! + \*********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n/* Default standalone editor fonts */\n.monaco-editor {\n\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe WPC\", \"Segoe UI\", \"HelveticaNeue-Light\", system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif;\n\t--monaco-monospace-font: \"SF Mono\", Monaco, Menlo, Consolas, \"Ubuntu Mono\", \"Liberation Mono\", \"DejaVu Sans Mono\", \"Courier New\", monospace;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label {\n\tstroke-width: 1.2px;\n}\n\n.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\n.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\n.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\n\tstroke-width: 1.2px;\n}\n\n.monaco-hover p {\n\tmargin: 0;\n}\n\n/* See https://github.com/microsoft/monaco-editor/issues/2168#issuecomment-780078600 */\n.monaco-aria-container {\n\tposition: absolute !important;\n\ttop: 0; /* avoid being placed underneath a sibling element */\n\theight: 1px;\n\twidth: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tclip: rect(1px, 1px, 1px, 1px);\n\tclip-path: inset(50%);\n}\n\n/*.monaco-editor.vs [tabindex=\"0\"]:focus {\n\toutline: 1px solid rgba(0, 122, 204, 0.4);\n\toutline-offset: -1px;\n\topacity: 1 !important;\n}\n\n.monaco-editor.vs-dark [tabindex=\"0\"]:focus {\n\toutline: 1px solid rgba(14, 99, 156, 0.6);\n\toutline-offset: -1px;\n\topacity: 1 !important;\n}*/\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/actionWidget/browser/actionWidget.css": +/*!********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/actionWidget/browser/actionWidget.css ***! + \********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.action-widget {\n\tfont-size: 13px;\n\tborder-radius: 0;\n\tmin-width: 160px;\n\tmax-width: 500px;\n\tz-index: 40;\n\tdisplay: block;\n\twidth: 100%;\n\tborder: 1px solid var(--vscode-editorWidget-border) !important;\n\tbackground-color: var(--vscode-editorWidget-background);\n\tcolor: var(--vscode-editorWidget-foreground);\n}\n\n.context-view-block {\n\tposition: fixed;\n\tcursor: initial;\n\tleft: 0;\n\ttop: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: -1;\n}\n\n.context-view-pointerBlock {\n\tposition: fixed;\n\tcursor: initial;\n\tleft: 0;\n\ttop: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 2;\n}\n\n.action-widget .monaco-list {\n\tuser-select: none;\n\t-webkit-user-select: none;\n\tborder: none !important;\n\tborder-width: 0 !important;\n}\n\n.action-widget .monaco-list:focus:before {\n\toutline: 0 !important;\n}\n\n.action-widget .monaco-list .monaco-scrollable-element {\n\toverflow: visible;\n}\n\n/** Styles for each row in the list element **/\n.action-widget .monaco-list .monaco-list-row {\n\tpadding: 0 10px;\n\twhite-space: nowrap;\n\tcursor: pointer;\n\ttouch-action: none;\n\twidth: 100%;\n}\n\n.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled) {\n\tbackground-color: var(--vscode-quickInputList-focusBackground) !important;\n\tcolor: var(--vscode-quickInputList-focusForeground);\n\toutline: 1px solid var(--vscode-menu-selectionBorder, transparent);\n\toutline-offset: -1px;\n}\n\n.action-widget .monaco-list-row.group-header {\n\tcolor: var(--vscode-pickerGroup-foreground) !important;\n\tfont-weight: 600;\n}\n\n.action-widget .monaco-list .group-header,\n.action-widget .monaco-list .option-disabled,\n.action-widget .monaco-list .option-disabled:before,\n.action-widget .monaco-list .option-disabled .focused,\n.action-widget .monaco-list .option-disabled .focused:before {\n\tcursor: default !important;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tbackground-color: transparent !important;\n\toutline: 0 solid !important;\n}\n\n.action-widget .monaco-list-row.action {\n\tdisplay: flex;\n\tgap: 6px;\n\talign-items: center;\n}\n\n.action-widget .monaco-list-row.action.option-disabled {\n\tcolor: var(--vscode-disabledForeground);\n}\n\n.action-widget .monaco-list-row.action.option-disabled .codicon {\n\topacity: 0.4;\n}\n\n.action-widget .monaco-list-row.action:not(.option-disabled) .codicon {\n\tcolor: inherit;\n}\n\n.action-widget .monaco-list-row.action .title {\n\tflex: 1;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n/* Action bar */\n\n.action-widget .action-widget-action-bar {\n\tbackground-color: var(--vscode-editorHoverWidget-statusBarBackground);\n\tborder-top: 1px solid var(--vscode-editorHoverWidget-border);\n}\n\n.action-widget .action-widget-action-bar::before {\n\tdisplay: block;\n\tcontent: \"\";\n\twidth: 100%;\n}\n\n.action-widget .action-widget-action-bar .actions-container {\n\tpadding: 0 8px;\n}\n\n.action-widget-action-bar .action-label {\n\tcolor: var(--vscode-textLink-activeForeground);\n\tfont-size: 12px;\n\tline-height: 22px;\n\tpadding: 0;\n\tpointer-events: all;\n}\n\n.action-widget-action-bar .action-item {\n\tmargin-right: 16px;\n\tpointer-events: none;\n}\n\n.action-widget-action-bar .action-label:hover {\n\tbackground-color: transparent !important;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/platform/actionWidget/browser/actionWidget.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-action-bar .action-item.menu-entry .action-label.icon {\n\twidth: 16px;\n\theight: 16px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 50%;\n\tbackground-size: 16px;\n}\n\n.monaco-dropdown-with-default {\n\tdisplay: flex !important;\n\tflex-direction: row;\n\tborder-radius: 5px;\n}\n\n.monaco-dropdown-with-default > .action-container > .action-label {\n\tmargin-right: 0;\n}\n\n.monaco-dropdown-with-default > .action-container.menu-entry > .action-label.icon {\n\twidth: 16px;\n\theight: 16px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 50%;\n\tbackground-size: 16px;\n}\n\n.monaco-dropdown-with-default > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*='codicon-'] {\n\tfont-size: 12px;\n\tpadding-left: 0px;\n\tpadding-right: 0px;\n\tline-height: 16px;\n\tmargin-left: -3px;\n}\n\n.monaco-dropdown-with-default > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label {\n\tdisplay: block;\n\tbackground-size: 16px;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/opener/browser/link.css": +/*!******************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/opener/browser/link.css ***! + \******************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-link {\n\tcolor: var(--vscode-textLink-foreground);\n}\n\n.monaco-link:hover {\n\tcolor: var(--vscode-textLink-activeForeground);\n}\n\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/platform/opener/browser/link.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/media/quickInput.css": +/*!**********************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/media/quickInput.css ***! + \**********************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.quick-input-widget {\n\tposition: absolute;\n\twidth: 600px;\n\tz-index: 2550;\n\tleft: 50%;\n\tmargin-left: -300px;\n\t-webkit-app-region: no-drag;\n\tborder-radius: 6px;\n}\n\n.quick-input-titlebar {\n\tdisplay: flex;\n\talign-items: center;\n\tborder-top-left-radius: 5px; /* match border radius of quick input widget */\n\tborder-top-right-radius: 5px;\n}\n\n.quick-input-left-action-bar {\n\tdisplay: flex;\n\tmargin-left: 4px;\n\tflex: 1;\n}\n\n.quick-input-title {\n\tpadding: 3px 0px;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n}\n\n.quick-input-right-action-bar {\n\tdisplay: flex;\n\tmargin-right: 4px;\n\tflex: 1;\n}\n\n.quick-input-right-action-bar > .actions-container {\n\tjustify-content: flex-end;\n}\n\n.quick-input-titlebar .monaco-action-bar .action-label.codicon {\n\tbackground-position: center;\n\tbackground-repeat: no-repeat;\n\tpadding: 2px;\n}\n\n.quick-input-description {\n\tmargin: 6px;\n}\n\n.quick-input-header .quick-input-description {\n\tmargin: 4px 2px;\n}\n\n.quick-input-header {\n\tdisplay: flex;\n\tpadding: 8px 6px 6px 6px;\n}\n\n.quick-input-widget.hidden-input .quick-input-header {\n\t/* reduce margins and paddings when input box hidden */\n\tpadding: 0;\n\tmargin-bottom: 0;\n}\n\n.quick-input-and-message {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmin-width: 0;\n\tposition: relative;\n}\n\n.quick-input-check-all {\n\talign-self: center;\n\tmargin: 0;\n}\n\n.quick-input-filter {\n\tflex-grow: 1;\n\tdisplay: flex;\n\tposition: relative;\n}\n\n.quick-input-box {\n\tflex-grow: 1;\n}\n\n.quick-input-widget.show-checkboxes .quick-input-box,\n.quick-input-widget.show-checkboxes .quick-input-message {\n\tmargin-left: 5px;\n}\n\n.quick-input-visible-count {\n\tposition: absolute;\n\tleft: -10000px;\n}\n\n.quick-input-count {\n\talign-self: center;\n\tposition: absolute;\n\tright: 4px;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.quick-input-count .monaco-count-badge {\n\tvertical-align: middle;\n\tpadding: 2px 4px;\n\tborder-radius: 2px;\n\tmin-height: auto;\n\tline-height: normal;\n}\n\n.quick-input-action {\n\tmargin-left: 6px;\n}\n\n.quick-input-action .monaco-text-button {\n\tfont-size: 11px;\n\tpadding: 0 6px;\n\tdisplay: flex;\n\theight: 25px;\n\talign-items: center;\n}\n\n.quick-input-message {\n\tmargin-top: -1px;\n\tpadding: 5px;\n\toverflow-wrap: break-word;\n}\n\n.quick-input-message > .codicon {\n\tmargin: 0 0.2em;\n\tvertical-align: text-bottom;\n}\n\n/* Links in descriptions & validations */\n.quick-input-message a {\n\tcolor: inherit;\n}\n\n.quick-input-progress.monaco-progress-container {\n\tposition: relative;\n}\n\n.quick-input-progress.monaco-progress-container,\n.quick-input-progress.monaco-progress-container .progress-bit {\n\theight: 2px;\n}\n\n.quick-input-list {\n\tline-height: 22px;\n}\n\n.quick-input-widget.hidden-input .quick-input-list {\n\tmargin-top: 4px; /* reduce margins when input box hidden */\n\tpadding-bottom: 4px;\n}\n\n.quick-input-list .monaco-list {\n\toverflow: hidden;\n\tmax-height: calc(20 * 22px);\n\tpadding-bottom: 5px;\n}\n\n.quick-input-list .monaco-scrollable-element {\n\tpadding: 0px 5px;\n}\n\n.quick-input-list .quick-input-list-entry {\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\tdisplay: flex;\n\theight: 100%;\n\tpadding: 0 6px;\n}\n\n.quick-input-list .quick-input-list-entry.quick-input-list-separator-border {\n\tborder-top-width: 1px;\n\tborder-top-style: solid;\n}\n\n.quick-input-list .monaco-list-row {\n\tborder-radius: 3px;\n}\n\n.quick-input-list .monaco-list-row[data-index=\"0\"] .quick-input-list-entry.quick-input-list-separator-border {\n\tborder-top-style: none;\n}\n\n.quick-input-list .quick-input-list-label {\n\toverflow: hidden;\n\tdisplay: flex;\n\theight: 100%;\n\tflex: 1;\n}\n\n.quick-input-list .quick-input-list-checkbox {\n\talign-self: center;\n\tmargin: 0;\n}\n\n.quick-input-list .quick-input-list-icon {\n\tbackground-size: 16px;\n\tbackground-position: left center;\n\tbackground-repeat: no-repeat;\n\tpadding-right: 6px;\n\twidth: 16px;\n\theight: 22px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.quick-input-list .quick-input-list-rows {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\tflex: 1;\n\tmargin-left: 5px;\n}\n\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows {\n\tmargin-left: 10px;\n}\n\n.quick-input-widget .quick-input-list .quick-input-list-checkbox {\n\tdisplay: none;\n}\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox {\n\tdisplay: inline;\n}\n\n.quick-input-list .quick-input-list-rows > .quick-input-list-row {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label,\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label .monaco-icon-label-container > .monaco-icon-name-container {\n\tflex: 1; /* make sure the icon label grows within the row */\n}\n\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .codicon[class*='codicon-'] {\n\tvertical-align: text-bottom;\n}\n\n.quick-input-list .quick-input-list-rows .monaco-highlighted-label > span {\n\topacity: 1;\n}\n\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding {\n\tmargin-right: 8px; /* separate from the separator label or scrollbar if any */\n}\n\n.quick-input-list .quick-input-list-label-meta {\n\topacity: 0.7;\n\tline-height: normal;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n}\n\n.quick-input-list .monaco-highlighted-label .highlight {\n\tfont-weight: bold;\n}\n\n.quick-input-list .quick-input-list-entry .quick-input-list-separator {\n\tmargin-right: 4px; /* separate from keybindings or actions */\n}\n\n.quick-input-list .quick-input-list-entry-action-bar {\n\tdisplay: flex;\n\tflex: 0;\n\toverflow: visible;\n}\n\n.quick-input-list .quick-input-list-entry-action-bar .action-label {\n\t/*\n\t * By default, actions in the quick input action bar are hidden\n\t * until hovered over them or selected.\n\t */\n\tdisplay: none;\n}\n\n.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon {\n\tmargin-right: 4px;\n\tpadding: 0px 2px 2px 2px;\n}\n\n.quick-input-list .quick-input-list-entry-action-bar {\n\tmargin-top: 1px;\n}\n\n.quick-input-list .quick-input-list-entry-action-bar {\n\tmargin-right: 4px; /* separate from scrollbar */\n}\n\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,\n.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label,\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label {\n\tdisplay: flex;\n}\n\n/* focused items in quick pick */\n.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator {\n\tcolor: inherit\n}\n.quick-input-list .monaco-list-row.focused .monaco-keybinding-key {\n\tbackground: none;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/media/quickInput.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/severityIcon/browser/media/severityIcon.css": +/*!**************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/monaco-editor/esm/vs/platform/severityIcon/browser/media/severityIcon.css ***! + \**************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .zone-widget .codicon.codicon-error,\n.markers-panel .marker-icon.error, .markers-panel .marker-icon .codicon.codicon-error,\n.text-search-provider-messages .providerMessage .codicon.codicon-error,\n.extensions-viewlet > .extensions .codicon.codicon-error,\n.extension-editor .codicon.codicon-error,\n.preferences-editor .codicon.codicon-error {\n\tcolor: var(--vscode-problemsErrorIcon-foreground);\n}\n\n.monaco-editor .zone-widget .codicon.codicon-warning,\n.markers-panel .marker-icon.warning, .markers-panel .marker-icon .codicon.codicon-warning,\n.text-search-provider-messages .providerMessage .codicon.codicon-warning,\n.extensions-viewlet > .extensions .codicon.codicon-warning,\n.extension-editor .codicon.codicon-warning,\n.preferences-editor .codicon.codicon-warning {\n\tcolor: var(--vscode-problemsWarningIcon-foreground);\n}\n\n.monaco-editor .zone-widget .codicon.codicon-info,\n.markers-panel .marker-icon.info, .markers-panel .marker-icon .codicon.codicon-info,\n.text-search-provider-messages .providerMessage .codicon.codicon-info,\n.extensions-viewlet > .extensions .codicon.codicon-info,\n.extension-editor .codicon.codicon-info,\n.preferences-editor .codicon.codicon-info {\n\tcolor: var(--vscode-problemsInfoIcon-foreground);\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/platform/severityIcon/browser/media/severityIcon.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/api.js": +/*!*****************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/api.js ***! + \*****************************************************/ +/***/ ((module) => { + +"use strict"; +eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/css-loader/dist/runtime/api.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/getUrl.js": +/*!********************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***! + \********************************************************/ +/***/ ((module) => { + +"use strict"; +eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/css-loader/dist/runtime/getUrl.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js": +/*!**************************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***! + \**************************************************************/ +/***/ ((module) => { + +"use strict"; +eval("\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/css-loader/dist/runtime/noSourceMaps.js?"); + +/***/ }), + +/***/ "./node_modules/des.js/lib/des.js": +/*!****************************************!*\ + !*** ./node_modules/des.js/lib/des.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nexports.utils = __webpack_require__(/*! ./des/utils */ \"./node_modules/des.js/lib/des/utils.js\");\nexports.Cipher = __webpack_require__(/*! ./des/cipher */ \"./node_modules/des.js/lib/des/cipher.js\");\nexports.DES = __webpack_require__(/*! ./des/des */ \"./node_modules/des.js/lib/des/des.js\");\nexports.CBC = __webpack_require__(/*! ./des/cbc */ \"./node_modules/des.js/lib/des/cbc.js\");\nexports.EDE = __webpack_require__(/*! ./des/ede */ \"./node_modules/des.js/lib/des/ede.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/des.js/lib/des.js?"); + +/***/ }), + +/***/ "./node_modules/des.js/lib/des/cbc.js": +/*!********************************************!*\ + !*** ./node_modules/des.js/lib/des/cbc.js ***! + \********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/des.js/lib/des/cbc.js?"); + +/***/ }), + +/***/ "./node_modules/des.js/lib/des/cipher.js": +/*!***********************************************!*\ + !*** ./node_modules/des.js/lib/des/cipher.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/des.js/lib/des/cipher.js?"); + +/***/ }), + +/***/ "./node_modules/des.js/lib/des/des.js": +/*!********************************************!*\ + !*** ./node_modules/des.js/lib/des/des.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/des.js/lib/des/utils.js\");\nvar Cipher = __webpack_require__(/*! ./cipher */ \"./node_modules/des.js/lib/des/cipher.js\");\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/des.js/lib/des/des.js?"); + +/***/ }), + +/***/ "./node_modules/des.js/lib/des/ede.js": +/*!********************************************!*\ + !*** ./node_modules/des.js/lib/des/ede.js ***! + \********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nvar Cipher = __webpack_require__(/*! ./cipher */ \"./node_modules/des.js/lib/des/cipher.js\");\nvar DES = __webpack_require__(/*! ./des */ \"./node_modules/des.js/lib/des/des.js\");\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/des.js/lib/des/ede.js?"); + +/***/ }), + +/***/ "./node_modules/des.js/lib/des/utils.js": +/*!**********************************************!*\ + !*** ./node_modules/des.js/lib/des/utils.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/des.js/lib/des/utils.js?"); + +/***/ }), + +/***/ "./node_modules/diffie-hellman/browser.js": +/*!************************************************!*\ + !*** ./node_modules/diffie-hellman/browser.js ***! + \************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var generatePrime = __webpack_require__(/*! ./lib/generatePrime */ \"./node_modules/diffie-hellman/lib/generatePrime.js\")\nvar primes = __webpack_require__(/*! ./lib/primes.json */ \"./node_modules/diffie-hellman/lib/primes.json\")\n\nvar DH = __webpack_require__(/*! ./lib/dh */ \"./node_modules/diffie-hellman/lib/dh.js\")\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/diffie-hellman/browser.js?"); + +/***/ }), + +/***/ "./node_modules/diffie-hellman/lib/dh.js": +/*!***********************************************!*\ + !*** ./node_modules/diffie-hellman/lib/dh.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var BN = __webpack_require__(/*! bn.js */ \"./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js\");\nvar MillerRabin = __webpack_require__(/*! miller-rabin */ \"./node_modules/miller-rabin/lib/mr.js\");\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = __webpack_require__(/*! ./generatePrime */ \"./node_modules/diffie-hellman/lib/generatePrime.js\");\nvar randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/diffie-hellman/lib/dh.js?"); + +/***/ }), + +/***/ "./node_modules/diffie-hellman/lib/generatePrime.js": +/*!**********************************************************!*\ + !*** ./node_modules/diffie-hellman/lib/generatePrime.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var randomBytes = __webpack_require__(/*! randombytes */ \"./node_modules/randombytes/browser.js\");\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js\");\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = __webpack_require__(/*! miller-rabin */ \"./node_modules/miller-rabin/lib/mr.js\");\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/diffie-hellman/lib/generatePrime.js?"); + +/***/ }), + +/***/ "./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js": +/*!******************************************************************!*\ + !*** ./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js ***! + \******************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = (__webpack_require__(/*! buffer */ \"?e7e4\").Buffer);\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic.js": +/*!***********************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic.js ***! + \***********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar elliptic = exports;\n\nelliptic.version = (__webpack_require__(/*! ../package.json */ \"./node_modules/elliptic/package.json\").version);\nelliptic.utils = __webpack_require__(/*! ./elliptic/utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nelliptic.rand = __webpack_require__(/*! brorand */ \"./node_modules/brorand/index.js\");\nelliptic.curve = __webpack_require__(/*! ./elliptic/curve */ \"./node_modules/elliptic/lib/elliptic/curve/index.js\");\nelliptic.curves = __webpack_require__(/*! ./elliptic/curves */ \"./node_modules/elliptic/lib/elliptic/curves.js\");\n\n// Protocols\nelliptic.ec = __webpack_require__(/*! ./elliptic/ec */ \"./node_modules/elliptic/lib/elliptic/ec/index.js\");\nelliptic.eddsa = __webpack_require__(/*! ./elliptic/eddsa */ \"./node_modules/elliptic/lib/elliptic/eddsa/index.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/curve/base.js": +/*!**********************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/curve/base.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/curve/base.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/curve/edwards.js": +/*!*************************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/curve/edwards.js ***! + \*************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/curve/edwards.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/curve/index.js": +/*!***********************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/curve/index.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar curve = exports;\n\ncurve.base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\ncurve.short = __webpack_require__(/*! ./short */ \"./node_modules/elliptic/lib/elliptic/curve/short.js\");\ncurve.mont = __webpack_require__(/*! ./mont */ \"./node_modules/elliptic/lib/elliptic/curve/mont.js\");\ncurve.edwards = __webpack_require__(/*! ./edwards */ \"./node_modules/elliptic/lib/elliptic/curve/edwards.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/curve/index.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/curve/mont.js": +/*!**********************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/curve/mont.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/curve/mont.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/curve/short.js": +/*!***********************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/curve/short.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\nvar Base = __webpack_require__(/*! ./base */ \"./node_modules/elliptic/lib/elliptic/curve/base.js\");\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/curve/short.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/curves.js": +/*!******************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/curves.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar curves = exports;\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/hash.js/lib/hash.js\");\nvar curve = __webpack_require__(/*! ./curve */ \"./node_modules/elliptic/lib/elliptic/curve/index.js\");\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = __webpack_require__(/*! ./precomputed/secp256k1 */ \"./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js\");\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/curves.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/ec/index.js": +/*!********************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/ec/index.js ***! + \********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar HmacDRBG = __webpack_require__(/*! hmac-drbg */ \"./node_modules/hmac-drbg/lib/hmac-drbg.js\");\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar curves = __webpack_require__(/*! ../curves */ \"./node_modules/elliptic/lib/elliptic/curves.js\");\nvar rand = __webpack_require__(/*! brorand */ \"./node_modules/brorand/index.js\");\nvar assert = utils.assert;\n\nvar KeyPair = __webpack_require__(/*! ./key */ \"./node_modules/elliptic/lib/elliptic/ec/key.js\");\nvar Signature = __webpack_require__(/*! ./signature */ \"./node_modules/elliptic/lib/elliptic/ec/signature.js\");\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/ec/index.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/ec/key.js": +/*!******************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/ec/key.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/ec/key.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/ec/signature.js": +/*!************************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/ec/signature.js ***! + \************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/ec/signature.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/eddsa/index.js": +/*!***********************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/eddsa/index.js ***! + \***********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/hash.js/lib/hash.js\");\nvar curves = __webpack_require__(/*! ../curves */ \"./node_modules/elliptic/lib/elliptic/curves.js\");\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = __webpack_require__(/*! ./key */ \"./node_modules/elliptic/lib/elliptic/eddsa/key.js\");\nvar Signature = __webpack_require__(/*! ./signature */ \"./node_modules/elliptic/lib/elliptic/eddsa/signature.js\");\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/eddsa/index.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/eddsa/key.js": +/*!*********************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/eddsa/key.js ***! + \*********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/eddsa/key.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/eddsa/signature.js": +/*!***************************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/eddsa/signature.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/elliptic/lib/elliptic/utils.js\");\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/eddsa/signature.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js": +/*!*********************************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js ***! + \*********************************************************************/ +/***/ ((module) => { + +eval("module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/lib/elliptic/utils.js": +/*!*****************************************************!*\ + !*** ./node_modules/elliptic/lib/elliptic/utils.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = exports;\nvar BN = __webpack_require__(/*! bn.js */ \"./node_modules/elliptic/node_modules/bn.js/lib/bn.js\");\nvar minAssert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\nvar minUtils = __webpack_require__(/*! minimalistic-crypto-utils */ \"./node_modules/minimalistic-crypto-utils/lib/utils.js\");\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/lib/elliptic/utils.js?"); + +/***/ }), + +/***/ "./node_modules/elliptic/node_modules/bn.js/lib/bn.js": +/*!************************************************************!*\ + !*** ./node_modules/elliptic/node_modules/bn.js/lib/bn.js ***! + \************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = (__webpack_require__(/*! buffer */ \"?7bec\").Buffer);\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/elliptic/node_modules/bn.js/lib/bn.js?"); + +/***/ }), + +/***/ "./node_modules/events/events.js": +/*!***************************************!*\ + !*** ./node_modules/events/events.js ***! + \***************************************/ +/***/ ((module) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/events/events.js?"); + +/***/ }), + +/***/ "./node_modules/evp_bytestokey/index.js": +/*!**********************************************!*\ + !*** ./node_modules/evp_bytestokey/index.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar MD5 = __webpack_require__(/*! md5.js */ \"./node_modules/md5.js/index.js\")\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/evp_bytestokey/index.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/fxp.js": +/*!*************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/fxp.js ***! + \*************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst validator = __webpack_require__(/*! ./validator */ \"./node_modules/fast-xml-parser/src/validator.js\");\nconst XMLParser = __webpack_require__(/*! ./xmlparser/XMLParser */ \"./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js\");\nconst XMLBuilder = __webpack_require__(/*! ./xmlbuilder/json2xml */ \"./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js\");\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/fxp.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/util.js": +/*!**************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/util.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/util.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/validator.js": +/*!*******************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/validator.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/fast-xml-parser/src/util.js\");\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/validator.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js": +/*!*****************************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = __webpack_require__(/*! ./orderedJs2Xml */ \"./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js\");\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup ){\n listTagVal += this.j2x(item, level + 1).val;\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, '', level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i { + +eval("const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js": +/*!*********************************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js ***! + \*********************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("const util = __webpack_require__(/*! ../util */ \"./node_modules/fast-xml-parser/src/util.js\");\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js": +/*!**********************************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +eval("\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js": +/*!************************************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js ***! + \************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n///@ts-check\n\nconst util = __webpack_require__(/*! ../util */ \"./node_modules/fast-xml-parser/src/util.js\");\nconst xmlNode = __webpack_require__(/*! ./xmlNode */ \"./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js\");\nconst readDocType = __webpack_require__(/*! ./DocTypeReader */ \"./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js\");\nconst toNumber = __webpack_require__(/*! strnum */ \"./node_modules/strnum/strnum.js\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n // if(!val) val = \"\";\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n if(val == undefined) val = \"\";\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${tagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js": +/*!*****************************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("const { buildOptions} = __webpack_require__(/*! ./OptionsBuilder */ \"./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js\");\nconst OrderedObjParser = __webpack_require__(/*! ./OrderedObjParser */ \"./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js\");\nconst { prettify} = __webpack_require__(/*! ./node2json */ \"./node_modules/fast-xml-parser/src/xmlparser/node2json.js\");\nconst validator = __webpack_require__(/*! ../validator */ \"./node_modules/fast-xml-parser/src/validator.js\");\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/xmlparser/node2json.js": +/*!*****************************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/xmlparser/node2json.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/xmlparser/node2json.js?"); + +/***/ }), + +/***/ "./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js": +/*!***************************************************************!*\ + !*** ./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js ***! + \***************************************************************/ +/***/ ((module) => { + +"use strict"; +eval("\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js?"); + +/***/ }), + +/***/ "./public/img/favicon-16x16.png": +/*!**************************************!*\ + !*** ./public/img/favicon-16x16.png ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"favicon-16x16.png\");\n\n//# sourceURL=webpack://abaplint-playground/./public/img/favicon-16x16.png?"); + +/***/ }), + +/***/ "./public/img/favicon-32x32.png": +/*!**************************************!*\ + !*** ./public/img/favicon-32x32.png ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"favicon-32x32.png\");\n\n//# sourceURL=webpack://abaplint-playground/./public/img/favicon-32x32.png?"); + +/***/ }), + +/***/ "./node_modules/hash-base/index.js": +/*!*****************************************!*\ + !*** ./node_modules/hash-base/index.js ***! + \*****************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/hash-base/node_modules/safe-buffer/index.js\").Buffer)\nvar Transform = (__webpack_require__(/*! readable-stream */ \"./node_modules/hash-base/node_modules/readable-stream/readable-browser.js\").Transform)\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/index.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/errors-browser.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/errors-browser.js ***! + \*******************************************************************************/ +/***/ ((module) => { + +"use strict"; +eval("\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/errors-browser.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js ***! + \***********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js\");\n\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js ***! + \****************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js ***! + \*************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = (__webpack_require__(/*! events */ \"./node_modules/events/events.js\").EventEmitter);\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\n\nvar OurUint8Array = __webpack_require__.g.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = __webpack_require__(/*! util */ \"?1e44\");\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js\");\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js\");\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(/*! ./internal/streams/from */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js\");\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js ***! + \**************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\nmodule.exports = Transform;\n\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js ***! + \*************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/util-deprecate/browser.js\")\n};\n/**/\n\n/**/\n\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\n\nvar OurUint8Array = __webpack_require__.g.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js\");\n\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\"); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\"),\n Buffer = _require.Buffer;\n\nvar _require2 = __webpack_require__(/*! util */ \"?802b\"),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js ***! + \*********************************************************************************************/ +/***/ ((module) => { + +"use strict"; +eval(" // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js ***! + \***************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes.ERR_STREAM_PREMATURE_CLOSE);\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js": +/*!**************************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js ***! + \**************************************************************************************************/ +/***/ ((module) => { + +eval("module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = (__webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js ***! + \*******************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar ERR_INVALID_OPT_VALUE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes.ERR_INVALID_OPT_VALUE);\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js": +/*!****************************************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js ***! + \****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("module.exports = __webpack_require__(/*! events */ \"./node_modules/events/events.js\").EventEmitter;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/readable-stream/readable-browser.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/readable-stream/readable-browser.js ***! + \*********************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js\");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js\");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js\");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js\");\nexports.finished = __webpack_require__(/*! ./lib/internal/streams/end-of-stream.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\nexports.pipeline = __webpack_require__(/*! ./lib/internal/streams/pipeline.js */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/readable-stream/readable-browser.js?"); + +/***/ }), + +/***/ "./node_modules/hash-base/node_modules/safe-buffer/index.js": +/*!******************************************************************!*\ + !*** ./node_modules/hash-base/node_modules/safe-buffer/index.js ***! + \******************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash-base/node_modules/safe-buffer/index.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash.js": +/*!******************************************!*\ + !*** ./node_modules/hash.js/lib/hash.js ***! + \******************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +eval("var hash = exports;\n\nhash.utils = __webpack_require__(/*! ./hash/utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nhash.common = __webpack_require__(/*! ./hash/common */ \"./node_modules/hash.js/lib/hash/common.js\");\nhash.sha = __webpack_require__(/*! ./hash/sha */ \"./node_modules/hash.js/lib/hash/sha.js\");\nhash.ripemd = __webpack_require__(/*! ./hash/ripemd */ \"./node_modules/hash.js/lib/hash/ripemd.js\");\nhash.hmac = __webpack_require__(/*! ./hash/hmac */ \"./node_modules/hash.js/lib/hash/hmac.js\");\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/common.js": +/*!*************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/common.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/common.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/hmac.js": +/*!***********************************************!*\ + !*** ./node_modules/hash.js/lib/hash/hmac.js ***! + \***********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/hmac.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/ripemd.js": +/*!*************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/ripemd.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar common = __webpack_require__(/*! ./common */ \"./node_modules/hash.js/lib/hash/common.js\");\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/ripemd.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/sha.js": +/*!**********************************************!*\ + !*** ./node_modules/hash.js/lib/hash/sha.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nexports.sha1 = __webpack_require__(/*! ./sha/1 */ \"./node_modules/hash.js/lib/hash/sha/1.js\");\nexports.sha224 = __webpack_require__(/*! ./sha/224 */ \"./node_modules/hash.js/lib/hash/sha/224.js\");\nexports.sha256 = __webpack_require__(/*! ./sha/256 */ \"./node_modules/hash.js/lib/hash/sha/256.js\");\nexports.sha384 = __webpack_require__(/*! ./sha/384 */ \"./node_modules/hash.js/lib/hash/sha/384.js\");\nexports.sha512 = __webpack_require__(/*! ./sha/512 */ \"./node_modules/hash.js/lib/hash/sha/512.js\");\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/sha.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/sha/1.js": +/*!************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/sha/1.js ***! + \************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/hash.js/lib/hash/common.js\");\nvar shaCommon = __webpack_require__(/*! ./common */ \"./node_modules/hash.js/lib/hash/sha/common.js\");\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/sha/1.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/sha/224.js": +/*!**************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/sha/224.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar SHA256 = __webpack_require__(/*! ./256 */ \"./node_modules/hash.js/lib/hash/sha/256.js\");\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/sha/224.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/sha/256.js": +/*!**************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/sha/256.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/hash.js/lib/hash/common.js\");\nvar shaCommon = __webpack_require__(/*! ./common */ \"./node_modules/hash.js/lib/hash/sha/common.js\");\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/sha/256.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/sha/384.js": +/*!**************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/sha/384.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\n\nvar SHA512 = __webpack_require__(/*! ./512 */ \"./node_modules/hash.js/lib/hash/sha/512.js\");\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/sha/384.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/sha/512.js": +/*!**************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/sha/512.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar common = __webpack_require__(/*! ../common */ \"./node_modules/hash.js/lib/hash/common.js\");\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/sha/512.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/sha/common.js": +/*!*****************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/sha/common.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/hash.js/lib/hash/utils.js\");\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/sha/common.js?"); + +/***/ }), + +/***/ "./node_modules/hash.js/lib/hash/utils.js": +/*!************************************************!*\ + !*** ./node_modules/hash.js/lib/hash/utils.js ***! + \************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hash.js/lib/hash/utils.js?"); + +/***/ }), + +/***/ "./node_modules/hmac-drbg/lib/hmac-drbg.js": +/*!*************************************************!*\ + !*** ./node_modules/hmac-drbg/lib/hmac-drbg.js ***! + \*************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nvar hash = __webpack_require__(/*! hash.js */ \"./node_modules/hash.js/lib/hash.js\");\nvar utils = __webpack_require__(/*! minimalistic-crypto-utils */ \"./node_modules/minimalistic-crypto-utils/lib/utils.js\");\nvar assert = __webpack_require__(/*! minimalistic-assert */ \"./node_modules/minimalistic-assert/index.js\");\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/hmac-drbg/lib/hmac-drbg.js?"); + +/***/ }), + +/***/ "./node_modules/ieee754/index.js": +/*!***************************************!*\ + !*** ./node_modules/ieee754/index.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, exports) => { + +eval("/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/ieee754/index.js?"); + +/***/ }), + +/***/ "./node_modules/inherits/inherits_browser.js": +/*!***************************************************!*\ + !*** ./node_modules/inherits/inherits_browser.js ***! + \***************************************************/ +/***/ ((module) => { + +eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/inherits/inherits_browser.js?"); + +/***/ }), + +/***/ "./node_modules/json5/dist/index.js": +/*!******************************************!*\ + !*** ./node_modules/json5/dist/index.js ***! + \******************************************/ +/***/ (function(module) { + +eval("(function (global, factory) {\n\t true ? module.exports = factory() :\n\t0;\n}(this, (function () { 'use strict';\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar _global = createCommonjsModule(function (module) {\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef\n\t});\n\n\tvar _core = createCommonjsModule(function (module) {\n\tvar core = module.exports = { version: '2.6.5' };\n\tif (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef\n\t});\n\tvar _core_1 = _core.version;\n\n\tvar _isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\tvar _anObject = function (it) {\n\t if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }\n\t return it;\n\t};\n\n\tvar _fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar _descriptors = !_fails(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\tvar document = _global.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = _isObject(document) && _isObject(document.createElement);\n\tvar _domCreate = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\tvar _ie8DomDefine = !_descriptors && !_fails(function () {\n\t return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar _toPrimitive = function (it, S) {\n\t if (!_isObject(it)) { return it; }\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar dP = Object.defineProperty;\n\n\tvar f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t _anObject(O);\n\t P = _toPrimitive(P, true);\n\t _anObject(Attributes);\n\t if (_ie8DomDefine) { try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ } }\n\t if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }\n\t if ('value' in Attributes) { O[P] = Attributes.value; }\n\t return O;\n\t};\n\n\tvar _objectDp = {\n\t\tf: f\n\t};\n\n\tvar _propertyDesc = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar _hide = _descriptors ? function (object, key, value) {\n\t return _objectDp.f(object, key, _propertyDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tvar _has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tvar _uid = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\tvar _library = false;\n\n\tvar _shared = createCommonjsModule(function (module) {\n\tvar SHARED = '__core-js_shared__';\n\tvar store = _global[SHARED] || (_global[SHARED] = {});\n\n\t(module.exports = function (key, value) {\n\t return store[key] || (store[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: _core.version,\n\t mode: _library ? 'pure' : 'global',\n\t copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar _functionToString = _shared('native-function-to-string', Function.toString);\n\n\tvar _redefine = createCommonjsModule(function (module) {\n\tvar SRC = _uid('src');\n\n\tvar TO_STRING = 'toString';\n\tvar TPL = ('' + _functionToString).split(TO_STRING);\n\n\t_core.inspectSource = function (it) {\n\t return _functionToString.call(it);\n\t};\n\n\t(module.exports = function (O, key, val, safe) {\n\t var isFunction = typeof val == 'function';\n\t if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }\n\t if (O[key] === val) { return; }\n\t if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }\n\t if (O === _global) {\n\t O[key] = val;\n\t } else if (!safe) {\n\t delete O[key];\n\t _hide(O, key, val);\n\t } else if (O[key]) {\n\t O[key] = val;\n\t } else {\n\t _hide(O, key, val);\n\t }\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, TO_STRING, function toString() {\n\t return typeof this == 'function' && this[SRC] || _functionToString.call(this);\n\t});\n\t});\n\n\tvar _aFunction = function (it) {\n\t if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }\n\t return it;\n\t};\n\n\t// optional / simple context binding\n\n\tvar _ctx = function (fn, that, length) {\n\t _aFunction(fn);\n\t if (that === undefined) { return fn; }\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar PROTOTYPE = 'prototype';\n\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\n\t var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\n\t var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n\t var key, own, out, exp;\n\t if (IS_GLOBAL) { source = name; }\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t // export native or passed\n\t out = (own ? target : source)[key];\n\t // bind timers to global for call from export context\n\t exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\n\t // extend global\n\t if (target) { _redefine(target, key, out, type & $export.U); }\n\t // export\n\t if (exports[key] != out) { _hide(exports, key, exp); }\n\t if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }\n\t }\n\t};\n\t_global.core = _core;\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tvar _export = $export;\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tvar _toInteger = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tvar _defined = function (it) {\n\t if (it == undefined) { throw TypeError(\"Can't call method on \" + it); }\n\t return it;\n\t};\n\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tvar _stringAt = function (TO_STRING) {\n\t return function (that, pos) {\n\t var s = String(_defined(that));\n\t var i = _toInteger(pos);\n\t var l = s.length;\n\t var a, b;\n\t if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n\tvar $at = _stringAt(false);\n\t_export(_export.P, 'String', {\n\t // 21.1.3.3 String.prototype.codePointAt(pos)\n\t codePointAt: function codePointAt(pos) {\n\t return $at(this, pos);\n\t }\n\t});\n\n\tvar codePointAt = _core.String.codePointAt;\n\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar _toAbsoluteIndex = function (index, length) {\n\t index = _toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\tvar fromCharCode = String.fromCharCode;\n\tvar $fromCodePoint = String.fromCodePoint;\n\n\t// length should be 1, old FF problem\n\t_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n\t // 21.1.2.2 String.fromCodePoint(...codePoints)\n\t fromCodePoint: function fromCodePoint(x) {\n\t var arguments$1 = arguments;\n\t // eslint-disable-line no-unused-vars\n\t var res = [];\n\t var aLen = arguments.length;\n\t var i = 0;\n\t var code;\n\t while (aLen > i) {\n\t code = +arguments$1[i++];\n\t if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }\n\t res.push(code < 0x10000\n\t ? fromCharCode(code)\n\t : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n\t );\n\t } return res.join('');\n\t }\n\t});\n\n\tvar fromCodePoint = _core.String.fromCodePoint;\n\n\t// This is a generated file. Do not edit.\n\tvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\n\tvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n\tvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\n\tvar unicode = {\n\t\tSpace_Separator: Space_Separator,\n\t\tID_Start: ID_Start,\n\t\tID_Continue: ID_Continue\n\t};\n\n\tvar util = {\n\t isSpaceSeparator: function isSpaceSeparator (c) {\n\t return typeof c === 'string' && unicode.Space_Separator.test(c)\n\t },\n\n\t isIdStartChar: function isIdStartChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c === '$') || (c === '_') ||\n\t unicode.ID_Start.test(c)\n\t )\n\t },\n\n\t isIdContinueChar: function isIdContinueChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c >= '0' && c <= '9') ||\n\t (c === '$') || (c === '_') ||\n\t (c === '\\u200C') || (c === '\\u200D') ||\n\t unicode.ID_Continue.test(c)\n\t )\n\t },\n\n\t isDigit: function isDigit (c) {\n\t return typeof c === 'string' && /[0-9]/.test(c)\n\t },\n\n\t isHexDigit: function isHexDigit (c) {\n\t return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n\t },\n\t};\n\n\tvar source;\n\tvar parseState;\n\tvar stack;\n\tvar pos;\n\tvar line;\n\tvar column;\n\tvar token;\n\tvar key;\n\tvar root;\n\n\tvar parse = function parse (text, reviver) {\n\t source = String(text);\n\t parseState = 'start';\n\t stack = [];\n\t pos = 0;\n\t line = 1;\n\t column = 0;\n\t token = undefined;\n\t key = undefined;\n\t root = undefined;\n\n\t do {\n\t token = lex();\n\n\t // This code is unreachable.\n\t // if (!parseStates[parseState]) {\n\t // throw invalidParseState()\n\t // }\n\n\t parseStates[parseState]();\n\t } while (token.type !== 'eof')\n\n\t if (typeof reviver === 'function') {\n\t return internalize({'': root}, '', reviver)\n\t }\n\n\t return root\n\t};\n\n\tfunction internalize (holder, name, reviver) {\n\t var value = holder[name];\n\t if (value != null && typeof value === 'object') {\n\t if (Array.isArray(value)) {\n\t for (var i = 0; i < value.length; i++) {\n\t var key = String(i);\n\t var replacement = internalize(value, key, reviver);\n\t if (replacement === undefined) {\n\t delete value[key];\n\t } else {\n\t Object.defineProperty(value, key, {\n\t value: replacement,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t } else {\n\t for (var key$1 in value) {\n\t var replacement$1 = internalize(value, key$1, reviver);\n\t if (replacement$1 === undefined) {\n\t delete value[key$1];\n\t } else {\n\t Object.defineProperty(value, key$1, {\n\t value: replacement$1,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t }\n\t }\n\n\t return reviver.call(holder, name, value)\n\t}\n\n\tvar lexState;\n\tvar buffer;\n\tvar doubleQuote;\n\tvar sign;\n\tvar c;\n\n\tfunction lex () {\n\t lexState = 'default';\n\t buffer = '';\n\t doubleQuote = false;\n\t sign = 1;\n\n\t for (;;) {\n\t c = peek();\n\n\t // This code is unreachable.\n\t // if (!lexStates[lexState]) {\n\t // throw invalidLexState(lexState)\n\t // }\n\n\t var token = lexStates[lexState]();\n\t if (token) {\n\t return token\n\t }\n\t }\n\t}\n\n\tfunction peek () {\n\t if (source[pos]) {\n\t return String.fromCodePoint(source.codePointAt(pos))\n\t }\n\t}\n\n\tfunction read () {\n\t var c = peek();\n\n\t if (c === '\\n') {\n\t line++;\n\t column = 0;\n\t } else if (c) {\n\t column += c.length;\n\t } else {\n\t column++;\n\t }\n\n\t if (c) {\n\t pos += c.length;\n\t }\n\n\t return c\n\t}\n\n\tvar lexStates = {\n\t default: function default$1 () {\n\t switch (c) {\n\t case '\\t':\n\t case '\\v':\n\t case '\\f':\n\t case ' ':\n\t case '\\u00A0':\n\t case '\\uFEFF':\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'comment';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t if (util.isSpaceSeparator(c)) {\n\t read();\n\t return\n\t }\n\n\t // This code is unreachable.\n\t // if (!lexStates[parseState]) {\n\t // throw invalidLexState(parseState)\n\t // }\n\n\t return lexStates[parseState]()\n\t },\n\n\t comment: function comment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineComment';\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'singleLineComment';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t multiLineComment: function multiLineComment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineCommentAsterisk';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t },\n\n\t multiLineCommentAsterisk: function multiLineCommentAsterisk () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t lexState = 'multiLineComment';\n\t },\n\n\t singleLineComment: function singleLineComment () {\n\t switch (c) {\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t read();\n\t },\n\n\t value: function value () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t case 'n':\n\t read();\n\t literal('ull');\n\t return newToken('null', null)\n\n\t case 't':\n\t read();\n\t literal('rue');\n\t return newToken('boolean', true)\n\n\t case 'f':\n\t read();\n\t literal('alse');\n\t return newToken('boolean', false)\n\n\t case '-':\n\t case '+':\n\t if (read() === '-') {\n\t sign = -1;\n\t }\n\n\t lexState = 'sign';\n\t return\n\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t buffer = '';\n\t lexState = 'string';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t identifierNameStartEscape: function identifierNameStartEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t break\n\n\t default:\n\t if (!util.isIdStartChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t identifierName: function identifierName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t buffer += read();\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameEscape';\n\t return\n\t }\n\n\t if (util.isIdContinueChar(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('identifier', buffer)\n\t },\n\n\t identifierNameEscape: function identifierNameEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t break\n\n\t default:\n\t if (!util.isIdContinueChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t sign: function sign$1 () {\n\t switch (c) {\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', sign * Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t zero: function zero () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\n\t case 'x':\n\t case 'X':\n\t buffer += read();\n\t lexState = 'hexadecimal';\n\t return\n\t }\n\n\t return newToken('numeric', sign * 0)\n\t },\n\n\t decimalInteger: function decimalInteger () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalPointLeading: function decimalPointLeading () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalPoint: function decimalPoint () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalFraction: function decimalFraction () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalExponent: function decimalExponent () {\n\t switch (c) {\n\t case '+':\n\t case '-':\n\t buffer += read();\n\t lexState = 'decimalExponentSign';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentSign: function decimalExponentSign () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentInteger: function decimalExponentInteger () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t hexadecimal: function hexadecimal () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t lexState = 'hexadecimalInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t hexadecimalInteger: function hexadecimalInteger () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t string: function string () {\n\t switch (c) {\n\t case '\\\\':\n\t read();\n\t buffer += escape();\n\t return\n\n\t case '\"':\n\t if (doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case \"'\":\n\t if (!doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case '\\n':\n\t case '\\r':\n\t throw invalidChar(read())\n\n\t case '\\u2028':\n\t case '\\u2029':\n\t separatorChar(c);\n\t break\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t },\n\n\t start: function start () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t // This code is unreachable since the default lexState handles eof.\n\t // case undefined:\n\t // return newToken('eof')\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t buffer = read();\n\t lexState = 'identifierName';\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameStartEscape';\n\t return\n\n\t case '}':\n\t return newToken('punctuator', read())\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t lexState = 'string';\n\t return\n\t }\n\n\t if (util.isIdStartChar(c)) {\n\t buffer += read();\n\t lexState = 'identifierName';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t if (c === ':') {\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t lexState = 'value';\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t switch (c) {\n\t case ',':\n\t case '}':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (c === ']') {\n\t return newToken('punctuator', read())\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t switch (c) {\n\t case ',':\n\t case ']':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the default lexState.\n\t // if (c === undefined) {\n\t // read()\n\t // return newToken('eof')\n\t // }\n\n\t throw invalidChar(read())\n\t },\n\t};\n\n\tfunction newToken (type, value) {\n\t return {\n\t type: type,\n\t value: value,\n\t line: line,\n\t column: column,\n\t }\n\t}\n\n\tfunction literal (s) {\n\t for (var i = 0, list = s; i < list.length; i += 1) {\n\t var c = list[i];\n\n\t var p = peek();\n\n\t if (p !== c) {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t }\n\t}\n\n\tfunction escape () {\n\t var c = peek();\n\t switch (c) {\n\t case 'b':\n\t read();\n\t return '\\b'\n\n\t case 'f':\n\t read();\n\t return '\\f'\n\n\t case 'n':\n\t read();\n\t return '\\n'\n\n\t case 'r':\n\t read();\n\t return '\\r'\n\n\t case 't':\n\t read();\n\t return '\\t'\n\n\t case 'v':\n\t read();\n\t return '\\v'\n\n\t case '0':\n\t read();\n\t if (util.isDigit(peek())) {\n\t throw invalidChar(read())\n\t }\n\n\t return '\\0'\n\n\t case 'x':\n\t read();\n\t return hexEscape()\n\n\t case 'u':\n\t read();\n\t return unicodeEscape()\n\n\t case '\\n':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return ''\n\n\t case '\\r':\n\t read();\n\t if (peek() === '\\n') {\n\t read();\n\t }\n\n\t return ''\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t throw invalidChar(read())\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t return read()\n\t}\n\n\tfunction hexEscape () {\n\t var buffer = '';\n\t var c = peek();\n\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tfunction unicodeEscape () {\n\t var buffer = '';\n\t var count = 4;\n\n\t while (count-- > 0) {\n\t var c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t }\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tvar parseStates = {\n\t start: function start () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (token.type) {\n\t case 'identifier':\n\t case 'string':\n\t key = token.value;\n\t parseState = 'afterPropertyName';\n\t return\n\n\t case 'punctuator':\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.value !== '}') {\n\t // throw invalidToken()\n\t // }\n\n\t pop();\n\t return\n\n\t case 'eof':\n\t throw invalidEOF()\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator' || token.value !== ':') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t parseState = 'beforePropertyValue';\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t if (token.type === 'punctuator' && token.value === ']') {\n\t pop();\n\t return\n\t }\n\n\t push();\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforePropertyName';\n\t return\n\n\t case '}':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforeArrayValue';\n\t return\n\n\t case ']':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'eof') {\n\t // throw invalidToken()\n\t // }\n\t },\n\t};\n\n\tfunction push () {\n\t var value;\n\n\t switch (token.type) {\n\t case 'punctuator':\n\t switch (token.value) {\n\t case '{':\n\t value = {};\n\t break\n\n\t case '[':\n\t value = [];\n\t break\n\t }\n\n\t break\n\n\t case 'null':\n\t case 'boolean':\n\t case 'numeric':\n\t case 'string':\n\t value = token.value;\n\t break\n\n\t // This code is unreachable.\n\t // default:\n\t // throw invalidToken()\n\t }\n\n\t if (root === undefined) {\n\t root = value;\n\t } else {\n\t var parent = stack[stack.length - 1];\n\t if (Array.isArray(parent)) {\n\t parent.push(value);\n\t } else {\n\t Object.defineProperty(parent, key, {\n\t value: value,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\n\t if (value !== null && typeof value === 'object') {\n\t stack.push(value);\n\n\t if (Array.isArray(value)) {\n\t parseState = 'beforeArrayValue';\n\t } else {\n\t parseState = 'beforePropertyName';\n\t }\n\t } else {\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t }\n\t}\n\n\tfunction pop () {\n\t stack.pop();\n\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t}\n\n\t// This code is unreachable.\n\t// function invalidParseState () {\n\t// return new Error(`JSON5: invalid parse state '${parseState}'`)\n\t// }\n\n\t// This code is unreachable.\n\t// function invalidLexState (state) {\n\t// return new Error(`JSON5: invalid lex state '${state}'`)\n\t// }\n\n\tfunction invalidChar (c) {\n\t if (c === undefined) {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t }\n\n\t return syntaxError((\"JSON5: invalid character '\" + (formatChar(c)) + \"' at \" + line + \":\" + column))\n\t}\n\n\tfunction invalidEOF () {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t}\n\n\t// This code is unreachable.\n\t// function invalidToken () {\n\t// if (token.type === 'eof') {\n\t// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n\t// }\n\n\t// const c = String.fromCodePoint(token.value.codePointAt(0))\n\t// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n\t// }\n\n\tfunction invalidIdentifier () {\n\t column -= 5;\n\t return syntaxError((\"JSON5: invalid identifier character at \" + line + \":\" + column))\n\t}\n\n\tfunction separatorChar (c) {\n\t console.warn((\"JSON5: '\" + (formatChar(c)) + \"' in strings is not valid ECMAScript; consider escaping\"));\n\t}\n\n\tfunction formatChar (c) {\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t if (replacements[c]) {\n\t return replacements[c]\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t return '\\\\x' + ('00' + hexString).substring(hexString.length)\n\t }\n\n\t return c\n\t}\n\n\tfunction syntaxError (message) {\n\t var err = new SyntaxError(message);\n\t err.lineNumber = line;\n\t err.columnNumber = column;\n\t return err\n\t}\n\n\tvar stringify = function stringify (value, replacer, space) {\n\t var stack = [];\n\t var indent = '';\n\t var propertyList;\n\t var replacerFunc;\n\t var gap = '';\n\t var quote;\n\n\t if (\n\t replacer != null &&\n\t typeof replacer === 'object' &&\n\t !Array.isArray(replacer)\n\t ) {\n\t space = replacer.space;\n\t quote = replacer.quote;\n\t replacer = replacer.replacer;\n\t }\n\n\t if (typeof replacer === 'function') {\n\t replacerFunc = replacer;\n\t } else if (Array.isArray(replacer)) {\n\t propertyList = [];\n\t for (var i = 0, list = replacer; i < list.length; i += 1) {\n\t var v = list[i];\n\n\t var item = (void 0);\n\n\t if (typeof v === 'string') {\n\t item = v;\n\t } else if (\n\t typeof v === 'number' ||\n\t v instanceof String ||\n\t v instanceof Number\n\t ) {\n\t item = String(v);\n\t }\n\n\t if (item !== undefined && propertyList.indexOf(item) < 0) {\n\t propertyList.push(item);\n\t }\n\t }\n\t }\n\n\t if (space instanceof Number) {\n\t space = Number(space);\n\t } else if (space instanceof String) {\n\t space = String(space);\n\t }\n\n\t if (typeof space === 'number') {\n\t if (space > 0) {\n\t space = Math.min(10, Math.floor(space));\n\t gap = ' '.substr(0, space);\n\t }\n\t } else if (typeof space === 'string') {\n\t gap = space.substr(0, 10);\n\t }\n\n\t return serializeProperty('', {'': value})\n\n\t function serializeProperty (key, holder) {\n\t var value = holder[key];\n\t if (value != null) {\n\t if (typeof value.toJSON5 === 'function') {\n\t value = value.toJSON5(key);\n\t } else if (typeof value.toJSON === 'function') {\n\t value = value.toJSON(key);\n\t }\n\t }\n\n\t if (replacerFunc) {\n\t value = replacerFunc.call(holder, key, value);\n\t }\n\n\t if (value instanceof Number) {\n\t value = Number(value);\n\t } else if (value instanceof String) {\n\t value = String(value);\n\t } else if (value instanceof Boolean) {\n\t value = value.valueOf();\n\t }\n\n\t switch (value) {\n\t case null: return 'null'\n\t case true: return 'true'\n\t case false: return 'false'\n\t }\n\n\t if (typeof value === 'string') {\n\t return quoteString(value, false)\n\t }\n\n\t if (typeof value === 'number') {\n\t return String(value)\n\t }\n\n\t if (typeof value === 'object') {\n\t return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n\t }\n\n\t return undefined\n\t }\n\n\t function quoteString (value) {\n\t var quotes = {\n\t \"'\": 0.1,\n\t '\"': 0.2,\n\t };\n\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t var product = '';\n\n\t for (var i = 0; i < value.length; i++) {\n\t var c = value[i];\n\t switch (c) {\n\t case \"'\":\n\t case '\"':\n\t quotes[c]++;\n\t product += c;\n\t continue\n\n\t case '\\0':\n\t if (util.isDigit(value[i + 1])) {\n\t product += '\\\\x00';\n\t continue\n\t }\n\t }\n\n\t if (replacements[c]) {\n\t product += replacements[c];\n\t continue\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n\t continue\n\t }\n\n\t product += c;\n\t }\n\n\t var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });\n\n\t product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n\t return quoteChar + product + quoteChar\n\t }\n\n\t function serializeObject (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var keys = propertyList || Object.keys(value);\n\t var partial = [];\n\t for (var i = 0, list = keys; i < list.length; i += 1) {\n\t var key = list[i];\n\n\t var propertyString = serializeProperty(key, value);\n\t if (propertyString !== undefined) {\n\t var member = serializeKey(key) + ':';\n\t if (gap !== '') {\n\t member += ' ';\n\t }\n\t member += propertyString;\n\t partial.push(member);\n\t }\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '{}';\n\t } else {\n\t var properties;\n\t if (gap === '') {\n\t properties = partial.join(',');\n\t final = '{' + properties + '}';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t properties = partial.join(separator);\n\t final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\n\t function serializeKey (key) {\n\t if (key.length === 0) {\n\t return quoteString(key, true)\n\t }\n\n\t var firstChar = String.fromCodePoint(key.codePointAt(0));\n\t if (!util.isIdStartChar(firstChar)) {\n\t return quoteString(key, true)\n\t }\n\n\t for (var i = firstChar.length; i < key.length; i++) {\n\t if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n\t return quoteString(key, true)\n\t }\n\t }\n\n\t return key\n\t }\n\n\t function serializeArray (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var partial = [];\n\t for (var i = 0; i < value.length; i++) {\n\t var propertyString = serializeProperty(String(i), value);\n\t partial.push((propertyString !== undefined) ? propertyString : 'null');\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '[]';\n\t } else {\n\t if (gap === '') {\n\t var properties = partial.join(',');\n\t final = '[' + properties + ']';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t var properties$1 = partial.join(separator);\n\t final = '[\\n' + indent + properties$1 + ',\\n' + stepback + ']';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\t};\n\n\tvar JSON5 = {\n\t parse: parse,\n\t stringify: stringify,\n\t};\n\n\tvar lib = JSON5;\n\n\tvar es5 = lib;\n\n\treturn es5;\n\n})));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/json5/dist/index.js?"); + +/***/ }), + +/***/ "./node_modules/md5.js/index.js": +/*!**************************************!*\ + !*** ./node_modules/md5.js/index.js ***! + \**************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\nvar HashBase = __webpack_require__(/*! hash-base */ \"./node_modules/hash-base/index.js\")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/md5.js/index.js?"); + +/***/ }), + +/***/ "./node_modules/miller-rabin/lib/mr.js": +/*!*********************************************!*\ + !*** ./node_modules/miller-rabin/lib/mr.js ***! + \*********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("var bn = __webpack_require__(/*! bn.js */ \"./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js\");\nvar brorand = __webpack_require__(/*! brorand */ \"./node_modules/brorand/index.js\");\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/miller-rabin/lib/mr.js?"); + +/***/ }), + +/***/ "./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js": +/*!****************************************************************!*\ + !*** ./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js ***! + \****************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = (__webpack_require__(/*! buffer */ \"?0aec\").Buffer);\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})( false || module, this);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js?"); + +/***/ }), + +/***/ "./node_modules/minimalistic-assert/index.js": +/*!***************************************************!*\ + !*** ./node_modules/minimalistic-assert/index.js ***! + \***************************************************/ +/***/ ((module) => { + +eval("module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/minimalistic-assert/index.js?"); + +/***/ }), + +/***/ "./node_modules/minimalistic-crypto-utils/lib/utils.js": +/*!*************************************************************!*\ + !*** ./node_modules/minimalistic-crypto-utils/lib/utils.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/minimalistic-crypto-utils/lib/utils.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/browser.js": +/*!*******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/browser.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PixelRatio: () => (/* binding */ PixelRatio),\n/* harmony export */ addMatchMediaChangeListener: () => (/* binding */ addMatchMediaChangeListener),\n/* harmony export */ getZoomFactor: () => (/* binding */ getZoomFactor),\n/* harmony export */ isAndroid: () => (/* binding */ isAndroid),\n/* harmony export */ isChrome: () => (/* binding */ isChrome),\n/* harmony export */ isElectron: () => (/* binding */ isElectron),\n/* harmony export */ isFirefox: () => (/* binding */ isFirefox),\n/* harmony export */ isSafari: () => (/* binding */ isSafari),\n/* harmony export */ isStandalone: () => (/* binding */ isStandalone),\n/* harmony export */ isWebKit: () => (/* binding */ isWebKit),\n/* harmony export */ isWebkitWebView: () => (/* binding */ isWebkitWebView)\n/* harmony export */ });\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nclass WindowManager {\n constructor() {\n // --- Zoom Factor\n this._zoomFactor = 1;\n }\n getZoomFactor() {\n return this._zoomFactor;\n }\n}\nWindowManager.INSTANCE = new WindowManager();\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio#monitoring_screen_resolution_or_zoom_level_changes\n */\nclass DevicePixelRatioMonitor extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable {\n constructor() {\n super();\n this._onDidChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter());\n this.onDidChange = this._onDidChange.event;\n this._listener = () => this._handleChange(true);\n this._mediaQueryList = null;\n this._handleChange(false);\n }\n _handleChange(fireEvent) {\n var _a;\n (_a = this._mediaQueryList) === null || _a === void 0 ? void 0 : _a.removeEventListener('change', this._listener);\n this._mediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);\n this._mediaQueryList.addEventListener('change', this._listener);\n if (fireEvent) {\n this._onDidChange.fire();\n }\n }\n}\nclass PixelRatioImpl extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable {\n get value() {\n return this._value;\n }\n constructor() {\n super();\n this._onDidChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter());\n this.onDidChange = this._onDidChange.event;\n this._value = this._getPixelRatio();\n const dprMonitor = this._register(new DevicePixelRatioMonitor());\n this._register(dprMonitor.onDidChange(() => {\n this._value = this._getPixelRatio();\n this._onDidChange.fire(this._value);\n }));\n }\n _getPixelRatio() {\n const ctx = document.createElement('canvas').getContext('2d');\n const dpr = window.devicePixelRatio || 1;\n const bsr = ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1;\n return dpr / bsr;\n }\n}\nclass PixelRatioFacade {\n constructor() {\n this._pixelRatioMonitor = null;\n }\n _getOrCreatePixelRatioMonitor() {\n if (!this._pixelRatioMonitor) {\n this._pixelRatioMonitor = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.markAsSingleton)(new PixelRatioImpl());\n }\n return this._pixelRatioMonitor;\n }\n /**\n * Get the current value.\n */\n get value() {\n return this._getOrCreatePixelRatioMonitor().value;\n }\n /**\n * Listen for changes.\n */\n get onDidChange() {\n return this._getOrCreatePixelRatioMonitor().onDidChange;\n }\n}\nfunction addMatchMediaChangeListener(query, callback) {\n if (typeof query === 'string') {\n query = window.matchMedia(query);\n }\n query.addEventListener('change', callback);\n}\n/**\n * Returns the pixel ratio.\n *\n * This is useful for rendering elements at native screen resolution or for being used as\n * a cache key when storing font measurements. Fonts might render differently depending on resolution\n * and any measurements need to be discarded for example when a window is moved from a monitor to another.\n */\nconst PixelRatio = new PixelRatioFacade();\n/** The zoom scale for an index, e.g. 1, 1.2, 1.4 */\nfunction getZoomFactor() {\n return WindowManager.INSTANCE.getZoomFactor();\n}\nconst userAgent = navigator.userAgent;\nconst isFirefox = (userAgent.indexOf('Firefox') >= 0);\nconst isWebKit = (userAgent.indexOf('AppleWebKit') >= 0);\nconst isChrome = (userAgent.indexOf('Chrome') >= 0);\nconst isSafari = (!isChrome && (userAgent.indexOf('Safari') >= 0));\nconst isWebkitWebView = (!isChrome && !isSafari && isWebKit);\nconst isElectron = (userAgent.indexOf('Electron/') >= 0);\nconst isAndroid = (userAgent.indexOf('Android') >= 0);\nlet standalone = false;\nif (window.matchMedia) {\n const standaloneMatchMedia = window.matchMedia('(display-mode: standalone) or (display-mode: window-controls-overlay)');\n const fullScreenMatchMedia = window.matchMedia('(display-mode: fullscreen)');\n standalone = standaloneMatchMedia.matches;\n addMatchMediaChangeListener(standaloneMatchMedia, ({ matches }) => {\n // entering fullscreen would change standaloneMatchMedia.matches to false\n // if standalone is true (running as PWA) and entering fullscreen, skip this change\n if (standalone && fullScreenMatchMedia.matches) {\n return;\n }\n // otherwise update standalone (browser to PWA or PWA to browser)\n standalone = matches;\n });\n}\nfunction isStandalone() {\n return standalone;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/browser.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js": +/*!*******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BrowserFeatures: () => (/* binding */ BrowserFeatures)\n/* harmony export */ });\n/* harmony import */ var _browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n/**\n * Browser feature we can support in current platform, browser and environment.\n */\nconst BrowserFeatures = {\n clipboard: {\n writeText: (_common_platform_js__WEBPACK_IMPORTED_MODULE_1__.isNative\n || (document.queryCommandSupported && document.queryCommandSupported('copy'))\n || !!(navigator && navigator.clipboard && navigator.clipboard.writeText)),\n readText: (_common_platform_js__WEBPACK_IMPORTED_MODULE_1__.isNative\n || !!(navigator && navigator.clipboard && navigator.clipboard.readText))\n },\n keyboard: (() => {\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_1__.isNative || _browser_js__WEBPACK_IMPORTED_MODULE_0__.isStandalone()) {\n return 0 /* KeyboardSupport.Always */;\n }\n if (navigator.keyboard || _browser_js__WEBPACK_IMPORTED_MODULE_0__.isSafari) {\n return 1 /* KeyboardSupport.FullScreen */;\n }\n return 2 /* KeyboardSupport.None */;\n })(),\n // 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\n touch: 'ontouchstart' in window || navigator.maxTouchPoints > 0,\n pointerEvents: window.PointerEvent && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0 || navigator.maxTouchPoints > 0)\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/defaultWorkerFactory.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/defaultWorkerFactory.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DefaultWorkerFactory: () => (/* binding */ DefaultWorkerFactory)\n/* harmony export */ });\n/* harmony import */ var _trustedTypes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./trustedTypes.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/trustedTypes.js\");\n/* harmony import */ var _common_worker_simpleWorker_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/worker/simpleWorker.js */ \"./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nconst ttPolicy = (0,_trustedTypes_js__WEBPACK_IMPORTED_MODULE_0__.createTrustedTypesPolicy)('defaultWorkerFactory', { createScriptURL: value => value });\nfunction getWorker(label) {\n const monacoEnvironment = globalThis.MonacoEnvironment;\n if (monacoEnvironment) {\n if (typeof monacoEnvironment.getWorker === 'function') {\n return monacoEnvironment.getWorker('workerMain.js', label);\n }\n if (typeof monacoEnvironment.getWorkerUrl === 'function') {\n const workerUrl = monacoEnvironment.getWorkerUrl('workerMain.js', label);\n return new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) : workerUrl, { name: label });\n }\n }\n // ESM-comment-begin\n // \tif (typeof require === 'function') {\n // \t\t// check if the JS lives on a different origin\n // \t\tconst workerMain = require.toUrl('vs/base/worker/workerMain.js'); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321\n // \t\tconst workerUrl = getWorkerBootstrapUrl(workerMain, label);\n // \t\treturn new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label });\n // \t}\n // ESM-comment-end\n throw new Error(`You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker`);\n}\n// ESM-comment-begin\n// export function getWorkerBootstrapUrl(scriptPath: string, label: string): string {\n// \tif (/^((http:)|(https:)|(file:))/.test(scriptPath) && scriptPath.substring(0, globalThis.origin.length) !== globalThis.origin) {\n// \t\t// this is the cross-origin case\n// \t\t// i.e. the webpage is running at a different origin than where the scripts are loaded from\n// \t\tconst myPath = 'vs/base/worker/defaultWorkerFactory.js';\n// \t\tconst workerBaseUrl = require.toUrl(myPath).slice(0, -myPath.length); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321\n// \t\tconst js = `/*${label}*/globalThis.MonacoEnvironment={baseUrl: '${workerBaseUrl}'};const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${scriptPath}') ?? '${scriptPath}');/*${label}*/`;\n// \t\tconst blob = new Blob([js], { type: 'application/javascript' });\n// \t\treturn URL.createObjectURL(blob);\n// \t}\n// \n// \tconst start = scriptPath.lastIndexOf('?');\n// \tconst end = scriptPath.lastIndexOf('#', start);\n// \tconst params = start > 0\n// \t\t? new URLSearchParams(scriptPath.substring(start + 1, ~end ? end : undefined))\n// \t\t: new URLSearchParams();\n// \n// \tCOI.addSearchParam(params, true, true);\n// \tconst search = params.toString();\n// \n// \tif (!search) {\n// \t\treturn `${scriptPath}#${label}`;\n// \t} else {\n// \t\treturn `${scriptPath}?${params.toString()}#${label}`;\n// \t}\n// }\n// ESM-comment-end\nfunction isPromiseLike(obj) {\n if (typeof obj.then === 'function') {\n return true;\n }\n return false;\n}\n/**\n * A worker that uses HTML5 web workers so that is has\n * its own global scope and its own thread.\n */\nclass WebWorker {\n constructor(moduleId, id, label, onMessageCallback, onErrorCallback) {\n this.id = id;\n const workerOrPromise = getWorker(label);\n if (isPromiseLike(workerOrPromise)) {\n this.worker = workerOrPromise;\n }\n else {\n this.worker = Promise.resolve(workerOrPromise);\n }\n this.postMessage(moduleId, []);\n this.worker.then((w) => {\n w.onmessage = function (ev) {\n onMessageCallback(ev.data);\n };\n w.onmessageerror = onErrorCallback;\n if (typeof w.addEventListener === 'function') {\n w.addEventListener('error', onErrorCallback);\n }\n });\n }\n getId() {\n return this.id;\n }\n postMessage(message, transfer) {\n var _a;\n (_a = this.worker) === null || _a === void 0 ? void 0 : _a.then(w => w.postMessage(message, transfer));\n }\n dispose() {\n var _a;\n (_a = this.worker) === null || _a === void 0 ? void 0 : _a.then(w => w.terminate());\n this.worker = null;\n }\n}\nclass DefaultWorkerFactory {\n constructor(label) {\n this._label = label;\n this._webWorkerFailedBeforeError = false;\n }\n create(moduleId, onMessageCallback, onErrorCallback) {\n const workerId = (++DefaultWorkerFactory.LAST_WORKER_ID);\n if (this._webWorkerFailedBeforeError) {\n throw this._webWorkerFailedBeforeError;\n }\n return new WebWorker(moduleId, workerId, this._label || 'anonymous' + workerId, onMessageCallback, (err) => {\n (0,_common_worker_simpleWorker_js__WEBPACK_IMPORTED_MODULE_1__.logOnceWebWorkerWarning)(err);\n this._webWorkerFailedBeforeError = err;\n onErrorCallback(err);\n });\n }\n}\nDefaultWorkerFactory.LAST_WORKER_ID = 0;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/defaultWorkerFactory.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/dnd.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/dnd.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DataTransfers: () => (/* binding */ DataTransfers)\n/* harmony export */ });\n/* harmony import */ var _common_mime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/mime.js */ \"./node_modules/monaco-editor/esm/vs/base/common/mime.js\");\n\n// Common data transfers\nconst DataTransfers = {\n /**\n * Application specific resource transfer type\n */\n RESOURCES: 'ResourceURLs',\n /**\n * Browser specific transfer type to download\n */\n DOWNLOAD_URL: 'DownloadURL',\n /**\n * Browser specific transfer type for files\n */\n FILES: 'Files',\n /**\n * Typically transfer type for copy/paste transfers.\n */\n TEXT: _common_mime_js__WEBPACK_IMPORTED_MODULE_0__.Mimes.text,\n /**\n * Internal type used to pass around text/uri-list data.\n *\n * This is needed to work around https://bugs.chromium.org/p/chromium/issues/detail?id=239745.\n */\n INTERNAL_URI_LIST: 'application/vnd.code.uri-list',\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/dnd.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/dom.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/dom.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $: () => (/* binding */ $),\n/* harmony export */ Dimension: () => (/* binding */ Dimension),\n/* harmony export */ DragAndDropObserver: () => (/* binding */ DragAndDropObserver),\n/* harmony export */ EventHelper: () => (/* binding */ EventHelper),\n/* harmony export */ EventType: () => (/* binding */ EventType),\n/* harmony export */ ModifierKeyEmitter: () => (/* binding */ ModifierKeyEmitter),\n/* harmony export */ Namespace: () => (/* binding */ Namespace),\n/* harmony export */ addDisposableGenericMouseDownListener: () => (/* binding */ addDisposableGenericMouseDownListener),\n/* harmony export */ addDisposableGenericMouseUpListener: () => (/* binding */ addDisposableGenericMouseUpListener),\n/* harmony export */ addDisposableListener: () => (/* binding */ addDisposableListener),\n/* harmony export */ addStandardDisposableGenericMouseDownListener: () => (/* binding */ addStandardDisposableGenericMouseDownListener),\n/* harmony export */ addStandardDisposableGenericMouseUpListener: () => (/* binding */ addStandardDisposableGenericMouseUpListener),\n/* harmony export */ addStandardDisposableListener: () => (/* binding */ addStandardDisposableListener),\n/* harmony export */ animate: () => (/* binding */ animate),\n/* harmony export */ append: () => (/* binding */ append),\n/* harmony export */ asCSSPropertyValue: () => (/* binding */ asCSSPropertyValue),\n/* harmony export */ asCSSUrl: () => (/* binding */ asCSSUrl),\n/* harmony export */ asCssValueWithDefault: () => (/* binding */ asCssValueWithDefault),\n/* harmony export */ basicMarkupHtmlTags: () => (/* binding */ basicMarkupHtmlTags),\n/* harmony export */ clearNode: () => (/* binding */ clearNode),\n/* harmony export */ computeScreenAwareSize: () => (/* binding */ computeScreenAwareSize),\n/* harmony export */ createCSSRule: () => (/* binding */ createCSSRule),\n/* harmony export */ createStyleSheet: () => (/* binding */ createStyleSheet),\n/* harmony export */ findParentWithClass: () => (/* binding */ findParentWithClass),\n/* harmony export */ getActiveElement: () => (/* binding */ getActiveElement),\n/* harmony export */ getClientArea: () => (/* binding */ getClientArea),\n/* harmony export */ getComputedStyle: () => (/* binding */ getComputedStyle),\n/* harmony export */ getContentHeight: () => (/* binding */ getContentHeight),\n/* harmony export */ getContentWidth: () => (/* binding */ getContentWidth),\n/* harmony export */ getDomNodePagePosition: () => (/* binding */ getDomNodePagePosition),\n/* harmony export */ getDomNodeZoomLevel: () => (/* binding */ getDomNodeZoomLevel),\n/* harmony export */ getShadowRoot: () => (/* binding */ getShadowRoot),\n/* harmony export */ getTopLeftOffset: () => (/* binding */ getTopLeftOffset),\n/* harmony export */ getTotalHeight: () => (/* binding */ getTotalHeight),\n/* harmony export */ getTotalWidth: () => (/* binding */ getTotalWidth),\n/* harmony export */ h: () => (/* binding */ h),\n/* harmony export */ hasParentWithClass: () => (/* binding */ hasParentWithClass),\n/* harmony export */ hide: () => (/* binding */ hide),\n/* harmony export */ hookDomPurifyHrefAndSrcSanitizer: () => (/* binding */ hookDomPurifyHrefAndSrcSanitizer),\n/* harmony export */ isAncestor: () => (/* binding */ isAncestor),\n/* harmony export */ isEventLike: () => (/* binding */ isEventLike),\n/* harmony export */ isHTMLElement: () => (/* binding */ isHTMLElement),\n/* harmony export */ isInDOM: () => (/* binding */ isInDOM),\n/* harmony export */ isInShadowDOM: () => (/* binding */ isInShadowDOM),\n/* harmony export */ isShadowRoot: () => (/* binding */ isShadowRoot),\n/* harmony export */ prepend: () => (/* binding */ prepend),\n/* harmony export */ removeCSSRulesContainingSelector: () => (/* binding */ removeCSSRulesContainingSelector),\n/* harmony export */ reset: () => (/* binding */ reset),\n/* harmony export */ restoreParentsScrollTop: () => (/* binding */ restoreParentsScrollTop),\n/* harmony export */ runAtThisOrScheduleAtNextAnimationFrame: () => (/* binding */ runAtThisOrScheduleAtNextAnimationFrame),\n/* harmony export */ saveParentsScrollTop: () => (/* binding */ saveParentsScrollTop),\n/* harmony export */ scheduleAtNextAnimationFrame: () => (/* binding */ scheduleAtNextAnimationFrame),\n/* harmony export */ setVisibility: () => (/* binding */ setVisibility),\n/* harmony export */ show: () => (/* binding */ show),\n/* harmony export */ size: () => (/* binding */ size),\n/* harmony export */ trackFocus: () => (/* binding */ trackFocus),\n/* harmony export */ windowOpenNoOpener: () => (/* binding */ windowOpenNoOpener)\n/* harmony export */ });\n/* harmony import */ var _browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _canIUse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./canIUse.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _mouseEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mouseEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js\");\n/* harmony import */ var _common_errors_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dompurify/dompurify.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dompurify/dompurify.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_network_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/network.js */ \"./node_modules/monaco-editor/esm/vs/base/common/network.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\nfunction clearNode(node) {\n while (node.firstChild) {\n node.firstChild.remove();\n }\n}\n/**\n * @deprecated Use node.isConnected directly\n */\nfunction isInDOM(node) {\n var _a;\n return (_a = node === null || node === void 0 ? void 0 : node.isConnected) !== null && _a !== void 0 ? _a : false;\n}\nclass DomListener {\n constructor(node, type, handler, options) {\n this._node = node;\n this._type = type;\n this._handler = handler;\n this._options = (options || false);\n this._node.addEventListener(this._type, this._handler, this._options);\n }\n dispose() {\n if (!this._handler) {\n // Already disposed\n return;\n }\n this._node.removeEventListener(this._type, this._handler, this._options);\n // Prevent leakers from holding on to the dom or handler func\n this._node = null;\n this._handler = null;\n }\n}\nfunction addDisposableListener(node, type, handler, useCaptureOrOptions) {\n return new DomListener(node, type, handler, useCaptureOrOptions);\n}\nfunction _wrapAsStandardMouseEvent(handler) {\n return function (e) {\n return handler(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardMouseEvent(e));\n };\n}\nfunction _wrapAsStandardKeyboardEvent(handler) {\n return function (e) {\n return handler(new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e));\n };\n}\nconst addStandardDisposableListener = function addStandardDisposableListener(node, type, handler, useCapture) {\n let wrapHandler = handler;\n if (type === 'click' || type === 'mousedown') {\n wrapHandler = _wrapAsStandardMouseEvent(handler);\n }\n else if (type === 'keydown' || type === 'keypress' || type === 'keyup') {\n wrapHandler = _wrapAsStandardKeyboardEvent(handler);\n }\n return addDisposableListener(node, type, wrapHandler, useCapture);\n};\nconst addStandardDisposableGenericMouseDownListener = function addStandardDisposableListener(node, handler, useCapture) {\n const wrapHandler = _wrapAsStandardMouseEvent(handler);\n return addDisposableGenericMouseDownListener(node, wrapHandler, useCapture);\n};\nconst addStandardDisposableGenericMouseUpListener = function addStandardDisposableListener(node, handler, useCapture) {\n const wrapHandler = _wrapAsStandardMouseEvent(handler);\n return addDisposableGenericMouseUpListener(node, wrapHandler, useCapture);\n};\nfunction addDisposableGenericMouseDownListener(node, handler, useCapture) {\n return addDisposableListener(node, _common_platform_js__WEBPACK_IMPORTED_MODULE_9__.isIOS && _canIUse_js__WEBPACK_IMPORTED_MODULE_1__.BrowserFeatures.pointerEvents ? EventType.POINTER_DOWN : EventType.MOUSE_DOWN, handler, useCapture);\n}\nfunction addDisposableGenericMouseUpListener(node, handler, useCapture) {\n return addDisposableListener(node, _common_platform_js__WEBPACK_IMPORTED_MODULE_9__.isIOS && _canIUse_js__WEBPACK_IMPORTED_MODULE_1__.BrowserFeatures.pointerEvents ? EventType.POINTER_UP : EventType.MOUSE_UP, handler, useCapture);\n}\n/**\n * Schedule a callback to be run at the next animation frame.\n * This allows multiple parties to register callbacks that should run at the next animation frame.\n * If currently in an animation frame, `runner` will be executed immediately.\n * @return token that can be used to cancel the scheduled runner (only if `runner` was not executed immediately).\n */\nlet runAtThisOrScheduleAtNextAnimationFrame;\n/**\n * Schedule a callback to be run at the next animation frame.\n * This allows multiple parties to register callbacks that should run at the next animation frame.\n * If currently in an animation frame, `runner` will be executed at the next animation frame.\n * @return token that can be used to cancel the scheduled runner.\n */\nlet scheduleAtNextAnimationFrame;\nclass AnimationFrameQueueItem {\n constructor(runner, priority = 0) {\n this._runner = runner;\n this.priority = priority;\n this._canceled = false;\n }\n dispose() {\n this._canceled = true;\n }\n execute() {\n if (this._canceled) {\n return;\n }\n try {\n this._runner();\n }\n catch (e) {\n (0,_common_errors_js__WEBPACK_IMPORTED_MODULE_4__.onUnexpectedError)(e);\n }\n }\n // Sort by priority (largest to lowest)\n static sort(a, b) {\n return b.priority - a.priority;\n }\n}\n(function () {\n /**\n * The runners scheduled at the next animation frame\n */\n let NEXT_QUEUE = [];\n /**\n * The runners scheduled at the current animation frame\n */\n let CURRENT_QUEUE = null;\n /**\n * A flag to keep track if the native requestAnimationFrame was already called\n */\n let animFrameRequested = false;\n /**\n * A flag to indicate if currently handling a native requestAnimationFrame callback\n */\n let inAnimationFrameRunner = false;\n const animationFrameRunner = () => {\n animFrameRequested = false;\n CURRENT_QUEUE = NEXT_QUEUE;\n NEXT_QUEUE = [];\n inAnimationFrameRunner = true;\n while (CURRENT_QUEUE.length > 0) {\n CURRENT_QUEUE.sort(AnimationFrameQueueItem.sort);\n const top = CURRENT_QUEUE.shift();\n top.execute();\n }\n inAnimationFrameRunner = false;\n };\n scheduleAtNextAnimationFrame = (runner, priority = 0) => {\n const item = new AnimationFrameQueueItem(runner, priority);\n NEXT_QUEUE.push(item);\n if (!animFrameRequested) {\n animFrameRequested = true;\n requestAnimationFrame(animationFrameRunner);\n }\n return item;\n };\n runAtThisOrScheduleAtNextAnimationFrame = (runner, priority) => {\n if (inAnimationFrameRunner) {\n const item = new AnimationFrameQueueItem(runner, priority);\n CURRENT_QUEUE.push(item);\n return item;\n }\n else {\n return scheduleAtNextAnimationFrame(runner, priority);\n }\n };\n})();\nfunction getComputedStyle(el) {\n return document.defaultView.getComputedStyle(el, null);\n}\nfunction getClientArea(element) {\n // Try with DOM clientWidth / clientHeight\n if (element !== document.body) {\n return new Dimension(element.clientWidth, element.clientHeight);\n }\n // If visual view port exits and it's on mobile, it should be used instead of window innerWidth / innerHeight, or document.body.clientWidth / document.body.clientHeight\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_9__.isIOS && window.visualViewport) {\n return new Dimension(window.visualViewport.width, window.visualViewport.height);\n }\n // Try innerWidth / innerHeight\n if (window.innerWidth && window.innerHeight) {\n return new Dimension(window.innerWidth, window.innerHeight);\n }\n // Try with document.body.clientWidth / document.body.clientHeight\n if (document.body && document.body.clientWidth && document.body.clientHeight) {\n return new Dimension(document.body.clientWidth, document.body.clientHeight);\n }\n // Try with document.documentElement.clientWidth / document.documentElement.clientHeight\n if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) {\n return new Dimension(document.documentElement.clientWidth, document.documentElement.clientHeight);\n }\n throw new Error('Unable to figure out browser width and height');\n}\nclass SizeUtils {\n // Adapted from WinJS\n // Converts a CSS positioning string for the specified element to pixels.\n static convertToPixels(element, value) {\n return parseFloat(value) || 0;\n }\n static getDimension(element, cssPropertyName, jsPropertyName) {\n const computedStyle = getComputedStyle(element);\n const value = computedStyle ? computedStyle.getPropertyValue(cssPropertyName) : '0';\n return SizeUtils.convertToPixels(element, value);\n }\n static getBorderLeftWidth(element) {\n return SizeUtils.getDimension(element, 'border-left-width', 'borderLeftWidth');\n }\n static getBorderRightWidth(element) {\n return SizeUtils.getDimension(element, 'border-right-width', 'borderRightWidth');\n }\n static getBorderTopWidth(element) {\n return SizeUtils.getDimension(element, 'border-top-width', 'borderTopWidth');\n }\n static getBorderBottomWidth(element) {\n return SizeUtils.getDimension(element, 'border-bottom-width', 'borderBottomWidth');\n }\n static getPaddingLeft(element) {\n return SizeUtils.getDimension(element, 'padding-left', 'paddingLeft');\n }\n static getPaddingRight(element) {\n return SizeUtils.getDimension(element, 'padding-right', 'paddingRight');\n }\n static getPaddingTop(element) {\n return SizeUtils.getDimension(element, 'padding-top', 'paddingTop');\n }\n static getPaddingBottom(element) {\n return SizeUtils.getDimension(element, 'padding-bottom', 'paddingBottom');\n }\n static getMarginLeft(element) {\n return SizeUtils.getDimension(element, 'margin-left', 'marginLeft');\n }\n static getMarginTop(element) {\n return SizeUtils.getDimension(element, 'margin-top', 'marginTop');\n }\n static getMarginRight(element) {\n return SizeUtils.getDimension(element, 'margin-right', 'marginRight');\n }\n static getMarginBottom(element) {\n return SizeUtils.getDimension(element, 'margin-bottom', 'marginBottom');\n }\n}\nclass Dimension {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n with(width = this.width, height = this.height) {\n if (width !== this.width || height !== this.height) {\n return new Dimension(width, height);\n }\n else {\n return this;\n }\n }\n static is(obj) {\n return typeof obj === 'object' && typeof obj.height === 'number' && typeof obj.width === 'number';\n }\n static lift(obj) {\n if (obj instanceof Dimension) {\n return obj;\n }\n else {\n return new Dimension(obj.width, obj.height);\n }\n }\n static equals(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return a.width === b.width && a.height === b.height;\n }\n}\nDimension.None = new Dimension(0, 0);\nfunction getTopLeftOffset(element) {\n // Adapted from WinJS.Utilities.getPosition\n // and added borders to the mix\n let offsetParent = element.offsetParent;\n let top = element.offsetTop;\n let left = element.offsetLeft;\n while ((element = element.parentNode) !== null\n && element !== document.body\n && element !== document.documentElement) {\n top -= element.scrollTop;\n const c = isShadowRoot(element) ? null : getComputedStyle(element);\n if (c) {\n left -= c.direction !== 'rtl' ? element.scrollLeft : -element.scrollLeft;\n }\n if (element === offsetParent) {\n left += SizeUtils.getBorderLeftWidth(element);\n top += SizeUtils.getBorderTopWidth(element);\n top += element.offsetTop;\n left += element.offsetLeft;\n offsetParent = element.offsetParent;\n }\n }\n return {\n left: left,\n top: top\n };\n}\nfunction size(element, width, height) {\n if (typeof width === 'number') {\n element.style.width = `${width}px`;\n }\n if (typeof height === 'number') {\n element.style.height = `${height}px`;\n }\n}\n/**\n * Returns the position of a dom node relative to the entire page.\n */\nfunction getDomNodePagePosition(domNode) {\n const bb = domNode.getBoundingClientRect();\n return {\n left: bb.left + window.scrollX,\n top: bb.top + window.scrollY,\n width: bb.width,\n height: bb.height\n };\n}\n/**\n * Returns the effective zoom on a given element before window zoom level is applied\n */\nfunction getDomNodeZoomLevel(domNode) {\n let testElement = domNode;\n let zoom = 1.0;\n do {\n const elementZoomLevel = getComputedStyle(testElement).zoom;\n if (elementZoomLevel !== null && elementZoomLevel !== undefined && elementZoomLevel !== '1') {\n zoom *= elementZoomLevel;\n }\n testElement = testElement.parentElement;\n } while (testElement !== null && testElement !== document.documentElement);\n return zoom;\n}\n// Adapted from WinJS\n// Gets the width of the element, including margins.\nfunction getTotalWidth(element) {\n const margin = SizeUtils.getMarginLeft(element) + SizeUtils.getMarginRight(element);\n return element.offsetWidth + margin;\n}\nfunction getContentWidth(element) {\n const border = SizeUtils.getBorderLeftWidth(element) + SizeUtils.getBorderRightWidth(element);\n const padding = SizeUtils.getPaddingLeft(element) + SizeUtils.getPaddingRight(element);\n return element.offsetWidth - border - padding;\n}\n// Adapted from WinJS\n// Gets the height of the content of the specified element. The content height does not include borders or padding.\nfunction getContentHeight(element) {\n const border = SizeUtils.getBorderTopWidth(element) + SizeUtils.getBorderBottomWidth(element);\n const padding = SizeUtils.getPaddingTop(element) + SizeUtils.getPaddingBottom(element);\n return element.offsetHeight - border - padding;\n}\n// Adapted from WinJS\n// Gets the height of the element, including its margins.\nfunction getTotalHeight(element) {\n const margin = SizeUtils.getMarginTop(element) + SizeUtils.getMarginBottom(element);\n return element.offsetHeight + margin;\n}\n// ----------------------------------------------------------------------------------------\nfunction isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nfunction findParentWithClass(node, clazz, stopAtClazzOrNode) {\n while (node && node.nodeType === node.ELEMENT_NODE) {\n if (node.classList.contains(clazz)) {\n return node;\n }\n if (stopAtClazzOrNode) {\n if (typeof stopAtClazzOrNode === 'string') {\n if (node.classList.contains(stopAtClazzOrNode)) {\n return null;\n }\n }\n else {\n if (node === stopAtClazzOrNode) {\n return null;\n }\n }\n }\n node = node.parentNode;\n }\n return null;\n}\nfunction hasParentWithClass(node, clazz, stopAtClazzOrNode) {\n return !!findParentWithClass(node, clazz, stopAtClazzOrNode);\n}\nfunction isShadowRoot(node) {\n return (node && !!node.host && !!node.mode);\n}\nfunction isInShadowDOM(domNode) {\n return !!getShadowRoot(domNode);\n}\nfunction getShadowRoot(domNode) {\n while (domNode.parentNode) {\n if (domNode === document.body) {\n // reached the body\n return null;\n }\n domNode = domNode.parentNode;\n }\n return isShadowRoot(domNode) ? domNode : null;\n}\nfunction getActiveElement() {\n let result = document.activeElement;\n while (result === null || result === void 0 ? void 0 : result.shadowRoot) {\n result = result.shadowRoot.activeElement;\n }\n return result;\n}\nfunction createStyleSheet(container = document.getElementsByTagName('head')[0], beforeAppend) {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.media = 'screen';\n beforeAppend === null || beforeAppend === void 0 ? void 0 : beforeAppend(style);\n container.appendChild(style);\n return style;\n}\nlet _sharedStyleSheet = null;\nfunction getSharedStyleSheet() {\n if (!_sharedStyleSheet) {\n _sharedStyleSheet = createStyleSheet();\n }\n return _sharedStyleSheet;\n}\nfunction getDynamicStyleSheetRules(style) {\n var _a, _b;\n if ((_a = style === null || style === void 0 ? void 0 : style.sheet) === null || _a === void 0 ? void 0 : _a.rules) {\n // Chrome, IE\n return style.sheet.rules;\n }\n if ((_b = style === null || style === void 0 ? void 0 : style.sheet) === null || _b === void 0 ? void 0 : _b.cssRules) {\n // FF\n return style.sheet.cssRules;\n }\n return [];\n}\nfunction createCSSRule(selector, cssText, style = getSharedStyleSheet()) {\n if (!style || !cssText) {\n return;\n }\n style.sheet.insertRule(selector + '{' + cssText + '}', 0);\n}\nfunction removeCSSRulesContainingSelector(ruleName, style = getSharedStyleSheet()) {\n if (!style) {\n return;\n }\n const rules = getDynamicStyleSheetRules(style);\n const toDelete = [];\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n if (rule.selectorText.indexOf(ruleName) !== -1) {\n toDelete.push(i);\n }\n }\n for (let i = toDelete.length - 1; i >= 0; i--) {\n style.sheet.deleteRule(toDelete[i]);\n }\n}\nfunction isHTMLElement(o) {\n if (typeof HTMLElement === 'object') {\n return o instanceof HTMLElement;\n }\n return o && typeof o === 'object' && o.nodeType === 1 && typeof o.nodeName === 'string';\n}\nconst EventType = {\n // Mouse\n CLICK: 'click',\n AUXCLICK: 'auxclick',\n DBLCLICK: 'dblclick',\n MOUSE_UP: 'mouseup',\n MOUSE_DOWN: 'mousedown',\n MOUSE_OVER: 'mouseover',\n MOUSE_MOVE: 'mousemove',\n MOUSE_OUT: 'mouseout',\n MOUSE_ENTER: 'mouseenter',\n MOUSE_LEAVE: 'mouseleave',\n MOUSE_WHEEL: 'wheel',\n POINTER_UP: 'pointerup',\n POINTER_DOWN: 'pointerdown',\n POINTER_MOVE: 'pointermove',\n POINTER_LEAVE: 'pointerleave',\n CONTEXT_MENU: 'contextmenu',\n WHEEL: 'wheel',\n // Keyboard\n KEY_DOWN: 'keydown',\n KEY_PRESS: 'keypress',\n KEY_UP: 'keyup',\n // HTML Document\n LOAD: 'load',\n BEFORE_UNLOAD: 'beforeunload',\n UNLOAD: 'unload',\n PAGE_SHOW: 'pageshow',\n PAGE_HIDE: 'pagehide',\n ABORT: 'abort',\n ERROR: 'error',\n RESIZE: 'resize',\n SCROLL: 'scroll',\n FULLSCREEN_CHANGE: 'fullscreenchange',\n WK_FULLSCREEN_CHANGE: 'webkitfullscreenchange',\n // Form\n SELECT: 'select',\n CHANGE: 'change',\n SUBMIT: 'submit',\n RESET: 'reset',\n FOCUS: 'focus',\n FOCUS_IN: 'focusin',\n FOCUS_OUT: 'focusout',\n BLUR: 'blur',\n INPUT: 'input',\n // Local Storage\n STORAGE: 'storage',\n // Drag\n DRAG_START: 'dragstart',\n DRAG: 'drag',\n DRAG_ENTER: 'dragenter',\n DRAG_LEAVE: 'dragleave',\n DRAG_OVER: 'dragover',\n DROP: 'drop',\n DRAG_END: 'dragend',\n // Animation\n ANIMATION_START: _browser_js__WEBPACK_IMPORTED_MODULE_0__.isWebKit ? 'webkitAnimationStart' : 'animationstart',\n ANIMATION_END: _browser_js__WEBPACK_IMPORTED_MODULE_0__.isWebKit ? 'webkitAnimationEnd' : 'animationend',\n ANIMATION_ITERATION: _browser_js__WEBPACK_IMPORTED_MODULE_0__.isWebKit ? 'webkitAnimationIteration' : 'animationiteration'\n};\nfunction isEventLike(obj) {\n const candidate = obj;\n return !!(candidate && typeof candidate.preventDefault === 'function' && typeof candidate.stopPropagation === 'function');\n}\nconst EventHelper = {\n stop: (e, cancelBubble) => {\n e.preventDefault();\n if (cancelBubble) {\n e.stopPropagation();\n }\n return e;\n }\n};\nfunction saveParentsScrollTop(node) {\n const r = [];\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\n r[i] = node.scrollTop;\n node = node.parentNode;\n }\n return r;\n}\nfunction restoreParentsScrollTop(node, state) {\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\n if (node.scrollTop !== state[i]) {\n node.scrollTop = state[i];\n }\n node = node.parentNode;\n }\n}\nclass FocusTracker extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.Disposable {\n static hasFocusWithin(element) {\n const shadowRoot = getShadowRoot(element);\n const activeElement = (shadowRoot ? shadowRoot.activeElement : document.activeElement);\n return isAncestor(activeElement, element);\n }\n constructor(element) {\n super();\n this._onDidFocus = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this.onDidBlur = this._onDidBlur.event;\n let hasFocus = FocusTracker.hasFocusWithin(element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = FocusTracker.hasFocusWithin(element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this._register(addDisposableListener(element, EventType.FOCUS, onFocus, true));\n this._register(addDisposableListener(element, EventType.BLUR, onBlur, true));\n this._register(addDisposableListener(element, EventType.FOCUS_IN, () => this._refreshStateHandler()));\n this._register(addDisposableListener(element, EventType.FOCUS_OUT, () => this._refreshStateHandler()));\n }\n}\n/**\n * Creates a new `IFocusTracker` instance that tracks focus changes on the given `element` and its descendants.\n *\n * @param element The `HTMLElement` or `Window` to track focus changes on.\n * @returns An `IFocusTracker` instance.\n */\nfunction trackFocus(element) {\n return new FocusTracker(element);\n}\nfunction append(parent, ...children) {\n parent.append(...children);\n if (children.length === 1 && typeof children[0] !== 'string') {\n return children[0];\n }\n}\nfunction prepend(parent, child) {\n parent.insertBefore(child, parent.firstChild);\n return child;\n}\n/**\n * Removes all children from `parent` and appends `children`\n */\nfunction reset(parent, ...children) {\n parent.innerText = '';\n append(parent, ...children);\n}\nconst SELECTOR_REGEX = /([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;\nvar Namespace;\n(function (Namespace) {\n Namespace[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n Namespace[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n})(Namespace || (Namespace = {}));\nfunction _$(namespace, description, attrs, ...children) {\n const match = SELECTOR_REGEX.exec(description);\n if (!match) {\n throw new Error('Bad use of emmet');\n }\n const tagName = match[1] || 'div';\n let result;\n if (namespace !== Namespace.HTML) {\n result = document.createElementNS(namespace, tagName);\n }\n else {\n result = document.createElement(tagName);\n }\n if (match[3]) {\n result.id = match[3];\n }\n if (match[4]) {\n result.className = match[4].replace(/\\./g, ' ').trim();\n }\n if (attrs) {\n Object.entries(attrs).forEach(([name, value]) => {\n if (typeof value === 'undefined') {\n return;\n }\n if (/^on\\w+$/.test(name)) {\n result[name] = value;\n }\n else if (name === 'selected') {\n if (value) {\n result.setAttribute(name, 'true');\n }\n }\n else {\n result.setAttribute(name, value);\n }\n });\n }\n result.append(...children);\n return result;\n}\nfunction $(description, attrs, ...children) {\n return _$(Namespace.HTML, description, attrs, ...children);\n}\n$.SVG = function (description, attrs, ...children) {\n return _$(Namespace.SVG, description, attrs, ...children);\n};\nfunction setVisibility(visible, ...elements) {\n if (visible) {\n show(...elements);\n }\n else {\n hide(...elements);\n }\n}\nfunction show(...elements) {\n for (const element of elements) {\n element.style.display = '';\n element.removeAttribute('aria-hidden');\n }\n}\nfunction hide(...elements) {\n for (const element of elements) {\n element.style.display = 'none';\n element.setAttribute('aria-hidden', 'true');\n }\n}\n/**\n * Find a value usable for a dom node size such that the likelihood that it would be\n * displayed with constant screen pixels size is as high as possible.\n *\n * e.g. We would desire for the cursors to be 2px (CSS px) wide. Under a devicePixelRatio\n * of 1.25, the cursor will be 2.5 screen pixels wide. Depending on how the dom node aligns/\"snaps\"\n * with the screen pixels, it will sometimes be rendered with 2 screen pixels, and sometimes with 3 screen pixels.\n */\nfunction computeScreenAwareSize(cssPx) {\n const screenPx = window.devicePixelRatio * cssPx;\n return Math.max(1, Math.floor(screenPx)) / window.devicePixelRatio;\n}\n/**\n * Open safely a new window. This is the best way to do so, but you cannot tell\n * if the window was opened or if it was blocked by the browser's popup blocker.\n * If you want to tell if the browser blocked the new window, use {@link windowOpenWithSuccess}.\n *\n * See https://github.com/microsoft/monaco-editor/issues/601\n * To protect against malicious code in the linked site, particularly phishing attempts,\n * the window.opener should be set to null to prevent the linked site from having access\n * to change the location of the current page.\n * See https://mathiasbynens.github.io/rel-noopener/\n */\nfunction windowOpenNoOpener(url) {\n // By using 'noopener' in the `windowFeatures` argument, the newly created window will\n // not be able to use `window.opener` to reach back to the current page.\n // See https://stackoverflow.com/a/46958731\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/open#noopener\n // However, this also doesn't allow us to realize if the browser blocked\n // the creation of the window.\n window.open(url, '_blank', 'noopener');\n}\nfunction animate(fn) {\n const step = () => {\n fn();\n stepDisposable = scheduleAtNextAnimationFrame(step);\n };\n let stepDisposable = scheduleAtNextAnimationFrame(step);\n return (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.toDisposable)(() => stepDisposable.dispose());\n}\n_common_network_js__WEBPACK_IMPORTED_MODULE_8__.RemoteAuthorities.setPreferredWebSchema(/^https:/.test(window.location.href) ? 'https' : 'http');\n/**\n * returns url('...')\n */\nfunction asCSSUrl(uri) {\n if (!uri) {\n return `url('')`;\n }\n return `url('${_common_network_js__WEBPACK_IMPORTED_MODULE_8__.FileAccess.uriToBrowserUri(uri).toString(true).replace(/'/g, '%27')}')`;\n}\nfunction asCSSPropertyValue(value) {\n return `'${value.replace(/'/g, '%27')}'`;\n}\nfunction asCssValueWithDefault(cssPropertyValue, dflt) {\n if (cssPropertyValue !== undefined) {\n const variableMatch = cssPropertyValue.match(/^\\s*var\\((.+)\\)$/);\n if (variableMatch) {\n const varArguments = variableMatch[1].split(',', 2);\n if (varArguments.length === 2) {\n dflt = asCssValueWithDefault(varArguments[1].trim(), dflt);\n }\n return `var(${varArguments[0]}, ${dflt})`;\n }\n return cssPropertyValue;\n }\n return dflt;\n}\n// -- sanitize and trusted html\n/**\n * Hooks dompurify using `afterSanitizeAttributes` to check that all `href` and `src`\n * attributes are valid.\n */\nfunction hookDomPurifyHrefAndSrcSanitizer(allowedProtocols, allowDataImages = false) {\n // https://github.com/cure53/DOMPurify/blob/main/demos/hooks-scheme-allowlist.html\n // build an anchor to map URLs to\n const anchor = document.createElement('a');\n _dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_6__.addHook('afterSanitizeAttributes', (node) => {\n // check all href/src attributes for validity\n for (const attr of ['href', 'src']) {\n if (node.hasAttribute(attr)) {\n const attrValue = node.getAttribute(attr);\n if (attr === 'href' && attrValue.startsWith('#')) {\n // Allow fragment links\n continue;\n }\n anchor.href = attrValue;\n if (!allowedProtocols.includes(anchor.protocol.replace(/:$/, ''))) {\n if (allowDataImages && attr === 'src' && anchor.href.startsWith('data:')) {\n continue;\n }\n node.removeAttribute(attr);\n }\n }\n }\n });\n return (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.toDisposable)(() => {\n _dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_6__.removeHook('afterSanitizeAttributes');\n });\n}\n/**\n * List of safe, non-input html tags.\n */\nconst basicMarkupHtmlTags = Object.freeze([\n 'a',\n 'abbr',\n 'b',\n 'bdo',\n 'blockquote',\n 'br',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'figcaption',\n 'figure',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'ins',\n 'kbd',\n 'label',\n 'li',\n 'mark',\n 'ol',\n 'p',\n 'pre',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 'samp',\n 'small',\n 'small',\n 'source',\n 'span',\n 'strike',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]);\nconst defaultDomPurifyConfig = Object.freeze({\n ALLOWED_TAGS: ['a', 'button', 'blockquote', 'code', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'input', 'label', 'li', 'p', 'pre', 'select', 'small', 'span', 'strong', 'textarea', 'ul', 'ol'],\n ALLOWED_ATTR: ['href', 'data-href', 'data-command', 'target', 'title', 'name', 'src', 'alt', 'class', 'id', 'role', 'tabindex', 'style', 'data-code', 'width', 'height', 'align', 'x-dispatch', 'required', 'checked', 'placeholder', 'type', 'start'],\n RETURN_DOM: false,\n RETURN_DOM_FRAGMENT: false,\n RETURN_TRUSTED_TYPE: true\n});\nclass ModifierKeyEmitter extends _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter {\n constructor() {\n super();\n this._subscriptions = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.DisposableStore();\n this._keyStatus = {\n altKey: false,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false\n };\n this._subscriptions.add(addDisposableListener(window, 'keydown', e => {\n if (e.defaultPrevented) {\n return;\n }\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e);\n // If Alt-key keydown event is repeated, ignore it #112347\n // Only known to be necessary for Alt-Key at the moment #115810\n if (event.keyCode === 6 /* KeyCode.Alt */ && e.repeat) {\n return;\n }\n if (e.altKey && !this._keyStatus.altKey) {\n this._keyStatus.lastKeyPressed = 'alt';\n }\n else if (e.ctrlKey && !this._keyStatus.ctrlKey) {\n this._keyStatus.lastKeyPressed = 'ctrl';\n }\n else if (e.metaKey && !this._keyStatus.metaKey) {\n this._keyStatus.lastKeyPressed = 'meta';\n }\n else if (e.shiftKey && !this._keyStatus.shiftKey) {\n this._keyStatus.lastKeyPressed = 'shift';\n }\n else if (event.keyCode !== 6 /* KeyCode.Alt */) {\n this._keyStatus.lastKeyPressed = undefined;\n }\n else {\n return;\n }\n this._keyStatus.altKey = e.altKey;\n this._keyStatus.ctrlKey = e.ctrlKey;\n this._keyStatus.metaKey = e.metaKey;\n this._keyStatus.shiftKey = e.shiftKey;\n if (this._keyStatus.lastKeyPressed) {\n this._keyStatus.event = e;\n this.fire(this._keyStatus);\n }\n }, true));\n this._subscriptions.add(addDisposableListener(window, 'keyup', e => {\n if (e.defaultPrevented) {\n return;\n }\n if (!e.altKey && this._keyStatus.altKey) {\n this._keyStatus.lastKeyReleased = 'alt';\n }\n else if (!e.ctrlKey && this._keyStatus.ctrlKey) {\n this._keyStatus.lastKeyReleased = 'ctrl';\n }\n else if (!e.metaKey && this._keyStatus.metaKey) {\n this._keyStatus.lastKeyReleased = 'meta';\n }\n else if (!e.shiftKey && this._keyStatus.shiftKey) {\n this._keyStatus.lastKeyReleased = 'shift';\n }\n else {\n this._keyStatus.lastKeyReleased = undefined;\n }\n if (this._keyStatus.lastKeyPressed !== this._keyStatus.lastKeyReleased) {\n this._keyStatus.lastKeyPressed = undefined;\n }\n this._keyStatus.altKey = e.altKey;\n this._keyStatus.ctrlKey = e.ctrlKey;\n this._keyStatus.metaKey = e.metaKey;\n this._keyStatus.shiftKey = e.shiftKey;\n if (this._keyStatus.lastKeyReleased) {\n this._keyStatus.event = e;\n this.fire(this._keyStatus);\n }\n }, true));\n this._subscriptions.add(addDisposableListener(document.body, 'mousedown', () => {\n this._keyStatus.lastKeyPressed = undefined;\n }, true));\n this._subscriptions.add(addDisposableListener(document.body, 'mouseup', () => {\n this._keyStatus.lastKeyPressed = undefined;\n }, true));\n this._subscriptions.add(addDisposableListener(document.body, 'mousemove', e => {\n if (e.buttons) {\n this._keyStatus.lastKeyPressed = undefined;\n }\n }, true));\n this._subscriptions.add(addDisposableListener(window, 'blur', () => {\n this.resetKeyStatus();\n }));\n }\n get keyStatus() {\n return this._keyStatus;\n }\n /**\n * Allows to explicitly reset the key status based on more knowledge (#109062)\n */\n resetKeyStatus() {\n this.doResetKeyStatus();\n this.fire(this._keyStatus);\n }\n doResetKeyStatus() {\n this._keyStatus = {\n altKey: false,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false\n };\n }\n static getInstance() {\n if (!ModifierKeyEmitter.instance) {\n ModifierKeyEmitter.instance = new ModifierKeyEmitter();\n }\n return ModifierKeyEmitter.instance;\n }\n dispose() {\n super.dispose();\n this._subscriptions.dispose();\n }\n}\nclass DragAndDropObserver extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.Disposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n // A helper to fix issues with repeated DRAG_ENTER / DRAG_LEAVE\n // calls see https://github.com/microsoft/vscode/issues/14470\n // when the element has child elements where the events are fired\n // repeadedly.\n this.counter = 0;\n // Allows to measure the duration of the drag operation.\n this.dragStartTime = 0;\n this.registerListeners();\n }\n registerListeners() {\n this._register(addDisposableListener(this.element, EventType.DRAG_ENTER, (e) => {\n this.counter++;\n this.dragStartTime = e.timeStamp;\n this.callbacks.onDragEnter(e);\n }));\n this._register(addDisposableListener(this.element, EventType.DRAG_OVER, (e) => {\n var _a, _b;\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n (_b = (_a = this.callbacks).onDragOver) === null || _b === void 0 ? void 0 : _b.call(_a, e, e.timeStamp - this.dragStartTime);\n }));\n this._register(addDisposableListener(this.element, EventType.DRAG_LEAVE, (e) => {\n this.counter--;\n if (this.counter === 0) {\n this.dragStartTime = 0;\n this.callbacks.onDragLeave(e);\n }\n }));\n this._register(addDisposableListener(this.element, EventType.DRAG_END, (e) => {\n this.counter = 0;\n this.dragStartTime = 0;\n this.callbacks.onDragEnd(e);\n }));\n this._register(addDisposableListener(this.element, EventType.DROP, (e) => {\n this.counter = 0;\n this.dragStartTime = 0;\n this.callbacks.onDrop(e);\n }));\n }\n}\nconst H_REGEX = /(?[\\w\\-]+)?(?:#(?[\\w\\-]+))?(?(?:\\.(?:[\\w\\-]+))*)(?:@(?(?:[\\w\\_])+))?/;\nfunction h(tag, ...args) {\n let attributes;\n let children;\n if (Array.isArray(args[0])) {\n attributes = {};\n children = args[0];\n }\n else {\n attributes = args[0] || {};\n children = args[1];\n }\n const match = H_REGEX.exec(tag);\n if (!match || !match.groups) {\n throw new Error('Bad use of h');\n }\n const tagName = match.groups['tag'] || 'div';\n const el = document.createElement(tagName);\n if (match.groups['id']) {\n el.id = match.groups['id'];\n }\n const classNames = [];\n if (match.groups['class']) {\n for (const className of match.groups['class'].split('.')) {\n if (className !== '') {\n classNames.push(className);\n }\n }\n }\n if (attributes.className !== undefined) {\n for (const className of attributes.className.split('.')) {\n if (className !== '') {\n classNames.push(className);\n }\n }\n }\n if (classNames.length > 0) {\n el.className = classNames.join(' ');\n }\n const result = {};\n if (match.groups['name']) {\n result[match.groups['name']] = el;\n }\n if (children) {\n for (const c of children) {\n if (c instanceof HTMLElement) {\n el.appendChild(c);\n }\n else if (typeof c === 'string') {\n el.append(c);\n }\n else if ('root' in c) {\n Object.assign(result, c);\n el.appendChild(c.root);\n }\n }\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (key === 'className') {\n continue;\n }\n else if (key === 'style') {\n for (const [cssKey, cssValue] of Object.entries(value)) {\n el.style.setProperty(camelCaseToHyphenCase(cssKey), typeof cssValue === 'number' ? cssValue + 'px' : '' + cssValue);\n }\n }\n else if (key === 'tabIndex') {\n el.tabIndex = value;\n }\n else {\n el.setAttribute(camelCaseToHyphenCase(key), value.toString());\n }\n }\n result['root'] = el;\n return result;\n}\nfunction camelCaseToHyphenCase(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/dom.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/dompurify/dompurify.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/dompurify/dompurify.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addHook: () => (/* binding */ addHook),\n/* harmony export */ clearConfig: () => (/* binding */ clearConfig),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ isSupported: () => (/* binding */ isSupported),\n/* harmony export */ isValidAttribute: () => (/* binding */ isValidAttribute),\n/* harmony export */ removeAllHooks: () => (/* binding */ removeAllHooks),\n/* harmony export */ removeHook: () => (/* binding */ removeHook),\n/* harmony export */ removeHooks: () => (/* binding */ removeHooks),\n/* harmony export */ sanitize: () => (/* binding */ sanitize),\n/* harmony export */ setConfig: () => (/* binding */ setConfig),\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\n/*! @license DOMPurify 2.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.1/LICENSE */\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\n\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\n\nvar regExpTest = unapply(RegExp.prototype.test);\n\nvar typeErrorCreate = unconstruct(TypeError);\n\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\n\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\nvar mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\nvar text = freeze(['#text']);\n\nvar html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\nvar svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.1';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, 'text/html');\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = stringToLowerCase(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/';\n },\n paragraph: (text) => {\n return `

${text}

`;\n },\n link: (href, title, text) => {\n if (typeof href !== 'string') {\n return '';\n }\n // Remove markdown escapes. Workaround for https://github.com/chjj/marked/issues/829\n if (href === text) { // raw link case\n text = (0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_9__.removeMarkdownEscapes)(text);\n }\n title = typeof title === 'string' ? (0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_9__.escapeDoubleQuotes)((0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_9__.removeMarkdownEscapes)(title)) : '';\n href = (0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_9__.removeMarkdownEscapes)(href);\n // HTML Encode href\n href = href.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n return `${text}`;\n },\n});\n/**\n * Low-level way create a html element from a markdown string.\n *\n * **Note** that for most cases you should be using [`MarkdownRenderer`](./src/vs/editor/contrib/markdownRenderer/browser/markdownRenderer.ts)\n * which comes with support for pretty code block rendering and which uses the default way of handling links.\n */\nfunction renderMarkdown(markdown, options = {}, markedOptions = {}) {\n var _a, _b;\n const disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_13__.DisposableStore();\n let isDisposed = false;\n const element = (0,_formattedTextRenderer_js__WEBPACK_IMPORTED_MODULE_3__.createElement)(options);\n const _uriMassage = function (part) {\n let data;\n try {\n data = (0,_common_marshalling_js__WEBPACK_IMPORTED_MODULE_15__.parse)(decodeURIComponent(part));\n }\n catch (e) {\n // ignore\n }\n if (!data) {\n return part;\n }\n data = (0,_common_objects_js__WEBPACK_IMPORTED_MODULE_17__.cloneAndChange)(data, value => {\n if (markdown.uris && markdown.uris[value]) {\n return _common_uri_js__WEBPACK_IMPORTED_MODULE_20__.URI.revive(markdown.uris[value]);\n }\n else {\n return undefined;\n }\n });\n return encodeURIComponent(JSON.stringify(data));\n };\n const _href = function (href, isDomUri) {\n const data = markdown.uris && markdown.uris[href];\n let uri = _common_uri_js__WEBPACK_IMPORTED_MODULE_20__.URI.revive(data);\n if (isDomUri) {\n if (href.startsWith(_common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.data + ':')) {\n return href;\n }\n if (!uri) {\n uri = _common_uri_js__WEBPACK_IMPORTED_MODULE_20__.URI.parse(href);\n }\n // this URI will end up as \"src\"-attribute of a dom node\n // and because of that special rewriting needs to be done\n // so that the URI uses a protocol that's understood by\n // browsers (like http or https)\n return _common_network_js__WEBPACK_IMPORTED_MODULE_16__.FileAccess.uriToBrowserUri(uri).toString(true);\n }\n if (!uri) {\n return href;\n }\n if (_common_uri_js__WEBPACK_IMPORTED_MODULE_20__.URI.parse(href).toString() === uri.toString()) {\n return href; // no transformation performed\n }\n if (uri.query) {\n uri = uri.with({ query: _uriMassage(uri.query) });\n }\n return uri.toString();\n };\n const renderer = new _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.Renderer();\n renderer.image = defaultMarkedRenderers.image;\n renderer.link = defaultMarkedRenderers.link;\n renderer.paragraph = defaultMarkedRenderers.paragraph;\n // Will collect [id, renderedElement] tuples\n const codeBlocks = [];\n const syncCodeBlocks = [];\n if (options.codeBlockRendererSync) {\n renderer.code = (code, lang) => {\n const id = _common_idGenerator_js__WEBPACK_IMPORTED_MODULE_11__.defaultGenerator.nextId();\n const value = options.codeBlockRendererSync(postProcessCodeBlockLanguageId(lang), code);\n syncCodeBlocks.push([id, value]);\n return `
${(0,_common_strings_js__WEBPACK_IMPORTED_MODULE_19__.escape)(code)}
`;\n };\n }\n else if (options.codeBlockRenderer) {\n renderer.code = (code, lang) => {\n const id = _common_idGenerator_js__WEBPACK_IMPORTED_MODULE_11__.defaultGenerator.nextId();\n const value = options.codeBlockRenderer(postProcessCodeBlockLanguageId(lang), code);\n codeBlocks.push(value.then(element => [id, element]));\n return `
${(0,_common_strings_js__WEBPACK_IMPORTED_MODULE_19__.escape)(code)}
`;\n };\n }\n if (options.actionHandler) {\n const _activateLink = function (event) {\n let target = event.target;\n if (target.tagName !== 'A') {\n target = target.parentElement;\n if (!target || target.tagName !== 'A') {\n return;\n }\n }\n try {\n let href = target.dataset['href'];\n if (href) {\n if (markdown.baseUri) {\n href = resolveWithBaseUri(_common_uri_js__WEBPACK_IMPORTED_MODULE_20__.URI.from(markdown.baseUri), href);\n }\n options.actionHandler.callback(href, event);\n }\n }\n catch (err) {\n (0,_common_errors_js__WEBPACK_IMPORTED_MODULE_7__.onUnexpectedError)(err);\n }\n finally {\n event.preventDefault();\n }\n };\n const onClick = options.actionHandler.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(element, 'click'));\n const onAuxClick = options.actionHandler.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(element, 'auxclick'));\n options.actionHandler.disposables.add(_common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.any(onClick.event, onAuxClick.event)(e => {\n const mouseEvent = new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_5__.StandardMouseEvent(e);\n if (!mouseEvent.leftButton && !mouseEvent.middleButton) {\n return;\n }\n _activateLink(mouseEvent);\n }));\n options.actionHandler.disposables.add(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(element, 'keydown', (e) => {\n const keyboardEvent = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_4__.StandardKeyboardEvent(e);\n if (!keyboardEvent.equals(10 /* KeyCode.Space */) && !keyboardEvent.equals(3 /* KeyCode.Enter */)) {\n return;\n }\n _activateLink(keyboardEvent);\n }));\n }\n if (!markdown.supportHtml) {\n // TODO: Can we deprecated this in favor of 'supportHtml'?\n // Use our own sanitizer so that we can let through only spans.\n // Otherwise, we'd be letting all html be rendered.\n // If we want to allow markdown permitted tags, then we can delete sanitizer and sanitize.\n // We always pass the output through dompurify after this so that we don't rely on\n // marked for sanitization.\n markedOptions.sanitizer = (html) => {\n const match = markdown.isTrusted ? html.match(/^(]+>)|(<\\/\\s*span>)$/) : undefined;\n return match ? html : '';\n };\n markedOptions.sanitize = true;\n markedOptions.silent = true;\n }\n markedOptions.renderer = renderer;\n // values that are too long will freeze the UI\n let value = (_a = markdown.value) !== null && _a !== void 0 ? _a : '';\n if (value.length > 100000) {\n value = `${value.substr(0, 100000)}…`;\n }\n // escape theme icons\n if (markdown.supportThemeIcons) {\n value = (0,_common_iconLabels_js__WEBPACK_IMPORTED_MODULE_10__.markdownEscapeEscapedIcons)(value);\n }\n let renderedMarkdown;\n if (options.fillInIncompleteTokens) {\n // The defaults are applied by parse but not lexer()/parser(), and they need to be present\n const opts = Object.assign(Object.assign({}, _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.defaults), markedOptions);\n const tokens = _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.lexer(value, opts);\n const newTokens = fillInIncompleteTokens(tokens);\n renderedMarkdown = _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.parser(newTokens, opts);\n }\n else {\n renderedMarkdown = _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.parse(value, markedOptions);\n }\n // Rewrite theme icons\n if (markdown.supportThemeIcons) {\n const elements = (0,_ui_iconLabel_iconLabels_js__WEBPACK_IMPORTED_MODULE_6__.renderLabelWithIcons)(renderedMarkdown);\n renderedMarkdown = elements.map(e => typeof e === 'string' ? e : e.outerHTML).join('');\n }\n const htmlParser = new DOMParser();\n const markdownHtmlDoc = htmlParser.parseFromString(sanitizeRenderedMarkdown(markdown, renderedMarkdown), 'text/html');\n markdownHtmlDoc.body.querySelectorAll('img')\n .forEach(img => {\n const src = img.getAttribute('src'); // Get the raw 'src' attribute value as text, not the resolved 'src'\n if (src) {\n let href = src;\n try {\n if (markdown.baseUri) { // absolute or relative local path, or file: uri\n href = resolveWithBaseUri(_common_uri_js__WEBPACK_IMPORTED_MODULE_20__.URI.from(markdown.baseUri), href);\n }\n }\n catch (err) { }\n img.src = _href(href, true);\n }\n });\n markdownHtmlDoc.body.querySelectorAll('a')\n .forEach(a => {\n const href = a.getAttribute('href'); // Get the raw 'href' attribute value as text, not the resolved 'href'\n a.setAttribute('href', ''); // Clear out href. We use the `data-href` for handling clicks instead\n if (!href\n || /^data:|javascript:/i.test(href)\n || (/^command:/i.test(href) && !markdown.isTrusted)\n || /^command:(\\/\\/\\/)?_workbench\\.downloadResource/i.test(href)) {\n // drop the link\n a.replaceWith(...a.childNodes);\n }\n else {\n let resolvedHref = _href(href, false);\n if (markdown.baseUri) {\n resolvedHref = resolveWithBaseUri(_common_uri_js__WEBPACK_IMPORTED_MODULE_20__.URI.from(markdown.baseUri), href);\n }\n a.dataset.href = resolvedHref;\n }\n });\n element.innerHTML = sanitizeRenderedMarkdown(markdown, markdownHtmlDoc.body.innerHTML);\n if (codeBlocks.length > 0) {\n Promise.all(codeBlocks).then((tuples) => {\n var _a, _b;\n if (isDisposed) {\n return;\n }\n const renderedElements = new Map(tuples);\n const placeholderElements = element.querySelectorAll(`div[data-code]`);\n for (const placeholderElement of placeholderElements) {\n const renderedElement = renderedElements.get((_a = placeholderElement.dataset['code']) !== null && _a !== void 0 ? _a : '');\n if (renderedElement) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.reset(placeholderElement, renderedElement);\n }\n }\n (_b = options.asyncRenderCallback) === null || _b === void 0 ? void 0 : _b.call(options);\n });\n }\n else if (syncCodeBlocks.length > 0) {\n const renderedElements = new Map(syncCodeBlocks);\n const placeholderElements = element.querySelectorAll(`div[data-code]`);\n for (const placeholderElement of placeholderElements) {\n const renderedElement = renderedElements.get((_b = placeholderElement.dataset['code']) !== null && _b !== void 0 ? _b : '');\n if (renderedElement) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.reset(placeholderElement, renderedElement);\n }\n }\n }\n // signal size changes for image tags\n if (options.asyncRenderCallback) {\n for (const img of element.getElementsByTagName('img')) {\n const listener = disposables.add(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(img, 'load', () => {\n listener.dispose();\n options.asyncRenderCallback();\n }));\n }\n }\n return {\n element,\n dispose: () => {\n isDisposed = true;\n disposables.dispose();\n }\n };\n}\nfunction postProcessCodeBlockLanguageId(lang) {\n if (!lang) {\n return '';\n }\n const parts = lang.split(/[\\s+|:|,|\\{|\\?]/, 1);\n if (parts.length) {\n return parts[0];\n }\n return lang;\n}\nfunction resolveWithBaseUri(baseUri, href) {\n const hasScheme = /^\\w[\\w\\d+.-]*:/.test(href);\n if (hasScheme) {\n return href;\n }\n if (baseUri.path.endsWith('/')) {\n return (0,_common_resources_js__WEBPACK_IMPORTED_MODULE_18__.resolvePath)(baseUri, href).toString();\n }\n else {\n return (0,_common_resources_js__WEBPACK_IMPORTED_MODULE_18__.resolvePath)((0,_common_resources_js__WEBPACK_IMPORTED_MODULE_18__.dirname)(baseUri), href).toString();\n }\n}\nfunction sanitizeRenderedMarkdown(options, renderedMarkdown) {\n const { config, allowedSchemes } = getSanitizerOptions(options);\n _dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_1__.addHook('uponSanitizeAttribute', (element, e) => {\n if (e.attrName === 'style' || e.attrName === 'class') {\n if (element.tagName === 'SPAN') {\n if (e.attrName === 'style') {\n e.keepAttr = /^(color\\:(#[0-9a-fA-F]+|var\\(--vscode(-[a-zA-Z]+)+\\));)?(background-color\\:(#[0-9a-fA-F]+|var\\(--vscode(-[a-zA-Z]+)+\\));)?$/.test(e.attrValue);\n return;\n }\n else if (e.attrName === 'class') {\n e.keepAttr = /^codicon codicon-[a-z\\-]+( codicon-modifier-[a-z\\-]+)?$/.test(e.attrValue);\n return;\n }\n }\n e.keepAttr = false;\n return;\n }\n });\n const hook = _dom_js__WEBPACK_IMPORTED_MODULE_0__.hookDomPurifyHrefAndSrcSanitizer(allowedSchemes);\n try {\n return _dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_1__.sanitize(renderedMarkdown, Object.assign(Object.assign({}, config), { RETURN_TRUSTED_TYPE: true }));\n }\n finally {\n _dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_1__.removeHook('uponSanitizeAttribute');\n hook.dispose();\n }\n}\nconst allowedMarkdownAttr = [\n 'align',\n 'autoplay',\n 'alt',\n 'class',\n 'controls',\n 'data-code',\n 'data-href',\n 'height',\n 'href',\n 'loop',\n 'muted',\n 'playsinline',\n 'poster',\n 'src',\n 'style',\n 'target',\n 'title',\n 'width',\n 'start',\n];\nfunction getSanitizerOptions(options) {\n const allowedSchemes = [\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.http,\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.https,\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.mailto,\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.data,\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.file,\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.vscodeFileResource,\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.vscodeRemote,\n _common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.vscodeRemoteResource,\n ];\n if (options.isTrusted) {\n allowedSchemes.push(_common_network_js__WEBPACK_IMPORTED_MODULE_16__.Schemas.command);\n }\n return {\n config: {\n // allowedTags should included everything that markdown renders to.\n // Since we have our own sanitize function for marked, it's possible we missed some tag so let dompurify make sure.\n // HTML tags that can result from markdown are from reading https://spec.commonmark.org/0.29/\n // HTML table tags that can result from markdown are from https://github.github.com/gfm/#tables-extension-\n ALLOWED_TAGS: [..._dom_js__WEBPACK_IMPORTED_MODULE_0__.basicMarkupHtmlTags],\n ALLOWED_ATTR: allowedMarkdownAttr,\n ALLOW_UNKNOWN_PROTOCOLS: true,\n },\n allowedSchemes\n };\n}\n/**\n * Strips all markdown from `string`, if it's an IMarkdownString. For example\n * `# Header` would be output as `Header`. If it's not, the string is returned.\n */\nfunction renderStringAsPlaintext(string) {\n return typeof string === 'string' ? string : renderMarkdownAsPlaintext(string);\n}\n/**\n * Strips all markdown from `markdown`. For example `# Header` would be output as `Header`.\n */\nfunction renderMarkdownAsPlaintext(markdown) {\n var _a;\n // values that are too long will freeze the UI\n let value = (_a = markdown.value) !== null && _a !== void 0 ? _a : '';\n if (value.length > 100000) {\n value = `${value.substr(0, 100000)}…`;\n }\n const html = _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.parse(value, { renderer: plainTextRenderer.value }).replace(/&(#\\d+|[a-zA-Z]+);/g, m => { var _a; return (_a = unescapeInfo.get(m)) !== null && _a !== void 0 ? _a : m; });\n return sanitizeRenderedMarkdown({ isTrusted: false }, html).toString();\n}\nconst unescapeInfo = new Map([\n ['"', '\"'],\n [' ', ' '],\n ['&', '&'],\n [''', '\\''],\n ['<', '<'],\n ['>', '>'],\n]);\nconst plainTextRenderer = new _common_lazy_js__WEBPACK_IMPORTED_MODULE_12__.Lazy(() => {\n const renderer = new _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.Renderer();\n renderer.code = (code) => {\n return code;\n };\n renderer.blockquote = (quote) => {\n return quote;\n };\n renderer.html = (_html) => {\n return '';\n };\n renderer.heading = (text, _level, _raw) => {\n return text + '\\n';\n };\n renderer.hr = () => {\n return '';\n };\n renderer.list = (body, _ordered) => {\n return body;\n };\n renderer.listitem = (text) => {\n return text + '\\n';\n };\n renderer.paragraph = (text) => {\n return text + '\\n';\n };\n renderer.table = (header, body) => {\n return header + body + '\\n';\n };\n renderer.tablerow = (content) => {\n return content;\n };\n renderer.tablecell = (content, _flags) => {\n return content + ' ';\n };\n renderer.strong = (text) => {\n return text;\n };\n renderer.em = (text) => {\n return text;\n };\n renderer.codespan = (code) => {\n return code;\n };\n renderer.br = () => {\n return '\\n';\n };\n renderer.del = (text) => {\n return text;\n };\n renderer.image = (_href, _title, _text) => {\n return '';\n };\n renderer.text = (text) => {\n return text;\n };\n renderer.link = (_href, _title, text) => {\n return text;\n };\n return renderer;\n});\nfunction mergeRawTokenText(tokens) {\n let mergedTokenText = '';\n tokens.forEach(token => {\n mergedTokenText += token.raw;\n });\n return mergedTokenText;\n}\nfunction completeSingleLinePattern(token) {\n for (const subtoken of token.tokens) {\n if (subtoken.type === 'text') {\n const lines = subtoken.raw.split('\\n');\n const lastLine = lines[lines.length - 1];\n if (lastLine.includes('`')) {\n return completeCodespan(token);\n }\n else if (lastLine.includes('**')) {\n return completeDoublestar(token);\n }\n else if (lastLine.match(/\\*\\w/)) {\n return completeStar(token);\n }\n else if (lastLine.match(/(^|\\s)__\\w/)) {\n return completeDoubleUnderscore(token);\n }\n else if (lastLine.match(/(^|\\s)_\\w/)) {\n return completeUnderscore(token);\n }\n else if (lastLine.match(/(^|\\s)\\[.*\\]\\(\\w*/)) {\n return completeLinkTarget(token);\n }\n else if (lastLine.match(/(^|\\s)\\[\\w/)) {\n return completeLinkText(token);\n }\n }\n }\n return undefined;\n}\n// function completeListItemPattern(token: marked.Tokens.List): marked.Tokens.List | undefined {\n// \t// Patch up this one list item\n// \tconst lastItem = token.items[token.items.length - 1];\n// \tconst newList = completeSingleLinePattern(lastItem);\n// \tif (!newList || newList.type !== 'list') {\n// \t\t// Nothing to fix, or not a pattern we were expecting\n// \t\treturn;\n// \t}\n// \t// Re-parse the whole list with the last item replaced\n// \tconst completeList = marked.lexer(mergeRawTokenText(token.items.slice(0, token.items.length - 1)) + newList.items[0].raw);\n// \tif (completeList.length === 1 && completeList[0].type === 'list') {\n// \t\treturn completeList[0];\n// \t}\n// \t// Not a pattern we were expecting\n// \treturn undefined;\n// }\nfunction fillInIncompleteTokens(tokens) {\n let i;\n let newTokens;\n for (i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.type === 'paragraph' && token.raw.match(/(\\n|^)```/)) {\n // If the code block was complete, it would be in a type='code'\n newTokens = completeCodeBlock(tokens.slice(i));\n break;\n }\n if (token.type === 'paragraph' && token.raw.match(/(\\n|^)\\|/)) {\n newTokens = completeTable(tokens.slice(i));\n break;\n }\n // if (i === tokens.length - 1 && token.type === 'list') {\n // \tconst newListToken = completeListItemPattern(token);\n // \tif (newListToken) {\n // \t\tnewTokens = [newListToken];\n // \t\tbreak;\n // \t}\n // }\n if (i === tokens.length - 1 && token.type === 'paragraph') {\n // Only operates on a single token, because any newline that follows this should break these patterns\n const newToken = completeSingleLinePattern(token);\n if (newToken) {\n newTokens = [newToken];\n break;\n }\n }\n }\n if (newTokens) {\n const newTokensList = [\n ...tokens.slice(0, i),\n ...newTokens\n ];\n newTokensList.links = tokens.links;\n return newTokensList;\n }\n return tokens;\n}\nfunction completeCodeBlock(tokens) {\n const mergedRawText = mergeRawTokenText(tokens);\n return _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.lexer(mergedRawText + '\\n```');\n}\nfunction completeCodespan(token) {\n return completeWithString(token, '`');\n}\nfunction completeStar(tokens) {\n return completeWithString(tokens, '*');\n}\nfunction completeUnderscore(tokens) {\n return completeWithString(tokens, '_');\n}\nfunction completeLinkTarget(tokens) {\n return completeWithString(tokens, ')');\n}\nfunction completeLinkText(tokens) {\n return completeWithString(tokens, '](about:blank)');\n}\nfunction completeDoublestar(tokens) {\n return completeWithString(tokens, '**');\n}\nfunction completeDoubleUnderscore(tokens) {\n return completeWithString(tokens, '__');\n}\nfunction completeWithString(tokens, closingString) {\n const mergedRawText = mergeRawTokenText(Array.isArray(tokens) ? tokens : [tokens]);\n // If it was completed correctly, this should be a single token.\n // Expecting either a Paragraph or a List\n return _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.lexer(mergedRawText + closingString)[0];\n}\nfunction completeTable(tokens) {\n const mergedRawText = mergeRawTokenText(tokens);\n const lines = mergedRawText.split('\\n');\n let numCols; // The number of line1 col headers\n let hasSeparatorRow = false;\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n if (typeof numCols === 'undefined' && line.match(/^\\s*\\|/)) {\n const line1Matches = line.match(/(\\|[^\\|]+)(?=\\||$)/g);\n if (line1Matches) {\n numCols = line1Matches.length;\n }\n }\n else if (typeof numCols === 'number') {\n if (line.match(/^\\s*\\|/)) {\n if (i !== lines.length - 1) {\n // We got the line1 header row, and the line2 separator row, but there are more lines, and it wasn't parsed as a table!\n // That's strange and means that the table is probably malformed in the source, so I won't try to patch it up.\n return undefined;\n }\n // Got a line2 separator row- partial or complete, doesn't matter, we'll replace it with a correct one\n hasSeparatorRow = true;\n }\n else {\n // The line after the header row isn't a valid separator row, so the table is malformed, don't fix it up\n return undefined;\n }\n }\n }\n if (typeof numCols === 'number' && numCols > 0) {\n const prefixText = hasSeparatorRow ? lines.slice(0, -1).join('\\n') : mergedRawText;\n const line1EndsInPipe = !!prefixText.match(/\\|\\s*$/);\n const newRawText = prefixText + (line1EndsInPipe ? '' : '|') + `\\n|${' --- |'.repeat(numCols)}`;\n return _common_marked_marked_js__WEBPACK_IMPORTED_MODULE_14__.marked.lexer(newRawText);\n }\n return undefined;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/markdownRenderer.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js": +/*!**********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StandardMouseEvent: () => (/* binding */ StandardMouseEvent),\n/* harmony export */ StandardWheelEvent: () => (/* binding */ StandardWheelEvent)\n/* harmony export */ });\n/* harmony import */ var _browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _iframe_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./iframe.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/iframe.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nclass StandardMouseEvent {\n constructor(e) {\n this.timestamp = Date.now();\n this.browserEvent = e;\n this.leftButton = e.button === 0;\n this.middleButton = e.button === 1;\n this.rightButton = e.button === 2;\n this.buttons = e.buttons;\n this.target = e.target;\n this.detail = e.detail || 1;\n if (e.type === 'dblclick') {\n this.detail = 2;\n }\n this.ctrlKey = e.ctrlKey;\n this.shiftKey = e.shiftKey;\n this.altKey = e.altKey;\n this.metaKey = e.metaKey;\n if (typeof e.pageX === 'number') {\n this.posx = e.pageX;\n this.posy = e.pageY;\n }\n else {\n // Probably hit by MSGestureEvent\n this.posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n this.posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n // Find the position of the iframe this code is executing in relative to the iframe where the event was captured.\n const iframeOffsets = _iframe_js__WEBPACK_IMPORTED_MODULE_1__.IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(window, e.view);\n this.posx -= iframeOffsets.left;\n this.posy -= iframeOffsets.top;\n }\n preventDefault() {\n this.browserEvent.preventDefault();\n }\n stopPropagation() {\n this.browserEvent.stopPropagation();\n }\n}\nclass StandardWheelEvent {\n constructor(e, deltaX = 0, deltaY = 0) {\n this.browserEvent = e || null;\n this.target = e ? (e.target || e.targetNode || e.srcElement) : null;\n this.deltaY = deltaY;\n this.deltaX = deltaX;\n if (e) {\n // Old (deprecated) wheel events\n const e1 = e;\n const e2 = e;\n // vertical delta scroll\n if (typeof e1.wheelDeltaY !== 'undefined') {\n this.deltaY = e1.wheelDeltaY / 120;\n }\n else if (typeof e2.VERTICAL_AXIS !== 'undefined' && e2.axis === e2.VERTICAL_AXIS) {\n this.deltaY = -e2.detail / 3;\n }\n else if (e.type === 'wheel') {\n // Modern wheel event\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\n const ev = e;\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\n // the deltas are expressed in lines\n if (_browser_js__WEBPACK_IMPORTED_MODULE_0__.isFirefox && !_common_platform_js__WEBPACK_IMPORTED_MODULE_2__.isMacintosh) {\n this.deltaY = -e.deltaY / 3;\n }\n else {\n this.deltaY = -e.deltaY;\n }\n }\n else {\n this.deltaY = -e.deltaY / 40;\n }\n }\n // horizontal delta scroll\n if (typeof e1.wheelDeltaX !== 'undefined') {\n if (_browser_js__WEBPACK_IMPORTED_MODULE_0__.isSafari && _common_platform_js__WEBPACK_IMPORTED_MODULE_2__.isWindows) {\n this.deltaX = -(e1.wheelDeltaX / 120);\n }\n else {\n this.deltaX = e1.wheelDeltaX / 120;\n }\n }\n else if (typeof e2.HORIZONTAL_AXIS !== 'undefined' && e2.axis === e2.HORIZONTAL_AXIS) {\n this.deltaX = -e.detail / 3;\n }\n else if (e.type === 'wheel') {\n // Modern wheel event\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\n const ev = e;\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\n // the deltas are expressed in lines\n if (_browser_js__WEBPACK_IMPORTED_MODULE_0__.isFirefox && !_common_platform_js__WEBPACK_IMPORTED_MODULE_2__.isMacintosh) {\n this.deltaX = -e.deltaX / 3;\n }\n else {\n this.deltaX = -e.deltaX;\n }\n }\n else {\n this.deltaX = -e.deltaX / 40;\n }\n }\n // Assume a vertical scroll if nothing else worked\n if (this.deltaY === 0 && this.deltaX === 0 && e.wheelDelta) {\n this.deltaY = e.wheelDelta / 120;\n }\n }\n }\n preventDefault() {\n var _a;\n (_a = this.browserEvent) === null || _a === void 0 ? void 0 : _a.preventDefault();\n }\n stopPropagation() {\n var _a;\n (_a = this.browserEvent) === null || _a === void 0 ? void 0 : _a.stopPropagation();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/performance.js": +/*!***********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/performance.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ inputLatency: () => (/* binding */ inputLatency)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar inputLatency;\n(function (inputLatency) {\n const totalKeydownTime = { total: 0, min: Number.MAX_VALUE, max: 0 };\n const totalInputTime = Object.assign({}, totalKeydownTime);\n const totalRenderTime = Object.assign({}, totalKeydownTime);\n const totalInputLatencyTime = Object.assign({}, totalKeydownTime);\n let measurementsCount = 0;\n const state = {\n keydown: 0 /* EventPhase.Before */,\n input: 0 /* EventPhase.Before */,\n render: 0 /* EventPhase.Before */,\n };\n /**\n * Record the start of the keydown event.\n */\n function onKeyDown() {\n /** Direct Check C. See explanation in {@link recordIfFinished} */\n recordIfFinished();\n performance.mark('inputlatency/start');\n performance.mark('keydown/start');\n state.keydown = 1 /* EventPhase.InProgress */;\n queueMicrotask(markKeyDownEnd);\n }\n inputLatency.onKeyDown = onKeyDown;\n /**\n * Mark the end of the keydown event.\n */\n function markKeyDownEnd() {\n if (state.keydown === 1 /* EventPhase.InProgress */) {\n performance.mark('keydown/end');\n state.keydown = 2 /* EventPhase.Finished */;\n }\n }\n /**\n * Record the start of the beforeinput event.\n */\n function onBeforeInput() {\n performance.mark('input/start');\n state.input = 1 /* EventPhase.InProgress */;\n /** Schedule Task A. See explanation in {@link recordIfFinished} */\n scheduleRecordIfFinishedTask();\n }\n inputLatency.onBeforeInput = onBeforeInput;\n /**\n * Record the start of the input event.\n */\n function onInput() {\n if (state.input === 0 /* EventPhase.Before */) {\n // it looks like we didn't receive a `beforeinput`\n onBeforeInput();\n }\n queueMicrotask(markInputEnd);\n }\n inputLatency.onInput = onInput;\n function markInputEnd() {\n if (state.input === 1 /* EventPhase.InProgress */) {\n performance.mark('input/end');\n state.input = 2 /* EventPhase.Finished */;\n }\n }\n /**\n * Record the start of the keyup event.\n */\n function onKeyUp() {\n /** Direct Check D. See explanation in {@link recordIfFinished} */\n recordIfFinished();\n }\n inputLatency.onKeyUp = onKeyUp;\n /**\n * Record the start of the selectionchange event.\n */\n function onSelectionChange() {\n /** Direct Check E. See explanation in {@link recordIfFinished} */\n recordIfFinished();\n }\n inputLatency.onSelectionChange = onSelectionChange;\n /**\n * Record the start of the animation frame performing the rendering.\n */\n function onRenderStart() {\n // Render may be triggered during input, but we only measure the following animation frame\n if (state.keydown === 2 /* EventPhase.Finished */ && state.input === 2 /* EventPhase.Finished */ && state.render === 0 /* EventPhase.Before */) {\n // Only measure the first render after keyboard input\n performance.mark('render/start');\n state.render = 1 /* EventPhase.InProgress */;\n queueMicrotask(markRenderEnd);\n /** Schedule Task B. See explanation in {@link recordIfFinished} */\n scheduleRecordIfFinishedTask();\n }\n }\n inputLatency.onRenderStart = onRenderStart;\n /**\n * Mark the end of the animation frame performing the rendering.\n */\n function markRenderEnd() {\n if (state.render === 1 /* EventPhase.InProgress */) {\n performance.mark('render/end');\n state.render = 2 /* EventPhase.Finished */;\n }\n }\n function scheduleRecordIfFinishedTask() {\n // Here we can safely assume that the `setTimeout` will not be\n // artificially delayed by 4ms because we schedule it from\n // event handlers\n setTimeout(recordIfFinished);\n }\n /**\n * Record the input latency sample if input handling and rendering are finished.\n *\n * The challenge here is that we want to record the latency in such a way that it includes\n * also the layout and painting work the browser does during the animation frame task.\n *\n * Simply scheduling a new task (via `setTimeout`) from the animation frame task would\n * schedule the new task at the end of the task queue (after other code that uses `setTimeout`),\n * so we need to use multiple strategies to make sure our task runs before others:\n *\n * We schedule tasks (A and B):\n * - we schedule a task A (via a `setTimeout` call) when the input starts in `markInputStart`.\n * If the animation frame task is scheduled quickly by the browser, then task A has a very good\n * chance of being the very first task after the animation frame and thus will record the input latency.\n * - however, if the animation frame task is scheduled a bit later, then task A might execute\n * before the animation frame task. We therefore schedule another task B from `markRenderStart`.\n *\n * We do direct checks in browser event handlers (C, D, E):\n * - if the browser has multiple keydown events queued up, they will be scheduled before the `setTimeout` tasks,\n * so we do a direct check in the keydown event handler (C).\n * - depending on timing, sometimes the animation frame is scheduled even before the `keyup` event, so we\n * do a direct check there too (E).\n * - the browser oftentimes emits a `selectionchange` event after an `input`, so we do a direct check there (D).\n */\n function recordIfFinished() {\n if (state.keydown === 2 /* EventPhase.Finished */ && state.input === 2 /* EventPhase.Finished */ && state.render === 2 /* EventPhase.Finished */) {\n performance.mark('inputlatency/end');\n performance.measure('keydown', 'keydown/start', 'keydown/end');\n performance.measure('input', 'input/start', 'input/end');\n performance.measure('render', 'render/start', 'render/end');\n performance.measure('inputlatency', 'inputlatency/start', 'inputlatency/end');\n addMeasure('keydown', totalKeydownTime);\n addMeasure('input', totalInputTime);\n addMeasure('render', totalRenderTime);\n addMeasure('inputlatency', totalInputLatencyTime);\n // console.info(\n // \t`input latency=${performance.getEntriesByName('inputlatency')[0].duration.toFixed(1)} [` +\n // \t`keydown=${performance.getEntriesByName('keydown')[0].duration.toFixed(1)}, ` +\n // \t`input=${performance.getEntriesByName('input')[0].duration.toFixed(1)}, ` +\n // \t`render=${performance.getEntriesByName('render')[0].duration.toFixed(1)}` +\n // \t`]`\n // );\n measurementsCount++;\n reset();\n }\n }\n function addMeasure(entryName, cumulativeMeasurement) {\n const duration = performance.getEntriesByName(entryName)[0].duration;\n cumulativeMeasurement.total += duration;\n cumulativeMeasurement.min = Math.min(cumulativeMeasurement.min, duration);\n cumulativeMeasurement.max = Math.max(cumulativeMeasurement.max, duration);\n }\n /**\n * Clear the current sample.\n */\n function reset() {\n performance.clearMarks('keydown/start');\n performance.clearMarks('keydown/end');\n performance.clearMarks('input/start');\n performance.clearMarks('input/end');\n performance.clearMarks('render/start');\n performance.clearMarks('render/end');\n performance.clearMarks('inputlatency/start');\n performance.clearMarks('inputlatency/end');\n performance.clearMeasures('keydown');\n performance.clearMeasures('input');\n performance.clearMeasures('render');\n performance.clearMeasures('inputlatency');\n state.keydown = 0 /* EventPhase.Before */;\n state.input = 0 /* EventPhase.Before */;\n state.render = 0 /* EventPhase.Before */;\n }\n /**\n * Gets all input latency samples and clears the internal buffers to start recording a new set\n * of samples.\n */\n function getAndClearMeasurements() {\n if (measurementsCount === 0) {\n return undefined;\n }\n // Assemble the result\n const result = {\n keydown: cumulativeToFinalMeasurement(totalKeydownTime),\n input: cumulativeToFinalMeasurement(totalInputTime),\n render: cumulativeToFinalMeasurement(totalRenderTime),\n total: cumulativeToFinalMeasurement(totalInputLatencyTime),\n sampleCount: measurementsCount\n };\n // Clear the cumulative measurements\n clearCumulativeMeasurement(totalKeydownTime);\n clearCumulativeMeasurement(totalInputTime);\n clearCumulativeMeasurement(totalRenderTime);\n clearCumulativeMeasurement(totalInputLatencyTime);\n measurementsCount = 0;\n return result;\n }\n inputLatency.getAndClearMeasurements = getAndClearMeasurements;\n function cumulativeToFinalMeasurement(cumulative) {\n return {\n average: cumulative.total / measurementsCount,\n max: cumulative.max,\n min: cumulative.min,\n };\n }\n function clearCumulativeMeasurement(cumulative) {\n cumulative.total = 0;\n cumulative.min = Number.MAX_VALUE;\n cumulative.max = 0;\n }\n})(inputLatency || (inputLatency = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/performance.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/touch.js": +/*!*****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/touch.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EventType: () => (/* binding */ EventType),\n/* harmony export */ Gesture: () => (/* binding */ Gesture)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_decorators_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/decorators.js */ \"./node_modules/monaco-editor/esm/vs/base/common/decorators.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_linkedList_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/linkedList.js */ \"./node_modules/monaco-editor/esm/vs/base/common/linkedList.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\n\n\n\n\nvar EventType;\n(function (EventType) {\n EventType.Tap = '-monaco-gesturetap';\n EventType.Change = '-monaco-gesturechange';\n EventType.Start = '-monaco-gesturestart';\n EventType.End = '-monaco-gesturesend';\n EventType.Contextmenu = '-monaco-gesturecontextmenu';\n})(EventType || (EventType = {}));\nclass Gesture extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.Disposable {\n constructor() {\n super();\n this.dispatched = false;\n this.targets = new _common_linkedList_js__WEBPACK_IMPORTED_MODULE_4__.LinkedList();\n this.ignoreTargets = new _common_linkedList_js__WEBPACK_IMPORTED_MODULE_4__.LinkedList();\n this.activeTouches = {};\n this.handle = null;\n this._lastSetTapCountTime = 0;\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(document, 'touchstart', (e) => this.onTouchStart(e), { passive: false }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(document, 'touchend', (e) => this.onTouchEnd(e)));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(document, 'touchmove', (e) => this.onTouchMove(e), { passive: false }));\n }\n static addTarget(element) {\n if (!Gesture.isTouchDevice()) {\n return _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.Disposable.None;\n }\n if (!Gesture.INSTANCE) {\n Gesture.INSTANCE = new Gesture();\n }\n const remove = Gesture.INSTANCE.targets.push(element);\n return (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.toDisposable)(remove);\n }\n static ignoreTarget(element) {\n if (!Gesture.isTouchDevice()) {\n return _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.Disposable.None;\n }\n if (!Gesture.INSTANCE) {\n Gesture.INSTANCE = new Gesture();\n }\n const remove = Gesture.INSTANCE.ignoreTargets.push(element);\n return (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.toDisposable)(remove);\n }\n static isTouchDevice() {\n // `'ontouchstart' in window` always evaluates to true with typescript's modern typings. This causes `window` to be\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n dispose() {\n if (this.handle) {\n this.handle.dispose();\n this.handle = null;\n }\n super.dispose();\n }\n onTouchStart(e) {\n const timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\n if (this.handle) {\n this.handle.dispose();\n this.handle = null;\n }\n for (let i = 0, len = e.targetTouches.length; i < len; i++) {\n const touch = e.targetTouches.item(i);\n this.activeTouches[touch.identifier] = {\n id: touch.identifier,\n initialTarget: touch.target,\n initialTimeStamp: timestamp,\n initialPageX: touch.pageX,\n initialPageY: touch.pageY,\n rollingTimestamps: [timestamp],\n rollingPageX: [touch.pageX],\n rollingPageY: [touch.pageY]\n };\n const evt = this.newGestureEvent(EventType.Start, touch.target);\n evt.pageX = touch.pageX;\n evt.pageY = touch.pageY;\n this.dispatchEvent(evt);\n }\n if (this.dispatched) {\n e.preventDefault();\n e.stopPropagation();\n this.dispatched = false;\n }\n }\n onTouchEnd(e) {\n const timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\n const activeTouchCount = Object.keys(this.activeTouches).length;\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\n const touch = e.changedTouches.item(i);\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\n console.warn('move of an UNKNOWN touch', touch);\n continue;\n }\n const data = this.activeTouches[touch.identifier], holdTime = Date.now() - data.initialTimeStamp;\n if (holdTime < Gesture.HOLD_DELAY\n && Math.abs(data.initialPageX - _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageX)) < 30\n && Math.abs(data.initialPageY - _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageY)) < 30) {\n const evt = this.newGestureEvent(EventType.Tap, data.initialTarget);\n evt.pageX = _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageX);\n evt.pageY = _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageY);\n this.dispatchEvent(evt);\n }\n else if (holdTime >= Gesture.HOLD_DELAY\n && Math.abs(data.initialPageX - _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageX)) < 30\n && Math.abs(data.initialPageY - _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageY)) < 30) {\n const evt = this.newGestureEvent(EventType.Contextmenu, data.initialTarget);\n evt.pageX = _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageX);\n evt.pageY = _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageY);\n this.dispatchEvent(evt);\n }\n else if (activeTouchCount === 1) {\n const finalX = _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageX);\n const finalY = _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageY);\n const deltaT = _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingTimestamps) - data.rollingTimestamps[0];\n const deltaX = finalX - data.rollingPageX[0];\n const deltaY = finalY - data.rollingPageY[0];\n // We need to get all the dispatch targets on the start of the inertia event\n const dispatchTo = [...this.targets].filter(t => data.initialTarget instanceof Node && t.contains(data.initialTarget));\n this.inertia(dispatchTo, timestamp, // time now\n Math.abs(deltaX) / deltaT, // speed\n deltaX > 0 ? 1 : -1, // x direction\n finalX, // x now\n Math.abs(deltaY) / deltaT, // y speed\n deltaY > 0 ? 1 : -1, // y direction\n finalY // y now\n );\n }\n this.dispatchEvent(this.newGestureEvent(EventType.End, data.initialTarget));\n // forget about this touch\n delete this.activeTouches[touch.identifier];\n }\n if (this.dispatched) {\n e.preventDefault();\n e.stopPropagation();\n this.dispatched = false;\n }\n }\n newGestureEvent(type, initialTarget) {\n const event = document.createEvent('CustomEvent');\n event.initEvent(type, false, true);\n event.initialTarget = initialTarget;\n event.tapCount = 0;\n return event;\n }\n dispatchEvent(event) {\n if (event.type === EventType.Tap) {\n const currentTime = (new Date()).getTime();\n let setTapCount = 0;\n if (currentTime - this._lastSetTapCountTime > Gesture.CLEAR_TAP_COUNT_TIME) {\n setTapCount = 1;\n }\n else {\n setTapCount = 2;\n }\n this._lastSetTapCountTime = currentTime;\n event.tapCount = setTapCount;\n }\n else if (event.type === EventType.Change || event.type === EventType.Contextmenu) {\n // tap is canceled by scrolling or context menu\n this._lastSetTapCountTime = 0;\n }\n if (event.initialTarget instanceof Node) {\n for (const ignoreTarget of this.ignoreTargets) {\n if (ignoreTarget.contains(event.initialTarget)) {\n return;\n }\n }\n for (const target of this.targets) {\n if (target.contains(event.initialTarget)) {\n target.dispatchEvent(event);\n this.dispatched = true;\n }\n }\n }\n }\n inertia(dispatchTo, t1, vX, dirX, x, vY, dirY, y) {\n this.handle = _dom_js__WEBPACK_IMPORTED_MODULE_0__.scheduleAtNextAnimationFrame(() => {\n const now = Date.now();\n // velocity: old speed + accel_over_time\n const deltaT = now - t1;\n let delta_pos_x = 0, delta_pos_y = 0;\n let stopped = true;\n vX += Gesture.SCROLL_FRICTION * deltaT;\n vY += Gesture.SCROLL_FRICTION * deltaT;\n if (vX > 0) {\n stopped = false;\n delta_pos_x = dirX * vX * deltaT;\n }\n if (vY > 0) {\n stopped = false;\n delta_pos_y = dirY * vY * deltaT;\n }\n // dispatch translation event\n const evt = this.newGestureEvent(EventType.Change);\n evt.translationX = delta_pos_x;\n evt.translationY = delta_pos_y;\n dispatchTo.forEach(d => d.dispatchEvent(evt));\n if (!stopped) {\n this.inertia(dispatchTo, now, vX, dirX, x + delta_pos_x, vY, dirY, y + delta_pos_y);\n }\n });\n }\n onTouchMove(e) {\n const timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\n const touch = e.changedTouches.item(i);\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\n console.warn('end of an UNKNOWN touch', touch);\n continue;\n }\n const data = this.activeTouches[touch.identifier];\n const evt = this.newGestureEvent(EventType.Change, data.initialTarget);\n evt.translationX = touch.pageX - _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageX);\n evt.translationY = touch.pageY - _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail(data.rollingPageY);\n evt.pageX = touch.pageX;\n evt.pageY = touch.pageY;\n this.dispatchEvent(evt);\n // only keep a few data points, to average the final speed\n if (data.rollingPageX.length > 3) {\n data.rollingPageX.shift();\n data.rollingPageY.shift();\n data.rollingTimestamps.shift();\n }\n data.rollingPageX.push(touch.pageX);\n data.rollingPageY.push(touch.pageY);\n data.rollingTimestamps.push(timestamp);\n }\n if (this.dispatched) {\n e.preventDefault();\n e.stopPropagation();\n this.dispatched = false;\n }\n }\n}\nGesture.SCROLL_FRICTION = -0.005;\nGesture.HOLD_DELAY = 700;\nGesture.CLEAR_TAP_COUNT_TIME = 400; // ms\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_2__.memoize\n], Gesture, \"isTouchDevice\", null);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/touch.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/trustedTypes.js": +/*!************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/trustedTypes.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTrustedTypesPolicy: () => (/* binding */ createTrustedTypesPolicy)\n/* harmony export */ });\n/* harmony import */ var _common_errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction createTrustedTypesPolicy(policyName, policyOptions) {\n var _a;\n const monacoEnvironment = globalThis.MonacoEnvironment;\n if (monacoEnvironment === null || monacoEnvironment === void 0 ? void 0 : monacoEnvironment.createTrustedTypesPolicy) {\n try {\n return monacoEnvironment.createTrustedTypesPolicy(policyName, policyOptions);\n }\n catch (err) {\n (0,_common_errors_js__WEBPACK_IMPORTED_MODULE_0__.onUnexpectedError)(err);\n return undefined;\n }\n }\n try {\n return (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy(policyName, policyOptions);\n }\n catch (err) {\n (0,_common_errors_js__WEBPACK_IMPORTED_MODULE_0__.onUnexpectedError)(err);\n return undefined;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/trustedTypes.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ActionViewItem: () => (/* binding */ ActionViewItem),\n/* harmony export */ BaseActionViewItem: () => (/* binding */ BaseActionViewItem),\n/* harmony export */ SelectActionViewItem: () => (/* binding */ SelectActionViewItem)\n/* harmony export */ });\n/* harmony import */ var _browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _dnd_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dnd.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dnd.js\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _iconLabel_iconLabelHover_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../iconLabel/iconLabelHover.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js\");\n/* harmony import */ var _selectBox_selectBox_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../selectBox/selectBox.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.js\");\n/* harmony import */ var _common_actions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/actions.js */ \"./node_modules/monaco-editor/esm/vs/base/common/actions.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _actionbar_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./actionbar.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\n\nclass BaseActionViewItem extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.Disposable {\n get action() {\n return this._action;\n }\n constructor(context, action, options = {}) {\n super();\n this.options = options;\n this._context = context || this;\n this._action = action;\n if (action instanceof _common_actions_js__WEBPACK_IMPORTED_MODULE_6__.Action) {\n this._register(action.onDidChange(event => {\n if (!this.element) {\n // we have not been rendered yet, so there\n // is no point in updating the UI\n return;\n }\n this.handleActionChangeEvent(event);\n }));\n }\n }\n handleActionChangeEvent(event) {\n if (event.enabled !== undefined) {\n this.updateEnabled();\n }\n if (event.checked !== undefined) {\n this.updateChecked();\n }\n if (event.class !== undefined) {\n this.updateClass();\n }\n if (event.label !== undefined) {\n this.updateLabel();\n this.updateTooltip();\n }\n if (event.tooltip !== undefined) {\n this.updateTooltip();\n }\n }\n get actionRunner() {\n if (!this._actionRunner) {\n this._actionRunner = this._register(new _common_actions_js__WEBPACK_IMPORTED_MODULE_6__.ActionRunner());\n }\n return this._actionRunner;\n }\n set actionRunner(actionRunner) {\n this._actionRunner = actionRunner;\n }\n isEnabled() {\n return this._action.enabled;\n }\n setActionContext(newContext) {\n this._context = newContext;\n }\n render(container) {\n const element = this.element = container;\n this._register(_touch_js__WEBPACK_IMPORTED_MODULE_3__.Gesture.addTarget(container));\n const enableDragging = this.options && this.options.draggable;\n if (enableDragging) {\n container.draggable = true;\n if (_browser_js__WEBPACK_IMPORTED_MODULE_0__.isFirefox) {\n // Firefox: requires to set a text data transfer to get going\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(container, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.DRAG_START, e => { var _a; return (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.setData(_dnd_js__WEBPACK_IMPORTED_MODULE_1__.DataTransfers.TEXT, this._action.label); }));\n }\n }\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(element, _touch_js__WEBPACK_IMPORTED_MODULE_3__.EventType.Tap, e => this.onClick(e, true))); // Preserve focus on tap #125470\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_DOWN, e => {\n if (!enableDragging) {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true); // do not run when dragging is on because that would disable it\n }\n if (this._action.enabled && e.button === 0) {\n element.classList.add('active');\n }\n }));\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_8__.isMacintosh) {\n // macOS: allow to trigger the button when holding Ctrl+key and pressing the\n // main mouse button. This is for scenarios where e.g. some interaction forces\n // the Ctrl+key to be pressed and hold but the user still wants to interact\n // with the actions (for example quick access in quick navigation mode).\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.CONTEXT_MENU, e => {\n if (e.button === 0 && e.ctrlKey === true) {\n this.onClick(e);\n }\n }));\n }\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.CLICK, e => {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n // menus do not use the click event\n if (!(this.options && this.options.isMenu)) {\n this.onClick(e);\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.DBLCLICK, e => {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n }));\n [_dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_UP, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_OUT].forEach(event => {\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(element, event, e => {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e);\n element.classList.remove('active');\n }));\n });\n }\n onClick(event, preserveFocus = false) {\n var _a;\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(event, true);\n const context = _common_types_js__WEBPACK_IMPORTED_MODULE_9__.isUndefinedOrNull(this._context) ? ((_a = this.options) === null || _a === void 0 ? void 0 : _a.useEventAsContext) ? event : { preserveFocus } : this._context;\n this.actionRunner.run(this._action, context);\n }\n // Only set the tabIndex on the element once it is about to get focused\n // That way this element wont be a tab stop when it is not needed #106441\n focus() {\n if (this.element) {\n this.element.tabIndex = 0;\n this.element.focus();\n this.element.classList.add('focused');\n }\n }\n blur() {\n if (this.element) {\n this.element.blur();\n this.element.tabIndex = -1;\n this.element.classList.remove('focused');\n }\n }\n setFocusable(focusable) {\n if (this.element) {\n this.element.tabIndex = focusable ? 0 : -1;\n }\n }\n get trapsArrowNavigation() {\n return false;\n }\n updateEnabled() {\n // implement in subclass\n }\n updateLabel() {\n // implement in subclass\n }\n getTooltip() {\n return this.action.tooltip;\n }\n updateTooltip() {\n var _a;\n if (!this.element) {\n return;\n }\n const title = (_a = this.getTooltip()) !== null && _a !== void 0 ? _a : '';\n this.updateAriaLabel();\n if (!this.options.hoverDelegate) {\n this.element.title = title;\n }\n else {\n this.element.title = '';\n if (!this.customHover) {\n this.customHover = (0,_iconLabel_iconLabelHover_js__WEBPACK_IMPORTED_MODULE_4__.setupCustomHover)(this.options.hoverDelegate, this.element, title);\n this._store.add(this.customHover);\n }\n else {\n this.customHover.update(title);\n }\n }\n }\n updateAriaLabel() {\n var _a;\n if (this.element) {\n const title = (_a = this.getTooltip()) !== null && _a !== void 0 ? _a : '';\n this.element.setAttribute('aria-label', title);\n }\n }\n updateClass() {\n // implement in subclass\n }\n updateChecked() {\n // implement in subclass\n }\n dispose() {\n if (this.element) {\n this.element.remove();\n this.element = undefined;\n }\n this._context = undefined;\n super.dispose();\n }\n}\nclass ActionViewItem extends BaseActionViewItem {\n constructor(context, action, options) {\n super(context, action, options);\n this.options = options;\n this.options.icon = options.icon !== undefined ? options.icon : false;\n this.options.label = options.label !== undefined ? options.label : true;\n this.cssClass = '';\n }\n render(container) {\n super.render(container);\n if (this.element) {\n this.label = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.element, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('a.action-label'));\n }\n if (this.label) {\n this.label.setAttribute('role', this.getDefaultAriaRole());\n }\n if (this.options.label && this.options.keybinding && this.element) {\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.element, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('span.keybinding')).textContent = this.options.keybinding;\n }\n this.updateClass();\n this.updateLabel();\n this.updateTooltip();\n this.updateEnabled();\n this.updateChecked();\n }\n getDefaultAriaRole() {\n if (this._action.id === _common_actions_js__WEBPACK_IMPORTED_MODULE_6__.Separator.ID) {\n return 'presentation'; // A separator is a presentation item\n }\n else {\n if (this.options.isMenu) {\n return 'menuitem';\n }\n else {\n return 'button';\n }\n }\n }\n // Only set the tabIndex on the element once it is about to get focused\n // That way this element wont be a tab stop when it is not needed #106441\n focus() {\n if (this.label) {\n this.label.tabIndex = 0;\n this.label.focus();\n }\n }\n blur() {\n if (this.label) {\n this.label.tabIndex = -1;\n }\n }\n setFocusable(focusable) {\n if (this.label) {\n this.label.tabIndex = focusable ? 0 : -1;\n }\n }\n updateLabel() {\n if (this.options.label && this.label) {\n this.label.textContent = this.action.label;\n }\n }\n getTooltip() {\n let title = null;\n if (this.action.tooltip) {\n title = this.action.tooltip;\n }\n else if (!this.options.label && this.action.label && this.options.icon) {\n title = this.action.label;\n if (this.options.keybinding) {\n title = _nls_js__WEBPACK_IMPORTED_MODULE_11__.localize({ key: 'titleLabel', comment: ['action title', 'action keybinding'] }, \"{0} ({1})\", title, this.options.keybinding);\n }\n }\n return title !== null && title !== void 0 ? title : undefined;\n }\n updateClass() {\n var _a;\n if (this.cssClass && this.label) {\n this.label.classList.remove(...this.cssClass.split(' '));\n }\n if (this.options.icon) {\n this.cssClass = this.action.class;\n if (this.label) {\n this.label.classList.add('codicon');\n if (this.cssClass) {\n this.label.classList.add(...this.cssClass.split(' '));\n }\n }\n this.updateEnabled();\n }\n else {\n (_a = this.label) === null || _a === void 0 ? void 0 : _a.classList.remove('codicon');\n }\n }\n updateEnabled() {\n var _a, _b;\n if (this.action.enabled) {\n if (this.label) {\n this.label.removeAttribute('aria-disabled');\n this.label.classList.remove('disabled');\n }\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.classList.remove('disabled');\n }\n else {\n if (this.label) {\n this.label.setAttribute('aria-disabled', 'true');\n this.label.classList.add('disabled');\n }\n (_b = this.element) === null || _b === void 0 ? void 0 : _b.classList.add('disabled');\n }\n }\n updateAriaLabel() {\n var _a;\n if (this.label) {\n const title = (_a = this.getTooltip()) !== null && _a !== void 0 ? _a : '';\n this.label.setAttribute('aria-label', title);\n }\n }\n updateChecked() {\n if (this.label) {\n if (this.action.checked !== undefined) {\n this.label.classList.toggle('checked', this.action.checked);\n this.label.setAttribute('aria-checked', this.action.checked ? 'true' : 'false');\n this.label.setAttribute('role', 'checkbox');\n }\n else {\n this.label.classList.remove('checked');\n this.label.setAttribute('aria-checked', '');\n this.label.setAttribute('role', this.getDefaultAriaRole());\n }\n }\n }\n}\nclass SelectActionViewItem extends BaseActionViewItem {\n constructor(ctx, action, options, selected, contextViewProvider, styles, selectBoxOptions) {\n super(ctx, action);\n this.selectBox = new _selectBox_selectBox_js__WEBPACK_IMPORTED_MODULE_5__.SelectBox(options, selected, contextViewProvider, styles, selectBoxOptions);\n this.selectBox.setFocusable(false);\n this._register(this.selectBox);\n this.registerListeners();\n }\n select(index) {\n this.selectBox.select(index);\n }\n registerListeners() {\n this._register(this.selectBox.onDidSelect(e => this.runAction(e.selected, e.index)));\n }\n runAction(option, index) {\n this.actionRunner.run(this._action, this.getActionContext(option, index));\n }\n getActionContext(option, index) {\n return option;\n }\n setFocusable(focusable) {\n this.selectBox.setFocusable(focusable);\n }\n focus() {\n var _a;\n (_a = this.selectBox) === null || _a === void 0 ? void 0 : _a.focus();\n }\n blur() {\n var _a;\n (_a = this.selectBox) === null || _a === void 0 ? void 0 : _a.blur();\n }\n render(container) {\n this.selectBox.render(container);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ActionBar: () => (/* binding */ ActionBar)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actionViewItems.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js\");\n/* harmony import */ var _common_actions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/actions.js */ \"./node_modules/monaco-editor/esm/vs/base/common/actions.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _actionbar_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./actionbar.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\nclass ActionBar extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__.Disposable {\n constructor(container, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n super();\n this._actionRunnerDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__.DisposableStore());\n this.viewItemDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__.DisposableMap());\n // Trigger Key Tracking\n this.triggerKeyDown = false;\n this.focusable = true;\n this._onDidBlur = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onDidBlur = this._onDidBlur.event;\n this._onDidCancel = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter({ onWillAddFirstListener: () => this.cancelHasListener = true }));\n this.onDidCancel = this._onDidCancel.event;\n this.cancelHasListener = false;\n this._onDidRun = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onDidRun = this._onDidRun.event;\n this._onWillRun = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onWillRun = this._onWillRun.event;\n this.options = options;\n this._context = (_a = options.context) !== null && _a !== void 0 ? _a : null;\n this._orientation = (_b = this.options.orientation) !== null && _b !== void 0 ? _b : 0 /* ActionsOrientation.HORIZONTAL */;\n this._triggerKeys = {\n keyDown: (_d = (_c = this.options.triggerKeys) === null || _c === void 0 ? void 0 : _c.keyDown) !== null && _d !== void 0 ? _d : false,\n keys: (_f = (_e = this.options.triggerKeys) === null || _e === void 0 ? void 0 : _e.keys) !== null && _f !== void 0 ? _f : [3 /* KeyCode.Enter */, 10 /* KeyCode.Space */]\n };\n if (this.options.actionRunner) {\n this._actionRunner = this.options.actionRunner;\n }\n else {\n this._actionRunner = new _common_actions_js__WEBPACK_IMPORTED_MODULE_3__.ActionRunner();\n this._actionRunnerDisposables.add(this._actionRunner);\n }\n this._actionRunnerDisposables.add(this._actionRunner.onDidRun(e => this._onDidRun.fire(e)));\n this._actionRunnerDisposables.add(this._actionRunner.onWillRun(e => this._onWillRun.fire(e)));\n this.viewItems = [];\n this.focusedItem = undefined;\n this.domNode = document.createElement('div');\n this.domNode.className = 'monaco-action-bar';\n if (options.animated !== false) {\n this.domNode.classList.add('animated');\n }\n let previousKeys;\n let nextKeys;\n switch (this._orientation) {\n case 0 /* ActionsOrientation.HORIZONTAL */:\n previousKeys = [15 /* KeyCode.LeftArrow */];\n nextKeys = [17 /* KeyCode.RightArrow */];\n break;\n case 1 /* ActionsOrientation.VERTICAL */:\n previousKeys = [16 /* KeyCode.UpArrow */];\n nextKeys = [18 /* KeyCode.DownArrow */];\n this.domNode.className += ' vertical';\n break;\n }\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_DOWN, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__.StandardKeyboardEvent(e);\n let eventHandled = true;\n const focusedItem = typeof this.focusedItem === 'number' ? this.viewItems[this.focusedItem] : undefined;\n if (previousKeys && (event.equals(previousKeys[0]) || event.equals(previousKeys[1]))) {\n eventHandled = this.focusPrevious();\n }\n else if (nextKeys && (event.equals(nextKeys[0]) || event.equals(nextKeys[1]))) {\n eventHandled = this.focusNext();\n }\n else if (event.equals(9 /* KeyCode.Escape */) && this.cancelHasListener) {\n this._onDidCancel.fire();\n }\n else if (event.equals(14 /* KeyCode.Home */)) {\n eventHandled = this.focusFirst();\n }\n else if (event.equals(13 /* KeyCode.End */)) {\n eventHandled = this.focusLast();\n }\n else if (event.equals(2 /* KeyCode.Tab */) && focusedItem instanceof _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__.BaseActionViewItem && focusedItem.trapsArrowNavigation) {\n eventHandled = this.focusNext();\n }\n else if (this.isTriggerKeyEvent(event)) {\n // Staying out of the else branch even if not triggered\n if (this._triggerKeys.keyDown) {\n this.doTrigger(event);\n }\n else {\n this.triggerKeyDown = true;\n }\n }\n else {\n eventHandled = false;\n }\n if (eventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_UP, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__.StandardKeyboardEvent(e);\n // Run action on Enter/Space\n if (this.isTriggerKeyEvent(event)) {\n if (!this._triggerKeys.keyDown && this.triggerKeyDown) {\n this.triggerKeyDown = false;\n this.doTrigger(event);\n }\n event.preventDefault();\n event.stopPropagation();\n }\n // Recompute focused item\n else if (event.equals(2 /* KeyCode.Tab */) || event.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n this.updateFocusedItem();\n }\n }));\n this.focusTracker = this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.trackFocus(this.domNode));\n this._register(this.focusTracker.onDidBlur(() => {\n if (_dom_js__WEBPACK_IMPORTED_MODULE_0__.getActiveElement() === this.domNode || !_dom_js__WEBPACK_IMPORTED_MODULE_0__.isAncestor(_dom_js__WEBPACK_IMPORTED_MODULE_0__.getActiveElement(), this.domNode)) {\n this._onDidBlur.fire();\n this.focusedItem = undefined;\n this.previouslyFocusedItem = undefined;\n this.triggerKeyDown = false;\n }\n }));\n this._register(this.focusTracker.onDidFocus(() => this.updateFocusedItem()));\n this.actionsList = document.createElement('ul');\n this.actionsList.className = 'actions-container';\n this.actionsList.setAttribute('role', this.options.ariaRole || 'toolbar');\n if (this.options.ariaLabel) {\n this.actionsList.setAttribute('aria-label', this.options.ariaLabel);\n }\n this.domNode.appendChild(this.actionsList);\n container.appendChild(this.domNode);\n }\n refreshRole() {\n if (this.length() >= 2) {\n this.actionsList.setAttribute('role', this.options.ariaRole || 'toolbar');\n }\n else {\n this.actionsList.setAttribute('role', 'presentation');\n }\n }\n // Some action bars should not be focusable at times\n // When an action bar is not focusable make sure to make all the elements inside it not focusable\n // When an action bar is focusable again, make sure the first item can be focused\n setFocusable(focusable) {\n this.focusable = focusable;\n if (this.focusable) {\n const firstEnabled = this.viewItems.find(vi => vi instanceof _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__.BaseActionViewItem && vi.isEnabled());\n if (firstEnabled instanceof _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__.BaseActionViewItem) {\n firstEnabled.setFocusable(true);\n }\n }\n else {\n this.viewItems.forEach(vi => {\n if (vi instanceof _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__.BaseActionViewItem) {\n vi.setFocusable(false);\n }\n });\n }\n }\n isTriggerKeyEvent(event) {\n let ret = false;\n this._triggerKeys.keys.forEach(keyCode => {\n ret = ret || event.equals(keyCode);\n });\n return ret;\n }\n updateFocusedItem() {\n for (let i = 0; i < this.actionsList.children.length; i++) {\n const elem = this.actionsList.children[i];\n if (_dom_js__WEBPACK_IMPORTED_MODULE_0__.isAncestor(_dom_js__WEBPACK_IMPORTED_MODULE_0__.getActiveElement(), elem)) {\n this.focusedItem = i;\n break;\n }\n }\n }\n get context() {\n return this._context;\n }\n set context(context) {\n this._context = context;\n this.viewItems.forEach(i => i.setActionContext(context));\n }\n get actionRunner() {\n return this._actionRunner;\n }\n set actionRunner(actionRunner) {\n this._actionRunner = actionRunner;\n // when setting a new `IActionRunner` make sure to dispose old listeners and\n // start to forward events from the new listener\n this._actionRunnerDisposables.clear();\n this._actionRunnerDisposables.add(this._actionRunner.onDidRun(e => this._onDidRun.fire(e)));\n this._actionRunnerDisposables.add(this._actionRunner.onWillRun(e => this._onWillRun.fire(e)));\n this.viewItems.forEach(item => item.actionRunner = actionRunner);\n }\n getContainer() {\n return this.domNode;\n }\n getAction(indexOrElement) {\n var _a;\n // by index\n if (typeof indexOrElement === 'number') {\n return (_a = this.viewItems[indexOrElement]) === null || _a === void 0 ? void 0 : _a.action;\n }\n // by element\n if (indexOrElement instanceof HTMLElement) {\n while (indexOrElement.parentElement !== this.actionsList) {\n if (!indexOrElement.parentElement) {\n return undefined;\n }\n indexOrElement = indexOrElement.parentElement;\n }\n for (let i = 0; i < this.actionsList.childNodes.length; i++) {\n if (this.actionsList.childNodes[i] === indexOrElement) {\n return this.viewItems[i].action;\n }\n }\n }\n return undefined;\n }\n push(arg, options = {}) {\n const actions = Array.isArray(arg) ? arg : [arg];\n let index = _common_types_js__WEBPACK_IMPORTED_MODULE_6__.isNumber(options.index) ? options.index : null;\n actions.forEach((action) => {\n const actionViewItemElement = document.createElement('li');\n actionViewItemElement.className = 'action-item';\n actionViewItemElement.setAttribute('role', 'presentation');\n let item;\n const viewItemOptions = Object.assign({ hoverDelegate: this.options.hoverDelegate }, options);\n if (this.options.actionViewItemProvider) {\n item = this.options.actionViewItemProvider(action, viewItemOptions);\n }\n if (!item) {\n item = new _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__.ActionViewItem(this.context, action, viewItemOptions);\n }\n // Prevent native context menu on actions\n if (!this.options.allowContextMenu) {\n this.viewItemDisposables.set(item, _dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(actionViewItemElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.CONTEXT_MENU, (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true);\n }));\n }\n item.actionRunner = this._actionRunner;\n item.setActionContext(this.context);\n item.render(actionViewItemElement);\n if (this.focusable && item instanceof _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__.BaseActionViewItem && this.viewItems.length === 0) {\n // We need to allow for the first enabled item to be focused on using tab navigation #106441\n item.setFocusable(true);\n }\n if (index === null || index < 0 || index >= this.actionsList.children.length) {\n this.actionsList.appendChild(actionViewItemElement);\n this.viewItems.push(item);\n }\n else {\n this.actionsList.insertBefore(actionViewItemElement, this.actionsList.children[index]);\n this.viewItems.splice(index, 0, item);\n index++;\n }\n });\n if (typeof this.focusedItem === 'number') {\n // After a clear actions might be re-added to simply toggle some actions. We should preserve focus #97128\n this.focus(this.focusedItem);\n }\n this.refreshRole();\n }\n clear() {\n if (this.isEmpty()) {\n return;\n }\n this.viewItems = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__.dispose)(this.viewItems);\n this.viewItemDisposables.clearAndDisposeAll();\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode(this.actionsList);\n this.refreshRole();\n }\n length() {\n return this.viewItems.length;\n }\n isEmpty() {\n return this.viewItems.length === 0;\n }\n focus(arg) {\n let selectFirst = false;\n let index = undefined;\n if (arg === undefined) {\n selectFirst = true;\n }\n else if (typeof arg === 'number') {\n index = arg;\n }\n else if (typeof arg === 'boolean') {\n selectFirst = arg;\n }\n if (selectFirst && typeof this.focusedItem === 'undefined') {\n const firstEnabled = this.viewItems.findIndex(item => item.isEnabled());\n // Focus the first enabled item\n this.focusedItem = firstEnabled === -1 ? undefined : firstEnabled;\n this.updateFocus(undefined, undefined, true);\n }\n else {\n if (index !== undefined) {\n this.focusedItem = index;\n }\n this.updateFocus(undefined, undefined, true);\n }\n }\n focusFirst() {\n this.focusedItem = this.length() - 1;\n return this.focusNext(true);\n }\n focusLast() {\n this.focusedItem = 0;\n return this.focusPrevious(true);\n }\n focusNext(forceLoop) {\n if (typeof this.focusedItem === 'undefined') {\n this.focusedItem = this.viewItems.length - 1;\n }\n else if (this.viewItems.length <= 1) {\n return false;\n }\n const startIndex = this.focusedItem;\n let item;\n do {\n if (!forceLoop && this.options.preventLoopNavigation && this.focusedItem + 1 >= this.viewItems.length) {\n this.focusedItem = startIndex;\n return false;\n }\n this.focusedItem = (this.focusedItem + 1) % this.viewItems.length;\n item = this.viewItems[this.focusedItem];\n } while (this.focusedItem !== startIndex && ((this.options.focusOnlyEnabledItems && !item.isEnabled()) || item.action.id === _common_actions_js__WEBPACK_IMPORTED_MODULE_3__.Separator.ID));\n this.updateFocus();\n return true;\n }\n focusPrevious(forceLoop) {\n if (typeof this.focusedItem === 'undefined') {\n this.focusedItem = 0;\n }\n else if (this.viewItems.length <= 1) {\n return false;\n }\n const startIndex = this.focusedItem;\n let item;\n do {\n this.focusedItem = this.focusedItem - 1;\n if (this.focusedItem < 0) {\n if (!forceLoop && this.options.preventLoopNavigation) {\n this.focusedItem = startIndex;\n return false;\n }\n this.focusedItem = this.viewItems.length - 1;\n }\n item = this.viewItems[this.focusedItem];\n } while (this.focusedItem !== startIndex && ((this.options.focusOnlyEnabledItems && !item.isEnabled()) || item.action.id === _common_actions_js__WEBPACK_IMPORTED_MODULE_3__.Separator.ID));\n this.updateFocus(true);\n return true;\n }\n updateFocus(fromRight, preventScroll, forceFocus = false) {\n var _a;\n if (typeof this.focusedItem === 'undefined') {\n this.actionsList.focus({ preventScroll });\n }\n if (this.previouslyFocusedItem !== undefined && this.previouslyFocusedItem !== this.focusedItem) {\n (_a = this.viewItems[this.previouslyFocusedItem]) === null || _a === void 0 ? void 0 : _a.blur();\n }\n const actionViewItem = this.focusedItem !== undefined && this.viewItems[this.focusedItem];\n if (actionViewItem) {\n let focusItem = true;\n if (!_common_types_js__WEBPACK_IMPORTED_MODULE_6__.isFunction(actionViewItem.focus)) {\n focusItem = false;\n }\n if (this.options.focusOnlyEnabledItems && _common_types_js__WEBPACK_IMPORTED_MODULE_6__.isFunction(actionViewItem.isEnabled) && !actionViewItem.isEnabled()) {\n focusItem = false;\n }\n if (actionViewItem.action.id === _common_actions_js__WEBPACK_IMPORTED_MODULE_3__.Separator.ID) {\n focusItem = false;\n }\n if (!focusItem) {\n this.actionsList.focus({ preventScroll });\n this.previouslyFocusedItem = undefined;\n }\n else if (forceFocus || this.previouslyFocusedItem !== this.focusedItem) {\n actionViewItem.focus(fromRight);\n this.previouslyFocusedItem = this.focusedItem;\n }\n }\n }\n doTrigger(event) {\n if (typeof this.focusedItem === 'undefined') {\n return; //nothing to focus\n }\n // trigger action\n const actionViewItem = this.viewItems[this.focusedItem];\n if (actionViewItem instanceof _actionViewItems_js__WEBPACK_IMPORTED_MODULE_2__.BaseActionViewItem) {\n const context = (actionViewItem._context === null || actionViewItem._context === undefined) ? event : actionViewItem._context;\n this.run(actionViewItem._action, context);\n }\n }\n run(action, context) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._actionRunner.run(action, context);\n });\n }\n dispose() {\n this._context = undefined;\n this.viewItems = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__.dispose)(this.viewItems);\n this.getContainer().remove();\n super.dispose();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js": +/*!************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ alert: () => (/* binding */ alert),\n/* harmony export */ setARIAContainer: () => (/* binding */ setARIAContainer),\n/* harmony export */ status: () => (/* binding */ status)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _aria_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aria.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n// Use a max length since we are inserting the whole msg in the DOM and that can cause browsers to freeze for long messages #94233\nconst MAX_MESSAGE_LENGTH = 20000;\nlet ariaContainer;\nlet alertContainer;\nlet alertContainer2;\nlet statusContainer;\nlet statusContainer2;\nfunction setARIAContainer(parent) {\n ariaContainer = document.createElement('div');\n ariaContainer.className = 'monaco-aria-container';\n const createAlertContainer = () => {\n const element = document.createElement('div');\n element.className = 'monaco-alert';\n element.setAttribute('role', 'alert');\n element.setAttribute('aria-atomic', 'true');\n ariaContainer.appendChild(element);\n return element;\n };\n alertContainer = createAlertContainer();\n alertContainer2 = createAlertContainer();\n const createStatusContainer = () => {\n const element = document.createElement('div');\n element.className = 'monaco-status';\n element.setAttribute('role', 'complementary');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n ariaContainer.appendChild(element);\n return element;\n };\n statusContainer = createStatusContainer();\n statusContainer2 = createStatusContainer();\n parent.appendChild(ariaContainer);\n}\n/**\n * Given the provided message, will make sure that it is read as alert to screen readers.\n */\nfunction alert(msg) {\n if (!ariaContainer) {\n return;\n }\n // Use alternate containers such that duplicated messages get read out by screen readers #99466\n if (alertContainer.textContent !== msg) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode(alertContainer2);\n insertMessage(alertContainer, msg);\n }\n else {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode(alertContainer);\n insertMessage(alertContainer2, msg);\n }\n}\n/**\n * Given the provided message, will make sure that it is read as status to screen readers.\n */\nfunction status(msg) {\n if (!ariaContainer) {\n return;\n }\n if (statusContainer.textContent !== msg) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode(statusContainer2);\n insertMessage(statusContainer, msg);\n }\n else {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode(statusContainer);\n insertMessage(statusContainer2, msg);\n }\n}\nfunction insertMessage(target, msg) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode(target);\n if (msg.length > MAX_MESSAGE_LENGTH) {\n msg = msg.substr(0, MAX_MESSAGE_LENGTH);\n }\n target.textContent = msg;\n // See https://www.paciellogroup.com/blog/2012/06/html5-accessibility-chops-aria-rolealert-browser-support/\n target.style.visibility = 'hidden';\n target.style.visibility = 'visible';\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.js": +/*!****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Button: () => (/* binding */ Button),\n/* harmony export */ unthemedButtonStyles: () => (/* binding */ unthemedButtonStyles)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dompurify/dompurify.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dompurify/dompurify.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _markdownRenderer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../markdownRenderer.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/markdownRenderer.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _iconLabel_iconLabels_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../iconLabel/iconLabels.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js\");\n/* harmony import */ var _common_color_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/color.js */ \"./node_modules/monaco-editor/esm/vs/base/common/color.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_htmlContent_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/htmlContent.js */ \"./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _button_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./button.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css\");\n\n\n\n\n\n\n\n\n\n\n\nconst unthemedButtonStyles = {\n buttonBackground: '#0E639C',\n buttonHoverBackground: '#006BB3',\n buttonSeparator: _common_color_js__WEBPACK_IMPORTED_MODULE_6__.Color.white.toString(),\n buttonForeground: _common_color_js__WEBPACK_IMPORTED_MODULE_6__.Color.white.toString(),\n buttonBorder: undefined,\n buttonSecondaryBackground: undefined,\n buttonSecondaryForeground: undefined,\n buttonSecondaryHoverBackground: undefined\n};\nclass Button extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.Disposable {\n get onDidClick() { return this._onDidClick.event; }\n constructor(container, options) {\n super();\n this._label = '';\n this._onDidClick = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_7__.Emitter());\n this.options = options;\n this._element = document.createElement('a');\n this._element.classList.add('monaco-button');\n this._element.tabIndex = 0;\n this._element.setAttribute('role', 'button');\n this._element.classList.toggle('secondary', !!options.secondary);\n const background = options.secondary ? options.buttonSecondaryBackground : options.buttonBackground;\n const foreground = options.secondary ? options.buttonSecondaryForeground : options.buttonForeground;\n this._element.style.color = foreground || '';\n this._element.style.backgroundColor = background || '';\n if (options.supportShortLabel) {\n this._labelShortElement = document.createElement('div');\n this._labelShortElement.classList.add('monaco-button-label-short');\n this._element.appendChild(this._labelShortElement);\n this._labelElement = document.createElement('div');\n this._labelElement.classList.add('monaco-button-label');\n this._element.appendChild(this._labelElement);\n this._element.classList.add('monaco-text-button-with-short-label');\n }\n container.appendChild(this._element);\n this._register(_touch_js__WEBPACK_IMPORTED_MODULE_4__.Gesture.addTarget(this._element));\n [_dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.CLICK, _touch_js__WEBPACK_IMPORTED_MODULE_4__.EventType.Tap].forEach(eventType => {\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(this._element, eventType, e => {\n if (!this.enabled) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n return;\n }\n this._onDidClick.fire(e);\n }));\n });\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(this._element, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_DOWN, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e);\n let eventHandled = false;\n if (this.enabled && (event.equals(3 /* KeyCode.Enter */) || event.equals(10 /* KeyCode.Space */))) {\n this._onDidClick.fire(e);\n eventHandled = true;\n }\n else if (event.equals(9 /* KeyCode.Escape */)) {\n this._element.blur();\n eventHandled = true;\n }\n if (eventHandled) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(event, true);\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(this._element, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_OVER, e => {\n if (!this._element.classList.contains('disabled')) {\n this.updateBackground(true);\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(this._element, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_OUT, e => {\n this.updateBackground(false); // restore standard styles\n }));\n // Also set hover background when button is focused for feedback\n this.focusTracker = this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.trackFocus)(this._element));\n this._register(this.focusTracker.onDidFocus(() => { if (this.enabled) {\n this.updateBackground(true);\n } }));\n this._register(this.focusTracker.onDidBlur(() => { if (this.enabled) {\n this.updateBackground(false);\n } }));\n }\n dispose() {\n super.dispose();\n this._element.remove();\n }\n getContentElements(content) {\n const elements = [];\n for (let segment of (0,_iconLabel_iconLabels_js__WEBPACK_IMPORTED_MODULE_5__.renderLabelWithIcons)(content)) {\n if (typeof (segment) === 'string') {\n segment = segment.trim();\n // Ignore empty segment\n if (segment === '') {\n continue;\n }\n // Convert string segments to nodes\n const node = document.createElement('span');\n node.textContent = segment;\n elements.push(node);\n }\n else {\n elements.push(segment);\n }\n }\n return elements;\n }\n updateBackground(hover) {\n let background;\n if (this.options.secondary) {\n background = hover ? this.options.buttonSecondaryHoverBackground : this.options.buttonSecondaryBackground;\n }\n else {\n background = hover ? this.options.buttonHoverBackground : this.options.buttonBackground;\n }\n if (background) {\n this._element.style.backgroundColor = background;\n }\n }\n get element() {\n return this._element;\n }\n set label(value) {\n var _a;\n if (this._label === value) {\n return;\n }\n if ((0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_8__.isMarkdownString)(this._label) && (0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_8__.isMarkdownString)(value) && (0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_8__.markdownStringEqual)(this._label, value)) {\n return;\n }\n this._element.classList.add('monaco-text-button');\n const labelElement = this.options.supportShortLabel ? this._labelElement : this._element;\n if ((0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_8__.isMarkdownString)(value)) {\n const rendered = (0,_markdownRenderer_js__WEBPACK_IMPORTED_MODULE_3__.renderMarkdown)(value, { inline: true });\n rendered.dispose();\n // Don't include outer `

`\n const root = (_a = rendered.element.querySelector('p')) === null || _a === void 0 ? void 0 : _a.innerHTML;\n if (root) {\n // Only allow a very limited set of inline html tags\n const sanitized = (0,_dompurify_dompurify_js__WEBPACK_IMPORTED_MODULE_1__.sanitize)(root, { ADD_TAGS: ['b', 'i', 'u', 'code', 'span'], ALLOWED_ATTR: ['class'], RETURN_TRUSTED_TYPE: true });\n labelElement.innerHTML = sanitized;\n }\n else {\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.reset)(labelElement);\n }\n }\n else {\n if (this.options.supportIcons) {\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.reset)(labelElement, ...this.getContentElements(value));\n }\n else {\n labelElement.textContent = value;\n }\n }\n if (typeof this.options.title === 'string') {\n this._element.title = this.options.title;\n }\n else if (this.options.title) {\n this._element.title = (0,_markdownRenderer_js__WEBPACK_IMPORTED_MODULE_3__.renderStringAsPlaintext)(value);\n }\n this._label = value;\n }\n get label() {\n return this._label;\n }\n set enabled(value) {\n if (value) {\n this._element.classList.remove('disabled');\n this._element.setAttribute('aria-disabled', String(false));\n this._element.tabIndex = 0;\n }\n else {\n this._element.classList.add('disabled');\n this._element.setAttribute('aria-disabled', String(true));\n }\n }\n get enabled() {\n return !this._element.classList.contains('disabled');\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _codicon_codicon_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./codicon/codicon.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css\");\n/* harmony import */ var _codicon_codicon_modifiers_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./codicon/codicon-modifiers.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContextView: () => (/* binding */ ContextView),\n/* harmony export */ LayoutAnchorMode: () => (/* binding */ LayoutAnchorMode),\n/* harmony export */ layout: () => (/* binding */ layout)\n/* harmony export */ });\n/* harmony import */ var _canIUse_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../canIUse.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _common_range_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/range.js */ \"./node_modules/monaco-editor/esm/vs/base/common/range.js\");\n/* harmony import */ var _contextview_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./contextview.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nvar LayoutAnchorMode;\n(function (LayoutAnchorMode) {\n LayoutAnchorMode[LayoutAnchorMode[\"AVOID\"] = 0] = \"AVOID\";\n LayoutAnchorMode[LayoutAnchorMode[\"ALIGN\"] = 1] = \"ALIGN\";\n})(LayoutAnchorMode || (LayoutAnchorMode = {}));\n/**\n * Lays out a one dimensional view next to an anchor in a viewport.\n *\n * @returns The view offset within the viewport.\n */\nfunction layout(viewportSize, viewSize, anchor) {\n const layoutAfterAnchorBoundary = anchor.mode === LayoutAnchorMode.ALIGN ? anchor.offset : anchor.offset + anchor.size;\n const layoutBeforeAnchorBoundary = anchor.mode === LayoutAnchorMode.ALIGN ? anchor.offset + anchor.size : anchor.offset;\n if (anchor.position === 0 /* LayoutAnchorPosition.Before */) {\n if (viewSize <= viewportSize - layoutAfterAnchorBoundary) {\n return layoutAfterAnchorBoundary; // happy case, lay it out after the anchor\n }\n if (viewSize <= layoutBeforeAnchorBoundary) {\n return layoutBeforeAnchorBoundary - viewSize; // ok case, lay it out before the anchor\n }\n return Math.max(viewportSize - viewSize, 0); // sad case, lay it over the anchor\n }\n else {\n if (viewSize <= layoutBeforeAnchorBoundary) {\n return layoutBeforeAnchorBoundary - viewSize; // happy case, lay it out before the anchor\n }\n if (viewSize <= viewportSize - layoutAfterAnchorBoundary) {\n return layoutAfterAnchorBoundary; // ok case, lay it out after the anchor\n }\n return 0; // sad case, lay it over the anchor\n }\n}\nclass ContextView extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor(container, domPosition) {\n super();\n this.container = null;\n this.delegate = null;\n this.toDisposeOnClean = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable.None;\n this.toDisposeOnSetContainer = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable.None;\n this.shadowRoot = null;\n this.shadowRootHostElement = null;\n this.view = _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('.context-view');\n this.useFixedPosition = false;\n this.useShadowDOM = false;\n _dom_js__WEBPACK_IMPORTED_MODULE_1__.hide(this.view);\n this.setContainer(container, domPosition);\n this._register((0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.toDisposable)(() => this.setContainer(null, 1 /* ContextViewDOMPosition.ABSOLUTE */)));\n }\n setContainer(container, domPosition) {\n var _a;\n if (this.container) {\n this.toDisposeOnSetContainer.dispose();\n if (this.shadowRoot) {\n this.shadowRoot.removeChild(this.view);\n this.shadowRoot = null;\n (_a = this.shadowRootHostElement) === null || _a === void 0 ? void 0 : _a.remove();\n this.shadowRootHostElement = null;\n }\n else {\n this.container.removeChild(this.view);\n }\n this.container = null;\n }\n if (container) {\n this.container = container;\n this.useFixedPosition = domPosition !== 1 /* ContextViewDOMPosition.ABSOLUTE */;\n this.useShadowDOM = domPosition === 3 /* ContextViewDOMPosition.FIXED_SHADOW */;\n if (this.useShadowDOM) {\n this.shadowRootHostElement = _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('.shadow-root-host');\n this.container.appendChild(this.shadowRootHostElement);\n this.shadowRoot = this.shadowRootHostElement.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = SHADOW_ROOT_CSS;\n this.shadowRoot.appendChild(style);\n this.shadowRoot.appendChild(this.view);\n this.shadowRoot.appendChild(_dom_js__WEBPACK_IMPORTED_MODULE_1__.$('slot'));\n }\n else {\n this.container.appendChild(this.view);\n }\n const toDisposeOnSetContainer = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.DisposableStore();\n ContextView.BUBBLE_UP_EVENTS.forEach(event => {\n toDisposeOnSetContainer.add(_dom_js__WEBPACK_IMPORTED_MODULE_1__.addStandardDisposableListener(this.container, event, (e) => {\n this.onDOMEvent(e, false);\n }));\n });\n ContextView.BUBBLE_DOWN_EVENTS.forEach(event => {\n toDisposeOnSetContainer.add(_dom_js__WEBPACK_IMPORTED_MODULE_1__.addStandardDisposableListener(this.container, event, (e) => {\n this.onDOMEvent(e, true);\n }, true));\n });\n this.toDisposeOnSetContainer = toDisposeOnSetContainer;\n }\n }\n show(delegate) {\n var _a, _b;\n if (this.isVisible()) {\n this.hide();\n }\n // Show static box\n _dom_js__WEBPACK_IMPORTED_MODULE_1__.clearNode(this.view);\n this.view.className = 'context-view';\n this.view.style.top = '0px';\n this.view.style.left = '0px';\n this.view.style.zIndex = '2575';\n this.view.style.position = this.useFixedPosition ? 'fixed' : 'absolute';\n _dom_js__WEBPACK_IMPORTED_MODULE_1__.show(this.view);\n // Render content\n this.toDisposeOnClean = delegate.render(this.view) || _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable.None;\n // Set active delegate\n this.delegate = delegate;\n // Layout\n this.doLayout();\n // Focus\n (_b = (_a = this.delegate).focus) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n getViewElement() {\n return this.view;\n }\n layout() {\n if (!this.isVisible()) {\n return;\n }\n if (this.delegate.canRelayout === false && !(_common_platform_js__WEBPACK_IMPORTED_MODULE_3__.isIOS && _canIUse_js__WEBPACK_IMPORTED_MODULE_0__.BrowserFeatures.pointerEvents)) {\n this.hide();\n return;\n }\n if (this.delegate.layout) {\n this.delegate.layout();\n }\n this.doLayout();\n }\n doLayout() {\n // Check that we still have a delegate - this.delegate.layout may have hidden\n if (!this.isVisible()) {\n return;\n }\n // Get anchor\n const anchor = this.delegate.getAnchor();\n // Compute around\n let around;\n // Get the element's position and size (to anchor the view)\n if (_dom_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement(anchor)) {\n const elementPosition = _dom_js__WEBPACK_IMPORTED_MODULE_1__.getDomNodePagePosition(anchor);\n // In areas where zoom is applied to the element or its ancestors, we need to adjust the size of the element\n // e.g. The title bar has counter zoom behavior meaning it applies the inverse of zoom level.\n // Window Zoom Level: 1.5, Title Bar Zoom: 1/1.5, Size Multiplier: 1.5\n const zoom = _dom_js__WEBPACK_IMPORTED_MODULE_1__.getDomNodeZoomLevel(anchor);\n around = {\n top: elementPosition.top * zoom,\n left: elementPosition.left * zoom,\n width: elementPosition.width * zoom,\n height: elementPosition.height * zoom\n };\n }\n else {\n around = {\n top: anchor.y,\n left: anchor.x,\n width: anchor.width || 1,\n height: anchor.height || 2\n };\n }\n const viewSizeWidth = _dom_js__WEBPACK_IMPORTED_MODULE_1__.getTotalWidth(this.view);\n const viewSizeHeight = _dom_js__WEBPACK_IMPORTED_MODULE_1__.getTotalHeight(this.view);\n const anchorPosition = this.delegate.anchorPosition || 0 /* AnchorPosition.BELOW */;\n const anchorAlignment = this.delegate.anchorAlignment || 0 /* AnchorAlignment.LEFT */;\n const anchorAxisAlignment = this.delegate.anchorAxisAlignment || 0 /* AnchorAxisAlignment.VERTICAL */;\n let top;\n let left;\n if (anchorAxisAlignment === 0 /* AnchorAxisAlignment.VERTICAL */) {\n const verticalAnchor = { offset: around.top - window.pageYOffset, size: around.height, position: anchorPosition === 0 /* AnchorPosition.BELOW */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */ };\n const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* AnchorAlignment.LEFT */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */, mode: LayoutAnchorMode.ALIGN };\n top = layout(window.innerHeight, viewSizeHeight, verticalAnchor) + window.pageYOffset;\n // if view intersects vertically with anchor, we must avoid the anchor\n if (_common_range_js__WEBPACK_IMPORTED_MODULE_4__.Range.intersects({ start: top, end: top + viewSizeHeight }, { start: verticalAnchor.offset, end: verticalAnchor.offset + verticalAnchor.size })) {\n horizontalAnchor.mode = LayoutAnchorMode.AVOID;\n }\n left = layout(window.innerWidth, viewSizeWidth, horizontalAnchor);\n }\n else {\n const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* AnchorAlignment.LEFT */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */ };\n const verticalAnchor = { offset: around.top, size: around.height, position: anchorPosition === 0 /* AnchorPosition.BELOW */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */, mode: LayoutAnchorMode.ALIGN };\n left = layout(window.innerWidth, viewSizeWidth, horizontalAnchor);\n // if view intersects horizontally with anchor, we must avoid the anchor\n if (_common_range_js__WEBPACK_IMPORTED_MODULE_4__.Range.intersects({ start: left, end: left + viewSizeWidth }, { start: horizontalAnchor.offset, end: horizontalAnchor.offset + horizontalAnchor.size })) {\n verticalAnchor.mode = LayoutAnchorMode.AVOID;\n }\n top = layout(window.innerHeight, viewSizeHeight, verticalAnchor) + window.pageYOffset;\n }\n this.view.classList.remove('top', 'bottom', 'left', 'right');\n this.view.classList.add(anchorPosition === 0 /* AnchorPosition.BELOW */ ? 'bottom' : 'top');\n this.view.classList.add(anchorAlignment === 0 /* AnchorAlignment.LEFT */ ? 'left' : 'right');\n this.view.classList.toggle('fixed', this.useFixedPosition);\n const containerPosition = _dom_js__WEBPACK_IMPORTED_MODULE_1__.getDomNodePagePosition(this.container);\n this.view.style.top = `${top - (this.useFixedPosition ? _dom_js__WEBPACK_IMPORTED_MODULE_1__.getDomNodePagePosition(this.view).top : containerPosition.top)}px`;\n this.view.style.left = `${left - (this.useFixedPosition ? _dom_js__WEBPACK_IMPORTED_MODULE_1__.getDomNodePagePosition(this.view).left : containerPosition.left)}px`;\n this.view.style.width = 'initial';\n }\n hide(data) {\n const delegate = this.delegate;\n this.delegate = null;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.onHide) {\n delegate.onHide(data);\n }\n this.toDisposeOnClean.dispose();\n _dom_js__WEBPACK_IMPORTED_MODULE_1__.hide(this.view);\n }\n isVisible() {\n return !!this.delegate;\n }\n onDOMEvent(e, onCapture) {\n if (this.delegate) {\n if (this.delegate.onDOMEvent) {\n this.delegate.onDOMEvent(e, document.activeElement);\n }\n else if (onCapture && !_dom_js__WEBPACK_IMPORTED_MODULE_1__.isAncestor(e.target, this.container)) {\n this.hide();\n }\n }\n }\n dispose() {\n this.hide();\n super.dispose();\n }\n}\nContextView.BUBBLE_UP_EVENTS = ['click', 'keydown', 'focus', 'blur'];\nContextView.BUBBLE_DOWN_EVENTS = ['click'];\nconst SHADOW_ROOT_CSS = /* css */ `\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t.codicon[class*='codicon-'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe WPC\", \"Segoe UI\", \"HelveticaNeue-Light\", system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Hiragino Sans GB\", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang TC\", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, \"Hiragino Kaku Gothic Pro\", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, \"Nanum Gothic\", \"Apple SD Gothic Neo\", \"AppleGothic\", sans-serif; }\n\n\t:host-context(.windows) { font-family: \"Segoe WPC\", \"Segoe UI\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft YaHei\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft Jhenghei\", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Yu Gothic UI\", \"Meiryo UI\", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Malgun Gothic\", \"Dotom\", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans SC\", \"Source Han Sans CN\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans TC\", \"Source Han Sans TW\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans J\", \"Source Han Sans JP\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans K\", \"Source Han Sans JR\", \"Source Han Sans\", \"UnDotum\", \"FBaekmuk Gulim\", sans-serif; }\n`;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.js": +/*!************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CountBadge: () => (/* binding */ CountBadge)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/* harmony import */ var _countBadge_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./countBadge.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nclass CountBadge {\n constructor(container, options, styles) {\n this.options = options;\n this.styles = styles;\n this.count = 0;\n this.element = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(container, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-count-badge'));\n this.countFormat = this.options.countFormat || '{0}';\n this.titleFormat = this.options.titleFormat || '';\n this.setCount(this.options.count || 0);\n }\n setCount(count) {\n this.count = count;\n this.render();\n }\n setTitleFormat(titleFormat) {\n this.titleFormat = titleFormat;\n this.render();\n }\n render() {\n var _a, _b;\n this.element.textContent = (0,_common_strings_js__WEBPACK_IMPORTED_MODULE_1__.format)(this.countFormat, this.count);\n this.element.title = (0,_common_strings_js__WEBPACK_IMPORTED_MODULE_1__.format)(this.titleFormat, this.count);\n this.element.style.backgroundColor = (_a = this.styles.badgeBackground) !== null && _a !== void 0 ? _a : '';\n this.element.style.color = (_b = this.styles.badgeForeground) !== null && _b !== void 0 ? _b : '';\n if (this.styles.badgeBorder) {\n this.element.style.border = `1px solid ${this.styles.badgeBorder}`;\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DropdownMenu: () => (/* binding */ DropdownMenu)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _common_actions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/actions.js */ \"./node_modules/monaco-editor/esm/vs/base/common/actions.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _dropdown_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dropdown.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nclass BaseDropdown extends _common_actions_js__WEBPACK_IMPORTED_MODULE_3__.ActionRunner {\n constructor(container, options) {\n super();\n this._onDidChangeVisibility = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onDidChangeVisibility = this._onDidChangeVisibility.event;\n this._element = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(container, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-dropdown'));\n this._label = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(this._element, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.dropdown-label'));\n let labelRenderer = options.labelRenderer;\n if (!labelRenderer) {\n labelRenderer = (container) => {\n container.textContent = options.label || '';\n return null;\n };\n }\n for (const event of [_dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.CLICK, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_DOWN, _touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Tap]) {\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(this.element, event, e => _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true))); // prevent default click behaviour to trigger\n }\n for (const event of [_dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_DOWN, _touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Tap]) {\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(this._label, event, e => {\n if (e instanceof MouseEvent && (e.detail > 1 || e.button !== 0)) {\n // prevent right click trigger to allow separate context menu (https://github.com/microsoft/vscode/issues/151064)\n // prevent multiple clicks to open multiple context menus (https://github.com/microsoft/vscode/issues/41363)\n return;\n }\n if (this.visible) {\n this.hide();\n }\n else {\n this.show();\n }\n }));\n }\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(this._label, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_UP, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__.StandardKeyboardEvent(e);\n if (event.equals(3 /* KeyCode.Enter */) || event.equals(10 /* KeyCode.Space */)) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true); // https://github.com/microsoft/vscode/issues/57997\n if (this.visible) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n }));\n const cleanupFn = labelRenderer(this._label);\n if (cleanupFn) {\n this._register(cleanupFn);\n }\n this._register(_touch_js__WEBPACK_IMPORTED_MODULE_2__.Gesture.addTarget(this._label));\n }\n get element() {\n return this._element;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this._onDidChangeVisibility.fire(true);\n }\n }\n hide() {\n if (this.visible) {\n this.visible = false;\n this._onDidChangeVisibility.fire(false);\n }\n }\n dispose() {\n super.dispose();\n this.hide();\n if (this.boxContainer) {\n this.boxContainer.remove();\n this.boxContainer = undefined;\n }\n if (this.contents) {\n this.contents.remove();\n this.contents = undefined;\n }\n if (this._label) {\n this._label.remove();\n this._label = undefined;\n }\n }\n}\nclass DropdownMenu extends BaseDropdown {\n constructor(container, _options) {\n super(container, _options);\n this._options = _options;\n this._actions = [];\n this.actions = _options.actions || [];\n }\n set menuOptions(options) {\n this._menuOptions = options;\n }\n get menuOptions() {\n return this._menuOptions;\n }\n get actions() {\n if (this._options.actionProvider) {\n return this._options.actionProvider.getActions();\n }\n return this._actions;\n }\n set actions(actions) {\n this._actions = actions;\n }\n show() {\n super.show();\n this.element.classList.add('active');\n this._options.contextMenuProvider.showContextMenu({\n getAnchor: () => this.element,\n getActions: () => this.actions,\n getActionsContext: () => this.menuOptions ? this.menuOptions.context : null,\n getActionViewItem: (action, options) => this.menuOptions && this.menuOptions.actionViewItemProvider ? this.menuOptions.actionViewItemProvider(action, options) : undefined,\n getKeyBinding: action => this.menuOptions && this.menuOptions.getKeyBinding ? this.menuOptions.getKeyBinding(action) : undefined,\n getMenuClassName: () => this._options.menuClassName || '',\n onHide: () => this.onHide(),\n actionRunner: this.menuOptions ? this.menuOptions.actionRunner : undefined,\n anchorAlignment: this.menuOptions ? this.menuOptions.anchorAlignment : 0 /* AnchorAlignment.LEFT */,\n domForShadowRoot: this._options.menuAsChild ? this.element : undefined,\n skipTelemetry: this._options.skipTelemetry\n });\n }\n hide() {\n super.hide();\n }\n onHide() {\n this.hide();\n this.element.classList.remove('active');\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DropdownMenuActionViewItem: () => (/* binding */ DropdownMenuActionViewItem)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _actionbar_actionViewItems_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actionbar/actionViewItems.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js\");\n/* harmony import */ var _dropdown_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dropdown.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _dropdown_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dropdown.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css\");\n\n\n\n\n\nclass DropdownMenuActionViewItem extends _actionbar_actionViewItems_js__WEBPACK_IMPORTED_MODULE_1__.BaseActionViewItem {\n constructor(action, menuActionsOrProvider, contextMenuProvider, options = Object.create(null)) {\n super(null, action, options);\n this.actionItem = null;\n this._onDidChangeVisibility = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_3__.Emitter());\n this.onDidChangeVisibility = this._onDidChangeVisibility.event;\n this.menuActionsOrProvider = menuActionsOrProvider;\n this.contextMenuProvider = contextMenuProvider;\n this.options = options;\n if (this.options.actionRunner) {\n this.actionRunner = this.options.actionRunner;\n }\n }\n render(container) {\n this.actionItem = container;\n const labelRenderer = (el) => {\n this.element = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(el, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('a.action-label'));\n let classNames = [];\n if (typeof this.options.classNames === 'string') {\n classNames = this.options.classNames.split(/\\s+/g).filter(s => !!s);\n }\n else if (this.options.classNames) {\n classNames = this.options.classNames;\n }\n // todo@aeschli: remove codicon, should come through `this.options.classNames`\n if (!classNames.find(c => c === 'icon')) {\n classNames.push('codicon');\n }\n this.element.classList.add(...classNames);\n this.element.setAttribute('role', 'button');\n this.element.setAttribute('aria-haspopup', 'true');\n this.element.setAttribute('aria-expanded', 'false');\n this.element.title = this._action.label || '';\n this.element.ariaLabel = this._action.label || '';\n return null;\n };\n const isActionsArray = Array.isArray(this.menuActionsOrProvider);\n const options = {\n contextMenuProvider: this.contextMenuProvider,\n labelRenderer: labelRenderer,\n menuAsChild: this.options.menuAsChild,\n actions: isActionsArray ? this.menuActionsOrProvider : undefined,\n actionProvider: isActionsArray ? undefined : this.menuActionsOrProvider,\n skipTelemetry: this.options.skipTelemetry\n };\n this.dropdownMenu = this._register(new _dropdown_js__WEBPACK_IMPORTED_MODULE_2__.DropdownMenu(container, options));\n this._register(this.dropdownMenu.onDidChangeVisibility(visible => {\n var _a;\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', `${visible}`);\n this._onDidChangeVisibility.fire(visible);\n }));\n this.dropdownMenu.menuOptions = {\n actionViewItemProvider: this.options.actionViewItemProvider,\n actionRunner: this.actionRunner,\n getKeyBinding: this.options.keybindingProvider,\n context: this._context\n };\n if (this.options.anchorAlignmentProvider) {\n const that = this;\n this.dropdownMenu.menuOptions = Object.assign(Object.assign({}, this.dropdownMenu.menuOptions), { get anchorAlignment() {\n return that.options.anchorAlignmentProvider();\n } });\n }\n this.updateTooltip();\n this.updateEnabled();\n }\n getTooltip() {\n let title = null;\n if (this.action.tooltip) {\n title = this.action.tooltip;\n }\n else if (this.action.label) {\n title = this.action.label;\n }\n return title !== null && title !== void 0 ? title : undefined;\n }\n setActionContext(newContext) {\n super.setActionContext(newContext);\n if (this.dropdownMenu) {\n if (this.dropdownMenu.menuOptions) {\n this.dropdownMenu.menuOptions.context = newContext;\n }\n else {\n this.dropdownMenu.menuOptions = { context: newContext };\n }\n }\n }\n show() {\n var _a;\n (_a = this.dropdownMenu) === null || _a === void 0 ? void 0 : _a.show();\n }\n updateEnabled() {\n var _a, _b;\n const disabled = !this.action.enabled;\n (_a = this.actionItem) === null || _a === void 0 ? void 0 : _a.classList.toggle('disabled', disabled);\n (_b = this.element) === null || _b === void 0 ? void 0 : _b.classList.toggle('disabled', disabled);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FindInput: () => (/* binding */ FindInput)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _findInputToggles_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./findInputToggles.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInputToggles.js\");\n/* harmony import */ var _inputbox_inputBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../inputbox/inputBox.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js\");\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _findInput_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./findInput.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\nconst NLS_DEFAULT_LABEL = _nls_js__WEBPACK_IMPORTED_MODULE_6__.localize('defaultLabel', \"input\");\nclass FindInput extends _widget_js__WEBPACK_IMPORTED_MODULE_3__.Widget {\n constructor(parent, contextViewProvider, options) {\n super();\n this.fixFocusOnOptionClickEnabled = true;\n this.imeSessionInProgress = false;\n this.additionalTogglesDisposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.DisposableStore();\n this.additionalToggles = [];\n this._onDidOptionChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onDidOptionChange = this._onDidOptionChange.event;\n this._onKeyDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onKeyDown = this._onKeyDown.event;\n this._onMouseDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onMouseDown = this._onMouseDown.event;\n this._onInput = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this._onKeyUp = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this._onCaseSensitiveKeyDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onCaseSensitiveKeyDown = this._onCaseSensitiveKeyDown.event;\n this._onRegexKeyDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_4__.Emitter());\n this.onRegexKeyDown = this._onRegexKeyDown.event;\n this._lastHighlightFindOptions = 0;\n this.placeholder = options.placeholder || '';\n this.validation = options.validation;\n this.label = options.label || NLS_DEFAULT_LABEL;\n this.showCommonFindToggles = !!options.showCommonFindToggles;\n const appendCaseSensitiveLabel = options.appendCaseSensitiveLabel || '';\n const appendWholeWordsLabel = options.appendWholeWordsLabel || '';\n const appendRegexLabel = options.appendRegexLabel || '';\n const history = options.history || [];\n const flexibleHeight = !!options.flexibleHeight;\n const flexibleWidth = !!options.flexibleWidth;\n const flexibleMaxHeight = options.flexibleMaxHeight;\n this.domNode = document.createElement('div');\n this.domNode.classList.add('monaco-findInput');\n this.inputBox = this._register(new _inputbox_inputBox_js__WEBPACK_IMPORTED_MODULE_2__.HistoryInputBox(this.domNode, contextViewProvider, {\n placeholder: this.placeholder || '',\n ariaLabel: this.label || '',\n validationOptions: {\n validation: this.validation\n },\n history,\n showHistoryHint: options.showHistoryHint,\n flexibleHeight,\n flexibleWidth,\n flexibleMaxHeight,\n inputBoxStyles: options.inputBoxStyles,\n }));\n if (this.showCommonFindToggles) {\n this.regex = this._register(new _findInputToggles_js__WEBPACK_IMPORTED_MODULE_1__.RegexToggle(Object.assign({ appendTitle: appendRegexLabel, isChecked: false }, options.toggleStyles)));\n this._register(this.regex.onChange(viaKeyboard => {\n this._onDidOptionChange.fire(viaKeyboard);\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\n this.inputBox.focus();\n }\n this.validate();\n }));\n this._register(this.regex.onKeyDown(e => {\n this._onRegexKeyDown.fire(e);\n }));\n this.wholeWords = this._register(new _findInputToggles_js__WEBPACK_IMPORTED_MODULE_1__.WholeWordsToggle(Object.assign({ appendTitle: appendWholeWordsLabel, isChecked: false }, options.toggleStyles)));\n this._register(this.wholeWords.onChange(viaKeyboard => {\n this._onDidOptionChange.fire(viaKeyboard);\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\n this.inputBox.focus();\n }\n this.validate();\n }));\n this.caseSensitive = this._register(new _findInputToggles_js__WEBPACK_IMPORTED_MODULE_1__.CaseSensitiveToggle(Object.assign({ appendTitle: appendCaseSensitiveLabel, isChecked: false }, options.toggleStyles)));\n this._register(this.caseSensitive.onChange(viaKeyboard => {\n this._onDidOptionChange.fire(viaKeyboard);\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\n this.inputBox.focus();\n }\n this.validate();\n }));\n this._register(this.caseSensitive.onKeyDown(e => {\n this._onCaseSensitiveKeyDown.fire(e);\n }));\n // Arrow-Key support to navigate between options\n const indexes = [this.caseSensitive.domNode, this.wholeWords.domNode, this.regex.domNode];\n this.onkeydown(this.domNode, (event) => {\n if (event.equals(15 /* KeyCode.LeftArrow */) || event.equals(17 /* KeyCode.RightArrow */) || event.equals(9 /* KeyCode.Escape */)) {\n const index = indexes.indexOf(document.activeElement);\n if (index >= 0) {\n let newIndex = -1;\n if (event.equals(17 /* KeyCode.RightArrow */)) {\n newIndex = (index + 1) % indexes.length;\n }\n else if (event.equals(15 /* KeyCode.LeftArrow */)) {\n if (index === 0) {\n newIndex = indexes.length - 1;\n }\n else {\n newIndex = index - 1;\n }\n }\n if (event.equals(9 /* KeyCode.Escape */)) {\n indexes[index].blur();\n this.inputBox.focus();\n }\n else if (newIndex >= 0) {\n indexes[newIndex].focus();\n }\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(event, true);\n }\n }\n });\n }\n this.controls = document.createElement('div');\n this.controls.className = 'controls';\n this.controls.style.display = this.showCommonFindToggles ? '' : 'none';\n if (this.caseSensitive) {\n this.controls.append(this.caseSensitive.domNode);\n }\n if (this.wholeWords) {\n this.controls.appendChild(this.wholeWords.domNode);\n }\n if (this.regex) {\n this.controls.appendChild(this.regex.domNode);\n }\n this.setAdditionalToggles(options === null || options === void 0 ? void 0 : options.additionalToggles);\n if (this.controls) {\n this.domNode.appendChild(this.controls);\n }\n parent === null || parent === void 0 ? void 0 : parent.appendChild(this.domNode);\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.inputBox.inputElement, 'compositionstart', (e) => {\n this.imeSessionInProgress = true;\n }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.inputBox.inputElement, 'compositionend', (e) => {\n this.imeSessionInProgress = false;\n this._onInput.fire();\n }));\n this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\n this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\n this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\n this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\n }\n get onDidChange() {\n return this.inputBox.onDidChange;\n }\n layout(style) {\n this.inputBox.layout();\n this.updateInputBoxPadding(style.collapsedFindWidget);\n }\n enable() {\n var _a, _b, _c;\n this.domNode.classList.remove('disabled');\n this.inputBox.enable();\n (_a = this.regex) === null || _a === void 0 ? void 0 : _a.enable();\n (_b = this.wholeWords) === null || _b === void 0 ? void 0 : _b.enable();\n (_c = this.caseSensitive) === null || _c === void 0 ? void 0 : _c.enable();\n for (const toggle of this.additionalToggles) {\n toggle.enable();\n }\n }\n disable() {\n var _a, _b, _c;\n this.domNode.classList.add('disabled');\n this.inputBox.disable();\n (_a = this.regex) === null || _a === void 0 ? void 0 : _a.disable();\n (_b = this.wholeWords) === null || _b === void 0 ? void 0 : _b.disable();\n (_c = this.caseSensitive) === null || _c === void 0 ? void 0 : _c.disable();\n for (const toggle of this.additionalToggles) {\n toggle.disable();\n }\n }\n setFocusInputOnOptionClick(value) {\n this.fixFocusOnOptionClickEnabled = value;\n }\n setEnabled(enabled) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n setAdditionalToggles(toggles) {\n for (const currentToggle of this.additionalToggles) {\n currentToggle.domNode.remove();\n }\n this.additionalToggles = [];\n this.additionalTogglesDisposables.dispose();\n this.additionalTogglesDisposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.DisposableStore();\n for (const toggle of toggles !== null && toggles !== void 0 ? toggles : []) {\n this.additionalTogglesDisposables.add(toggle);\n this.controls.appendChild(toggle.domNode);\n this.additionalTogglesDisposables.add(toggle.onChange(viaKeyboard => {\n this._onDidOptionChange.fire(viaKeyboard);\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\n this.inputBox.focus();\n }\n }));\n this.additionalToggles.push(toggle);\n }\n if (this.additionalToggles.length > 0) {\n this.controls.style.display = '';\n }\n this.updateInputBoxPadding();\n }\n updateInputBoxPadding(controlsHidden = false) {\n var _a, _b, _c, _d, _e, _f;\n if (controlsHidden) {\n this.inputBox.paddingRight = 0;\n }\n else {\n this.inputBox.paddingRight =\n (((_b = (_a = this.caseSensitive) === null || _a === void 0 ? void 0 : _a.width()) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = this.wholeWords) === null || _c === void 0 ? void 0 : _c.width()) !== null && _d !== void 0 ? _d : 0) + ((_f = (_e = this.regex) === null || _e === void 0 ? void 0 : _e.width()) !== null && _f !== void 0 ? _f : 0))\n + this.additionalToggles.reduce((r, t) => r + t.width(), 0);\n }\n }\n getValue() {\n return this.inputBox.value;\n }\n setValue(value) {\n if (this.inputBox.value !== value) {\n this.inputBox.value = value;\n }\n }\n select() {\n this.inputBox.select();\n }\n focus() {\n this.inputBox.focus();\n }\n getCaseSensitive() {\n var _a, _b;\n return (_b = (_a = this.caseSensitive) === null || _a === void 0 ? void 0 : _a.checked) !== null && _b !== void 0 ? _b : false;\n }\n setCaseSensitive(value) {\n if (this.caseSensitive) {\n this.caseSensitive.checked = value;\n }\n }\n getWholeWords() {\n var _a, _b;\n return (_b = (_a = this.wholeWords) === null || _a === void 0 ? void 0 : _a.checked) !== null && _b !== void 0 ? _b : false;\n }\n setWholeWords(value) {\n if (this.wholeWords) {\n this.wholeWords.checked = value;\n }\n }\n getRegex() {\n var _a, _b;\n return (_b = (_a = this.regex) === null || _a === void 0 ? void 0 : _a.checked) !== null && _b !== void 0 ? _b : false;\n }\n setRegex(value) {\n if (this.regex) {\n this.regex.checked = value;\n this.validate();\n }\n }\n focusOnCaseSensitive() {\n var _a;\n (_a = this.caseSensitive) === null || _a === void 0 ? void 0 : _a.focus();\n }\n highlightFindOptions() {\n this.domNode.classList.remove('highlight-' + (this._lastHighlightFindOptions));\n this._lastHighlightFindOptions = 1 - this._lastHighlightFindOptions;\n this.domNode.classList.add('highlight-' + (this._lastHighlightFindOptions));\n }\n validate() {\n this.inputBox.validate();\n }\n showMessage(message) {\n this.inputBox.showMessage(message);\n }\n clearMessage() {\n this.inputBox.hideMessage();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInputToggles.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInputToggles.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CaseSensitiveToggle: () => (/* binding */ CaseSensitiveToggle),\n/* harmony export */ RegexToggle: () => (/* binding */ RegexToggle),\n/* harmony export */ WholeWordsToggle: () => (/* binding */ WholeWordsToggle)\n/* harmony export */ });\n/* harmony import */ var _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../toggle/toggle.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nconst NLS_CASE_SENSITIVE_TOGGLE_LABEL = _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('caseDescription', \"Match Case\");\nconst NLS_WHOLE_WORD_TOGGLE_LABEL = _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('wordsDescription', \"Match Whole Word\");\nconst NLS_REGEX_TOGGLE_LABEL = _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('regexDescription', \"Use Regular Expression\");\nclass CaseSensitiveToggle extends _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_0__.Toggle {\n constructor(opts) {\n super({\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_1__.Codicon.caseSensitive,\n title: NLS_CASE_SENSITIVE_TOGGLE_LABEL + opts.appendTitle,\n isChecked: opts.isChecked,\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts.inputActiveOptionBackground\n });\n }\n}\nclass WholeWordsToggle extends _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_0__.Toggle {\n constructor(opts) {\n super({\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_1__.Codicon.wholeWord,\n title: NLS_WHOLE_WORD_TOGGLE_LABEL + opts.appendTitle,\n isChecked: opts.isChecked,\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts.inputActiveOptionBackground\n });\n }\n}\nclass RegexToggle extends _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_0__.Toggle {\n constructor(opts) {\n super({\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_1__.Codicon.regex,\n title: NLS_REGEX_TOGGLE_LABEL + opts.appendTitle,\n isChecked: opts.isChecked,\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts.inputActiveOptionBackground\n });\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInputToggles.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/replaceInput.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/replaceInput.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReplaceInput: () => (/* binding */ ReplaceInput)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../toggle/toggle.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js\");\n/* harmony import */ var _inputbox_inputBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../inputbox/inputBox.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js\");\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _findInput_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./findInput.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\nconst NLS_DEFAULT_LABEL = _nls_js__WEBPACK_IMPORTED_MODULE_7__.localize('defaultLabel', \"input\");\nconst NLS_PRESERVE_CASE_LABEL = _nls_js__WEBPACK_IMPORTED_MODULE_7__.localize('label.preserveCaseToggle', \"Preserve Case\");\nclass PreserveCaseToggle extends _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_1__.Toggle {\n constructor(opts) {\n super({\n // TODO: does this need its own icon?\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__.Codicon.preserveCase,\n title: NLS_PRESERVE_CASE_LABEL + opts.appendTitle,\n isChecked: opts.isChecked,\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts.inputActiveOptionBackground\n });\n }\n}\nclass ReplaceInput extends _widget_js__WEBPACK_IMPORTED_MODULE_3__.Widget {\n constructor(parent, contextViewProvider, _showOptionButtons, options) {\n super();\n this._showOptionButtons = _showOptionButtons;\n this.fixFocusOnOptionClickEnabled = true;\n this.cachedOptionsWidth = 0;\n this._onDidOptionChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this.onDidOptionChange = this._onDidOptionChange.event;\n this._onKeyDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this.onKeyDown = this._onKeyDown.event;\n this._onMouseDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this._onInput = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this._onKeyUp = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this._onPreserveCaseKeyDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this.onPreserveCaseKeyDown = this._onPreserveCaseKeyDown.event;\n this.contextViewProvider = contextViewProvider;\n this.placeholder = options.placeholder || '';\n this.validation = options.validation;\n this.label = options.label || NLS_DEFAULT_LABEL;\n const appendPreserveCaseLabel = options.appendPreserveCaseLabel || '';\n const history = options.history || [];\n const flexibleHeight = !!options.flexibleHeight;\n const flexibleWidth = !!options.flexibleWidth;\n const flexibleMaxHeight = options.flexibleMaxHeight;\n this.domNode = document.createElement('div');\n this.domNode.classList.add('monaco-findInput');\n this.inputBox = this._register(new _inputbox_inputBox_js__WEBPACK_IMPORTED_MODULE_2__.HistoryInputBox(this.domNode, this.contextViewProvider, {\n ariaLabel: this.label || '',\n placeholder: this.placeholder || '',\n validationOptions: {\n validation: this.validation\n },\n history,\n showHistoryHint: options.showHistoryHint,\n flexibleHeight,\n flexibleWidth,\n flexibleMaxHeight,\n inputBoxStyles: options.inputBoxStyles\n }));\n this.preserveCase = this._register(new PreserveCaseToggle(Object.assign({ appendTitle: appendPreserveCaseLabel, isChecked: false }, options.toggleStyles)));\n this._register(this.preserveCase.onChange(viaKeyboard => {\n this._onDidOptionChange.fire(viaKeyboard);\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\n this.inputBox.focus();\n }\n this.validate();\n }));\n this._register(this.preserveCase.onKeyDown(e => {\n this._onPreserveCaseKeyDown.fire(e);\n }));\n if (this._showOptionButtons) {\n this.cachedOptionsWidth = this.preserveCase.width();\n }\n else {\n this.cachedOptionsWidth = 0;\n }\n // Arrow-Key support to navigate between options\n const indexes = [this.preserveCase.domNode];\n this.onkeydown(this.domNode, (event) => {\n if (event.equals(15 /* KeyCode.LeftArrow */) || event.equals(17 /* KeyCode.RightArrow */) || event.equals(9 /* KeyCode.Escape */)) {\n const index = indexes.indexOf(document.activeElement);\n if (index >= 0) {\n let newIndex = -1;\n if (event.equals(17 /* KeyCode.RightArrow */)) {\n newIndex = (index + 1) % indexes.length;\n }\n else if (event.equals(15 /* KeyCode.LeftArrow */)) {\n if (index === 0) {\n newIndex = indexes.length - 1;\n }\n else {\n newIndex = index - 1;\n }\n }\n if (event.equals(9 /* KeyCode.Escape */)) {\n indexes[index].blur();\n this.inputBox.focus();\n }\n else if (newIndex >= 0) {\n indexes[newIndex].focus();\n }\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(event, true);\n }\n }\n });\n const controls = document.createElement('div');\n controls.className = 'controls';\n controls.style.display = this._showOptionButtons ? 'block' : 'none';\n controls.appendChild(this.preserveCase.domNode);\n this.domNode.appendChild(controls);\n parent === null || parent === void 0 ? void 0 : parent.appendChild(this.domNode);\n this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\n this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\n this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\n this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\n }\n enable() {\n this.domNode.classList.remove('disabled');\n this.inputBox.enable();\n this.preserveCase.enable();\n }\n disable() {\n this.domNode.classList.add('disabled');\n this.inputBox.disable();\n this.preserveCase.disable();\n }\n setEnabled(enabled) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n select() {\n this.inputBox.select();\n }\n focus() {\n this.inputBox.focus();\n }\n getPreserveCase() {\n return this.preserveCase.checked;\n }\n setPreserveCase(value) {\n this.preserveCase.checked = value;\n }\n focusOnPreserve() {\n this.preserveCase.focus();\n }\n validate() {\n var _a;\n (_a = this.inputBox) === null || _a === void 0 ? void 0 : _a.validate();\n }\n set width(newWidth) {\n this.inputBox.paddingRight = this.cachedOptionsWidth;\n this.domNode.style.width = newWidth + 'px';\n }\n dispose() {\n super.dispose();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/replaceInput.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js": +/*!************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HighlightedLabel: () => (/* binding */ HighlightedLabel)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _iconLabel_iconLabels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../iconLabel/iconLabels.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js\");\n/* harmony import */ var _common_objects_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/objects.js */ \"./node_modules/monaco-editor/esm/vs/base/common/objects.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n/**\n * A widget which can render a label with substring highlights, often\n * originating from a filter function like the fuzzy matcher.\n */\nclass HighlightedLabel {\n /**\n * Create a new {@link HighlightedLabel}.\n *\n * @param container The parent container to append to.\n */\n constructor(container, options) {\n var _a;\n this.text = '';\n this.title = '';\n this.highlights = [];\n this.didEverRender = false;\n this.supportIcons = (_a = options === null || options === void 0 ? void 0 : options.supportIcons) !== null && _a !== void 0 ? _a : false;\n this.domNode = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, _dom_js__WEBPACK_IMPORTED_MODULE_0__.$('span.monaco-highlighted-label'));\n }\n /**\n * The label's DOM node.\n */\n get element() {\n return this.domNode;\n }\n /**\n * Set the label and highlights.\n *\n * @param text The label to display.\n * @param highlights The ranges to highlight.\n * @param title An optional title for the hover tooltip.\n * @param escapeNewLines Whether to escape new lines.\n * @returns\n */\n set(text, highlights = [], title = '', escapeNewLines) {\n if (!text) {\n text = '';\n }\n if (escapeNewLines) {\n // adjusts highlights inplace\n text = HighlightedLabel.escapeNewLines(text, highlights);\n }\n if (this.didEverRender && this.text === text && this.title === title && _common_objects_js__WEBPACK_IMPORTED_MODULE_2__.equals(this.highlights, highlights)) {\n return;\n }\n this.text = text;\n this.title = title;\n this.highlights = highlights;\n this.render();\n }\n render() {\n const children = [];\n let pos = 0;\n for (const highlight of this.highlights) {\n if (highlight.end === highlight.start) {\n continue;\n }\n if (pos < highlight.start) {\n const substring = this.text.substring(pos, highlight.start);\n if (this.supportIcons) {\n children.push(...(0,_iconLabel_iconLabels_js__WEBPACK_IMPORTED_MODULE_1__.renderLabelWithIcons)(substring));\n }\n else {\n children.push(substring);\n }\n pos = highlight.start;\n }\n const substring = this.text.substring(pos, highlight.end);\n const element = _dom_js__WEBPACK_IMPORTED_MODULE_0__.$('span.highlight', undefined, ...this.supportIcons ? (0,_iconLabel_iconLabels_js__WEBPACK_IMPORTED_MODULE_1__.renderLabelWithIcons)(substring) : [substring]);\n if (highlight.extraClasses) {\n element.classList.add(...highlight.extraClasses);\n }\n children.push(element);\n pos = highlight.end;\n }\n if (pos < this.text.length) {\n const substring = this.text.substring(pos);\n if (this.supportIcons) {\n children.push(...(0,_iconLabel_iconLabels_js__WEBPACK_IMPORTED_MODULE_1__.renderLabelWithIcons)(substring));\n }\n else {\n children.push(substring);\n }\n }\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.reset(this.domNode, ...children);\n if (this.title) {\n this.domNode.title = this.title;\n }\n else {\n this.domNode.removeAttribute('title');\n }\n this.didEverRender = true;\n }\n static escapeNewLines(text, highlights) {\n let total = 0;\n let extra = 0;\n return text.replace(/\\r\\n|\\r|\\n/g, (match, offset) => {\n extra = match === '\\r\\n' ? -1 : 0;\n offset += total;\n for (const highlight of highlights) {\n if (highlight.end <= offset) {\n continue;\n }\n if (highlight.start >= offset) {\n highlight.start += extra;\n }\n if (highlight.end >= offset) {\n highlight.end += extra;\n }\n }\n total += extra;\n return '\\u23CE';\n });\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hoverWidget.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hoverWidget.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HoverAction: () => (/* binding */ HoverAction),\n/* harmony export */ HoverWidget: () => (/* binding */ HoverWidget)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scrollbar/scrollableElement.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _hover_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hover.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nconst $ = _dom_js__WEBPACK_IMPORTED_MODULE_0__.$;\nclass HoverWidget extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.Disposable {\n constructor() {\n super();\n this.containerDomNode = document.createElement('div');\n this.containerDomNode.className = 'monaco-hover';\n this.containerDomNode.tabIndex = 0;\n this.containerDomNode.setAttribute('role', 'tooltip');\n this.contentsDomNode = document.createElement('div');\n this.contentsDomNode.className = 'monaco-hover-content';\n this.scrollbar = this._register(new _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_2__.DomScrollableElement(this.contentsDomNode, {\n consumeMouseWheelIfScrollbarIsNeeded: true\n }));\n this.containerDomNode.appendChild(this.scrollbar.getDomNode());\n }\n onContentsChanged() {\n this.scrollbar.scanDomNode();\n }\n}\nclass HoverAction extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.Disposable {\n static render(parent, actionOptions, keybindingLabel) {\n return new HoverAction(parent, actionOptions, keybindingLabel);\n }\n constructor(parent, actionOptions, keybindingLabel) {\n super();\n this.actionContainer = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(parent, $('div.action-container'));\n this.actionContainer.setAttribute('tabindex', '0');\n this.action = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(this.actionContainer, $('a.action'));\n this.action.setAttribute('role', 'button');\n if (actionOptions.iconClass) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(this.action, $(`span.icon.${actionOptions.iconClass}`));\n }\n const label = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(this.action, $('span'));\n label.textContent = keybindingLabel ? `${actionOptions.label} (${keybindingLabel})` : actionOptions.label;\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.actionContainer, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.CLICK, e => {\n e.stopPropagation();\n e.preventDefault();\n actionOptions.run(this.actionContainer);\n }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.actionContainer, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_DOWN, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__.StandardKeyboardEvent(e);\n if (event.equals(3 /* KeyCode.Enter */) || event.equals(10 /* KeyCode.Space */)) {\n e.stopPropagation();\n e.preventDefault();\n actionOptions.run(this.actionContainer);\n }\n }));\n this.setEnabled(true);\n }\n setEnabled(enabled) {\n if (enabled) {\n this.actionContainer.classList.remove('disabled');\n this.actionContainer.removeAttribute('aria-disabled');\n }\n else {\n this.actionContainer.classList.add('disabled');\n this.actionContainer.setAttribute('aria-disabled', 'true');\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hoverWidget.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabel.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabel.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IconLabel: () => (/* binding */ IconLabel)\n/* harmony export */ });\n/* harmony import */ var _iconlabel_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./iconlabel.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _highlightedlabel_highlightedLabel_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../highlightedlabel/highlightedLabel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js\");\n/* harmony import */ var _iconLabelHover_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./iconLabelHover.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_objects_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/objects.js */ \"./node_modules/monaco-editor/esm/vs/base/common/objects.js\");\n/* harmony import */ var _common_range_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/range.js */ \"./node_modules/monaco-editor/esm/vs/base/common/range.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\nclass FastLabelNode {\n constructor(_element) {\n this._element = _element;\n }\n get element() {\n return this._element;\n }\n set textContent(content) {\n if (this.disposed || content === this._textContent) {\n return;\n }\n this._textContent = content;\n this._element.textContent = content;\n }\n set className(className) {\n if (this.disposed || className === this._className) {\n return;\n }\n this._className = className;\n this._element.className = className;\n }\n set empty(empty) {\n if (this.disposed || empty === this._empty) {\n return;\n }\n this._empty = empty;\n this._element.style.marginLeft = empty ? '0' : '';\n }\n dispose() {\n this.disposed = true;\n }\n}\nclass IconLabel extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__.Disposable {\n constructor(container, options) {\n super();\n this.customHovers = new Map();\n this.creationOptions = options;\n this.domNode = this._register(new FastLabelNode(_dom_js__WEBPACK_IMPORTED_MODULE_1__.append(container, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('.monaco-icon-label'))));\n this.labelContainer = _dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.domNode.element, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('.monaco-icon-label-container'));\n const nameContainer = _dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.labelContainer, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('span.monaco-icon-name-container'));\n if ((options === null || options === void 0 ? void 0 : options.supportHighlights) || (options === null || options === void 0 ? void 0 : options.supportIcons)) {\n this.nameNode = new LabelWithHighlights(nameContainer, !!options.supportIcons);\n }\n else {\n this.nameNode = new Label(nameContainer);\n }\n this.hoverDelegate = options === null || options === void 0 ? void 0 : options.hoverDelegate;\n }\n get element() {\n return this.domNode.element;\n }\n setLabel(label, description, options) {\n const labelClasses = ['monaco-icon-label'];\n const containerClasses = ['monaco-icon-label-container'];\n if (options) {\n if (options.extraClasses) {\n labelClasses.push(...options.extraClasses);\n }\n if (options.italic) {\n labelClasses.push('italic');\n }\n if (options.strikethrough) {\n labelClasses.push('strikethrough');\n }\n if (options.disabledCommand) {\n containerClasses.push('disabled');\n }\n }\n this.domNode.className = labelClasses.join(' ');\n this.labelContainer.className = containerClasses.join(' ');\n this.setupHover((options === null || options === void 0 ? void 0 : options.descriptionTitle) ? this.labelContainer : this.element, options === null || options === void 0 ? void 0 : options.title);\n this.nameNode.setLabel(label, options);\n if (description || this.descriptionNode) {\n const descriptionNode = this.getOrCreateDescriptionNode();\n if (descriptionNode instanceof _highlightedlabel_highlightedLabel_js__WEBPACK_IMPORTED_MODULE_2__.HighlightedLabel) {\n descriptionNode.set(description || '', options ? options.descriptionMatches : undefined, undefined, options === null || options === void 0 ? void 0 : options.labelEscapeNewLines);\n this.setupHover(descriptionNode.element, options === null || options === void 0 ? void 0 : options.descriptionTitle);\n }\n else {\n descriptionNode.textContent = description && (options === null || options === void 0 ? void 0 : options.labelEscapeNewLines) ? _highlightedlabel_highlightedLabel_js__WEBPACK_IMPORTED_MODULE_2__.HighlightedLabel.escapeNewLines(description, []) : (description || '');\n this.setupHover(descriptionNode.element, (options === null || options === void 0 ? void 0 : options.descriptionTitle) || '');\n descriptionNode.empty = !description;\n }\n }\n }\n setupHover(htmlElement, tooltip) {\n const previousCustomHover = this.customHovers.get(htmlElement);\n if (previousCustomHover) {\n previousCustomHover.dispose();\n this.customHovers.delete(htmlElement);\n }\n if (!tooltip) {\n htmlElement.removeAttribute('title');\n return;\n }\n if (!this.hoverDelegate) {\n (0,_iconLabelHover_js__WEBPACK_IMPORTED_MODULE_3__.setupNativeHover)(htmlElement, tooltip);\n }\n else {\n const hoverDisposable = (0,_iconLabelHover_js__WEBPACK_IMPORTED_MODULE_3__.setupCustomHover)(this.hoverDelegate, htmlElement, tooltip);\n if (hoverDisposable) {\n this.customHovers.set(htmlElement, hoverDisposable);\n }\n }\n }\n dispose() {\n super.dispose();\n for (const disposable of this.customHovers.values()) {\n disposable.dispose();\n }\n this.customHovers.clear();\n }\n getOrCreateDescriptionNode() {\n var _a;\n if (!this.descriptionNode) {\n const descriptionContainer = this._register(new FastLabelNode(_dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.labelContainer, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('span.monaco-icon-description-container'))));\n if ((_a = this.creationOptions) === null || _a === void 0 ? void 0 : _a.supportDescriptionHighlights) {\n this.descriptionNode = new _highlightedlabel_highlightedLabel_js__WEBPACK_IMPORTED_MODULE_2__.HighlightedLabel(_dom_js__WEBPACK_IMPORTED_MODULE_1__.append(descriptionContainer.element, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('span.label-description')), { supportIcons: !!this.creationOptions.supportIcons });\n }\n else {\n this.descriptionNode = this._register(new FastLabelNode(_dom_js__WEBPACK_IMPORTED_MODULE_1__.append(descriptionContainer.element, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('span.label-description'))));\n }\n }\n return this.descriptionNode;\n }\n}\nclass Label {\n constructor(container) {\n this.container = container;\n this.label = undefined;\n this.singleLabel = undefined;\n }\n setLabel(label, options) {\n if (this.label === label && (0,_common_objects_js__WEBPACK_IMPORTED_MODULE_5__.equals)(this.options, options)) {\n return;\n }\n this.label = label;\n this.options = options;\n if (typeof label === 'string') {\n if (!this.singleLabel) {\n this.container.innerText = '';\n this.container.classList.remove('multiple');\n this.singleLabel = _dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.container, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('a.label-name', { id: options === null || options === void 0 ? void 0 : options.domId }));\n }\n this.singleLabel.textContent = label;\n }\n else {\n this.container.innerText = '';\n this.container.classList.add('multiple');\n this.singleLabel = undefined;\n for (let i = 0; i < label.length; i++) {\n const l = label[i];\n const id = (options === null || options === void 0 ? void 0 : options.domId) && `${options === null || options === void 0 ? void 0 : options.domId}_${i}`;\n _dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.container, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' }, l));\n if (i < label.length - 1) {\n _dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.container, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('span.label-separator', undefined, (options === null || options === void 0 ? void 0 : options.separator) || '/'));\n }\n }\n }\n }\n}\nfunction splitMatches(labels, separator, matches) {\n if (!matches) {\n return undefined;\n }\n let labelStart = 0;\n return labels.map(label => {\n const labelRange = { start: labelStart, end: labelStart + label.length };\n const result = matches\n .map(match => _common_range_js__WEBPACK_IMPORTED_MODULE_6__.Range.intersect(labelRange, match))\n .filter(range => !_common_range_js__WEBPACK_IMPORTED_MODULE_6__.Range.isEmpty(range))\n .map(({ start, end }) => ({ start: start - labelStart, end: end - labelStart }));\n labelStart = labelRange.end + separator.length;\n return result;\n });\n}\nclass LabelWithHighlights {\n constructor(container, supportIcons) {\n this.container = container;\n this.supportIcons = supportIcons;\n this.label = undefined;\n this.singleLabel = undefined;\n }\n setLabel(label, options) {\n if (this.label === label && (0,_common_objects_js__WEBPACK_IMPORTED_MODULE_5__.equals)(this.options, options)) {\n return;\n }\n this.label = label;\n this.options = options;\n if (typeof label === 'string') {\n if (!this.singleLabel) {\n this.container.innerText = '';\n this.container.classList.remove('multiple');\n this.singleLabel = new _highlightedlabel_highlightedLabel_js__WEBPACK_IMPORTED_MODULE_2__.HighlightedLabel(_dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.container, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('a.label-name', { id: options === null || options === void 0 ? void 0 : options.domId })), { supportIcons: this.supportIcons });\n }\n this.singleLabel.set(label, options === null || options === void 0 ? void 0 : options.matches, undefined, options === null || options === void 0 ? void 0 : options.labelEscapeNewLines);\n }\n else {\n this.container.innerText = '';\n this.container.classList.add('multiple');\n this.singleLabel = undefined;\n const separator = (options === null || options === void 0 ? void 0 : options.separator) || '/';\n const matches = splitMatches(label, separator, options === null || options === void 0 ? void 0 : options.matches);\n for (let i = 0; i < label.length; i++) {\n const l = label[i];\n const m = matches ? matches[i] : undefined;\n const id = (options === null || options === void 0 ? void 0 : options.domId) && `${options === null || options === void 0 ? void 0 : options.domId}_${i}`;\n const name = _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });\n const highlightedLabel = new _highlightedlabel_highlightedLabel_js__WEBPACK_IMPORTED_MODULE_2__.HighlightedLabel(_dom_js__WEBPACK_IMPORTED_MODULE_1__.append(this.container, name), { supportIcons: this.supportIcons });\n highlightedLabel.set(l, m, undefined, options === null || options === void 0 ? void 0 : options.labelEscapeNewLines);\n if (i < label.length - 1) {\n _dom_js__WEBPACK_IMPORTED_MODULE_1__.append(name, _dom_js__WEBPACK_IMPORTED_MODULE_1__.$('span.label-separator', undefined, separator));\n }\n }\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabel.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupCustomHover: () => (/* binding */ setupCustomHover),\n/* harmony export */ setupNativeHover: () => (/* binding */ setupNativeHover)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_cancellation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/cancellation.js */ \"./node_modules/monaco-editor/esm/vs/base/common/cancellation.js\");\n/* harmony import */ var _common_htmlContent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/htmlContent.js */ \"./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js\");\n/* harmony import */ var _common_iconLabels_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/iconLabels.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\nfunction setupNativeHover(htmlElement, tooltip) {\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_6__.isString)(tooltip)) {\n // Icons don't render in the native hover so we strip them out\n htmlElement.title = (0,_common_iconLabels_js__WEBPACK_IMPORTED_MODULE_4__.stripIcons)(tooltip);\n }\n else if (tooltip === null || tooltip === void 0 ? void 0 : tooltip.markdownNotSupportedFallback) {\n htmlElement.title = tooltip.markdownNotSupportedFallback;\n }\n else {\n htmlElement.removeAttribute('title');\n }\n}\nclass UpdatableHoverWidget {\n constructor(hoverDelegate, target, fadeInAnimation) {\n this.hoverDelegate = hoverDelegate;\n this.target = target;\n this.fadeInAnimation = fadeInAnimation;\n }\n update(content, focus, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._cancellationTokenSource) {\n // there's an computation ongoing, cancel it\n this._cancellationTokenSource.dispose(true);\n this._cancellationTokenSource = undefined;\n }\n if (this.isDisposed) {\n return;\n }\n let resolvedContent;\n if (content === undefined || (0,_common_types_js__WEBPACK_IMPORTED_MODULE_6__.isString)(content) || content instanceof HTMLElement) {\n resolvedContent = content;\n }\n else if (!(0,_common_types_js__WEBPACK_IMPORTED_MODULE_6__.isFunction)(content.markdown)) {\n resolvedContent = (_a = content.markdown) !== null && _a !== void 0 ? _a : content.markdownNotSupportedFallback;\n }\n else {\n // compute the content, potentially long-running\n // show 'Loading' if no hover is up yet\n if (!this._hoverWidget) {\n this.show((0,_nls_js__WEBPACK_IMPORTED_MODULE_7__.localize)('iconLabel.loading', \"Loading...\"), focus);\n }\n // compute the content\n this._cancellationTokenSource = new _common_cancellation_js__WEBPACK_IMPORTED_MODULE_2__.CancellationTokenSource();\n const token = this._cancellationTokenSource.token;\n resolvedContent = yield content.markdown(token);\n if (resolvedContent === undefined) {\n resolvedContent = content.markdownNotSupportedFallback;\n }\n if (this.isDisposed || token.isCancellationRequested) {\n // either the widget has been closed in the meantime\n // or there has been a new call to `update`\n return;\n }\n }\n this.show(resolvedContent, focus, options);\n });\n }\n show(content, focus, options) {\n const oldHoverWidget = this._hoverWidget;\n if (this.hasContent(content)) {\n const hoverOptions = Object.assign({ content, target: this.target, showPointer: this.hoverDelegate.placement === 'element', hoverPosition: 2 /* HoverPosition.BELOW */, skipFadeInAnimation: !this.fadeInAnimation || !!oldHoverWidget }, options);\n this._hoverWidget = this.hoverDelegate.showHover(hoverOptions, focus);\n }\n oldHoverWidget === null || oldHoverWidget === void 0 ? void 0 : oldHoverWidget.dispose();\n }\n hasContent(content) {\n if (!content) {\n return false;\n }\n if ((0,_common_htmlContent_js__WEBPACK_IMPORTED_MODULE_3__.isMarkdownString)(content)) {\n return !!content.value;\n }\n return true;\n }\n get isDisposed() {\n var _a;\n return (_a = this._hoverWidget) === null || _a === void 0 ? void 0 : _a.isDisposed;\n }\n dispose() {\n var _a, _b;\n (_a = this._hoverWidget) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this._cancellationTokenSource) === null || _b === void 0 ? void 0 : _b.dispose(true);\n this._cancellationTokenSource = undefined;\n }\n}\nfunction setupCustomHover(hoverDelegate, htmlElement, content, options) {\n let hoverPreparation;\n let hoverWidget;\n const hideHover = (disposeWidget, disposePreparation) => {\n var _a;\n const hadHover = hoverWidget !== undefined;\n if (disposeWidget) {\n hoverWidget === null || hoverWidget === void 0 ? void 0 : hoverWidget.dispose();\n hoverWidget = undefined;\n }\n if (disposePreparation) {\n hoverPreparation === null || hoverPreparation === void 0 ? void 0 : hoverPreparation.dispose();\n hoverPreparation = undefined;\n }\n if (hadHover) {\n (_a = hoverDelegate.onDidHideHover) === null || _a === void 0 ? void 0 : _a.call(hoverDelegate);\n }\n };\n const triggerShowHover = (delay, focus, target) => {\n return new _common_async_js__WEBPACK_IMPORTED_MODULE_1__.TimeoutTimer(() => __awaiter(this, void 0, void 0, function* () {\n if (!hoverWidget || hoverWidget.isDisposed) {\n hoverWidget = new UpdatableHoverWidget(hoverDelegate, target || htmlElement, delay > 0);\n yield hoverWidget.update(content, focus, options);\n }\n }), delay);\n };\n const onMouseOver = () => {\n if (hoverPreparation) {\n return;\n }\n const toDispose = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_5__.DisposableStore();\n const onMouseLeave = (e) => hideHover(false, e.fromElement === htmlElement);\n toDispose.add(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(htmlElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_LEAVE, onMouseLeave, true));\n const onMouseDown = () => hideHover(true, true);\n toDispose.add(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(htmlElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_DOWN, onMouseDown, true));\n const target = {\n targetElements: [htmlElement],\n dispose: () => { }\n };\n if (hoverDelegate.placement === undefined || hoverDelegate.placement === 'mouse') {\n // track the mouse position\n const onMouseMove = (e) => {\n target.x = e.x + 10;\n if ((e.target instanceof HTMLElement) && e.target.classList.contains('action-label')) {\n hideHover(true, true);\n }\n };\n toDispose.add(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(htmlElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_MOVE, onMouseMove, true));\n }\n toDispose.add(triggerShowHover(hoverDelegate.delay, false, target));\n hoverPreparation = toDispose;\n };\n const mouseOverDomEmitter = _dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(htmlElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_OVER, onMouseOver, true);\n const hover = {\n show: focus => {\n hideHover(false, true); // terminate a ongoing mouse over preparation\n triggerShowHover(0, focus); // show hover immediately\n },\n hide: () => {\n hideHover(true, true);\n },\n update: (newContent, hoverOptions) => __awaiter(this, void 0, void 0, function* () {\n content = newContent;\n yield (hoverWidget === null || hoverWidget === void 0 ? void 0 : hoverWidget.update(content, undefined, hoverOptions));\n }),\n dispose: () => {\n mouseOverDomEmitter.dispose();\n hideHover(true, true);\n }\n };\n return hover;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ renderIcon: () => (/* binding */ renderIcon),\n/* harmony export */ renderLabelWithIcons: () => (/* binding */ renderLabelWithIcons)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_themables_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nconst labelWithIconsRegex = new RegExp(`(\\\\\\\\)?\\\\$\\\\((${_common_themables_js__WEBPACK_IMPORTED_MODULE_1__.ThemeIcon.iconNameExpression}(?:${_common_themables_js__WEBPACK_IMPORTED_MODULE_1__.ThemeIcon.iconModifierExpression})?)\\\\)`, 'g');\nfunction renderLabelWithIcons(text) {\n const elements = new Array();\n let match;\n let textStart = 0, textStop = 0;\n while ((match = labelWithIconsRegex.exec(text)) !== null) {\n textStop = match.index || 0;\n if (textStart < textStop) {\n elements.push(text.substring(textStart, textStop));\n }\n textStart = (match.index || 0) + match[0].length;\n const [, escaped, codicon] = match;\n elements.push(escaped ? `$(${codicon})` : renderIcon({ id: codicon }));\n }\n if (textStart < text.length) {\n elements.push(text.substring(textStart));\n }\n return elements;\n}\nfunction renderIcon(icon) {\n const node = _dom_js__WEBPACK_IMPORTED_MODULE_0__.$(`span`);\n node.classList.add(..._common_themables_js__WEBPACK_IMPORTED_MODULE_1__.ThemeIcon.asClassNameArray(icon));\n return node;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HistoryInputBox: () => (/* binding */ HistoryInputBox),\n/* harmony export */ InputBox: () => (/* binding */ InputBox),\n/* harmony export */ unthemedInboxStyles: () => (/* binding */ unthemedInboxStyles)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../event.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/event.js\");\n/* harmony import */ var _formattedTextRenderer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../formattedTextRenderer.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/formattedTextRenderer.js\");\n/* harmony import */ var _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../actionbar/actionbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js\");\n/* harmony import */ var _aria_aria_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../aria/aria.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js\");\n/* harmony import */ var _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scrollbar/scrollableElement.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js\");\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_history_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/history.js */ \"./node_modules/monaco-editor/esm/vs/base/common/history.js\");\n/* harmony import */ var _common_objects_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/objects.js */ \"./node_modules/monaco-editor/esm/vs/base/common/objects.js\");\n/* harmony import */ var _inputBox_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./inputBox.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\n\nconst $ = _dom_js__WEBPACK_IMPORTED_MODULE_0__.$;\nconst unthemedInboxStyles = {\n inputBackground: '#3C3C3C',\n inputForeground: '#CCCCCC',\n inputValidationInfoBorder: '#55AAFF',\n inputValidationInfoBackground: '#063B49',\n inputValidationWarningBorder: '#B89500',\n inputValidationWarningBackground: '#352A05',\n inputValidationErrorBorder: '#BE1100',\n inputValidationErrorBackground: '#5A1D1D',\n inputBorder: undefined,\n inputValidationErrorForeground: undefined,\n inputValidationInfoForeground: undefined,\n inputValidationWarningForeground: undefined\n};\nclass InputBox extends _widget_js__WEBPACK_IMPORTED_MODULE_6__.Widget {\n constructor(container, contextViewProvider, options) {\n var _a;\n super();\n this.state = 'idle';\n this.maxHeight = Number.POSITIVE_INFINITY;\n this._onDidChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_7__.Emitter());\n this.onDidChange = this._onDidChange.event;\n this._onDidHeightChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_7__.Emitter());\n this.onDidHeightChange = this._onDidHeightChange.event;\n this.contextViewProvider = contextViewProvider;\n this.options = options;\n this.message = null;\n this.placeholder = this.options.placeholder || '';\n this.tooltip = (_a = this.options.tooltip) !== null && _a !== void 0 ? _a : (this.placeholder || '');\n this.ariaLabel = this.options.ariaLabel || '';\n if (this.options.validationOptions) {\n this.validation = this.options.validationOptions.validation;\n }\n this.element = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, $('.monaco-inputbox.idle'));\n const tagName = this.options.flexibleHeight ? 'textarea' : 'input';\n const wrapper = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(this.element, $('.ibwrapper'));\n this.input = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(wrapper, $(tagName + '.input.empty'));\n this.input.setAttribute('autocorrect', 'off');\n this.input.setAttribute('autocapitalize', 'off');\n this.input.setAttribute('spellcheck', 'false');\n this.onfocus(this.input, () => this.element.classList.add('synthetic-focus'));\n this.onblur(this.input, () => this.element.classList.remove('synthetic-focus'));\n if (this.options.flexibleHeight) {\n this.maxHeight = typeof this.options.flexibleMaxHeight === 'number' ? this.options.flexibleMaxHeight : Number.POSITIVE_INFINITY;\n this.mirror = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(wrapper, $('div.mirror'));\n this.mirror.innerText = '\\u00a0';\n this.scrollableElement = new _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_5__.ScrollableElement(this.element, { vertical: 1 /* ScrollbarVisibility.Auto */ });\n if (this.options.flexibleWidth) {\n this.input.setAttribute('wrap', 'off');\n this.mirror.style.whiteSpace = 'pre';\n this.mirror.style.wordWrap = 'initial';\n }\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, this.scrollableElement.getDomNode());\n this._register(this.scrollableElement);\n // from ScrollableElement to DOM\n this._register(this.scrollableElement.onScroll(e => this.input.scrollTop = e.scrollTop));\n const onSelectionChange = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(document, 'selectionchange'));\n const onAnchoredSelectionChange = _common_event_js__WEBPACK_IMPORTED_MODULE_7__.Event.filter(onSelectionChange.event, () => {\n const selection = document.getSelection();\n return (selection === null || selection === void 0 ? void 0 : selection.anchorNode) === wrapper;\n });\n // from DOM to ScrollableElement\n this._register(onAnchoredSelectionChange(this.updateScrollDimensions, this));\n this._register(this.onDidHeightChange(this.updateScrollDimensions, this));\n }\n else {\n this.input.type = this.options.type || 'text';\n this.input.setAttribute('wrap', 'off');\n }\n if (this.ariaLabel) {\n this.input.setAttribute('aria-label', this.ariaLabel);\n }\n if (this.placeholder && !this.options.showPlaceholderOnFocus) {\n this.setPlaceHolder(this.placeholder);\n }\n if (this.tooltip) {\n this.setTooltip(this.tooltip);\n }\n this.oninput(this.input, () => this.onValueChange());\n this.onblur(this.input, () => this.onBlur());\n this.onfocus(this.input, () => this.onFocus());\n this._register(this.ignoreGesture(this.input));\n setTimeout(() => this.updateMirror(), 0);\n // Support actions\n if (this.options.actions) {\n this.actionbar = this._register(new _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_3__.ActionBar(this.element));\n this.actionbar.push(this.options.actions, { icon: true, label: false });\n }\n this.applyStyles();\n }\n onBlur() {\n this._hideMessage();\n if (this.options.showPlaceholderOnFocus) {\n this.input.setAttribute('placeholder', '');\n }\n }\n onFocus() {\n this._showMessage();\n if (this.options.showPlaceholderOnFocus) {\n this.input.setAttribute('placeholder', this.placeholder || '');\n }\n }\n setPlaceHolder(placeHolder) {\n this.placeholder = placeHolder;\n this.input.setAttribute('placeholder', placeHolder);\n }\n setTooltip(tooltip) {\n this.tooltip = tooltip;\n this.input.title = tooltip;\n }\n get inputElement() {\n return this.input;\n }\n get value() {\n return this.input.value;\n }\n set value(newValue) {\n if (this.input.value !== newValue) {\n this.input.value = newValue;\n this.onValueChange();\n }\n }\n get height() {\n return typeof this.cachedHeight === 'number' ? this.cachedHeight : _dom_js__WEBPACK_IMPORTED_MODULE_0__.getTotalHeight(this.element);\n }\n focus() {\n this.input.focus();\n }\n blur() {\n this.input.blur();\n }\n hasFocus() {\n return document.activeElement === this.input;\n }\n select(range = null) {\n this.input.select();\n if (range) {\n this.input.setSelectionRange(range.start, range.end);\n if (range.end === this.input.value.length) {\n this.input.scrollLeft = this.input.scrollWidth;\n }\n }\n }\n isSelectionAtEnd() {\n return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd;\n }\n enable() {\n this.input.removeAttribute('disabled');\n }\n disable() {\n this.blur();\n this.input.disabled = true;\n this._hideMessage();\n }\n set paddingRight(paddingRight) {\n // Set width to avoid hint text overlapping buttons\n this.input.style.width = `calc(100% - ${paddingRight}px)`;\n if (this.mirror) {\n this.mirror.style.paddingRight = paddingRight + 'px';\n }\n }\n updateScrollDimensions() {\n if (typeof this.cachedContentHeight !== 'number' || typeof this.cachedHeight !== 'number' || !this.scrollableElement) {\n return;\n }\n const scrollHeight = this.cachedContentHeight;\n const height = this.cachedHeight;\n const scrollTop = this.input.scrollTop;\n this.scrollableElement.setScrollDimensions({ scrollHeight, height });\n this.scrollableElement.setScrollPosition({ scrollTop });\n }\n showMessage(message, force) {\n if (this.state === 'open' && (0,_common_objects_js__WEBPACK_IMPORTED_MODULE_9__.equals)(this.message, message)) {\n // Already showing\n return;\n }\n this.message = message;\n this.element.classList.remove('idle');\n this.element.classList.remove('info');\n this.element.classList.remove('warning');\n this.element.classList.remove('error');\n this.element.classList.add(this.classForType(message.type));\n const styles = this.stylesForType(this.message.type);\n this.element.style.border = `1px solid ${_dom_js__WEBPACK_IMPORTED_MODULE_0__.asCssValueWithDefault(styles.border, 'transparent')}`;\n if (this.message.content && (this.hasFocus() || force)) {\n this._showMessage();\n }\n }\n hideMessage() {\n this.message = null;\n this.element.classList.remove('info');\n this.element.classList.remove('warning');\n this.element.classList.remove('error');\n this.element.classList.add('idle');\n this._hideMessage();\n this.applyStyles();\n }\n validate() {\n let errorMsg = null;\n if (this.validation) {\n errorMsg = this.validation(this.value);\n if (errorMsg) {\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.showMessage(errorMsg);\n }\n else if (this.inputElement.hasAttribute('aria-invalid')) {\n this.inputElement.removeAttribute('aria-invalid');\n this.hideMessage();\n }\n }\n return errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.type;\n }\n stylesForType(type) {\n const styles = this.options.inputBoxStyles;\n switch (type) {\n case 1 /* MessageType.INFO */: return { border: styles.inputValidationInfoBorder, background: styles.inputValidationInfoBackground, foreground: styles.inputValidationInfoForeground };\n case 2 /* MessageType.WARNING */: return { border: styles.inputValidationWarningBorder, background: styles.inputValidationWarningBackground, foreground: styles.inputValidationWarningForeground };\n default: return { border: styles.inputValidationErrorBorder, background: styles.inputValidationErrorBackground, foreground: styles.inputValidationErrorForeground };\n }\n }\n classForType(type) {\n switch (type) {\n case 1 /* MessageType.INFO */: return 'info';\n case 2 /* MessageType.WARNING */: return 'warning';\n default: return 'error';\n }\n }\n _showMessage() {\n if (!this.contextViewProvider || !this.message) {\n return;\n }\n let div;\n const layout = () => div.style.width = _dom_js__WEBPACK_IMPORTED_MODULE_0__.getTotalWidth(this.element) + 'px';\n this.contextViewProvider.showContextView({\n getAnchor: () => this.element,\n anchorAlignment: 1 /* AnchorAlignment.RIGHT */,\n render: (container) => {\n var _a, _b;\n if (!this.message) {\n return null;\n }\n div = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, $('.monaco-inputbox-container'));\n layout();\n const renderOptions = {\n inline: true,\n className: 'monaco-inputbox-message'\n };\n const spanElement = (this.message.formatContent\n ? (0,_formattedTextRenderer_js__WEBPACK_IMPORTED_MODULE_2__.renderFormattedText)(this.message.content, renderOptions)\n : (0,_formattedTextRenderer_js__WEBPACK_IMPORTED_MODULE_2__.renderText)(this.message.content, renderOptions));\n spanElement.classList.add(this.classForType(this.message.type));\n const styles = this.stylesForType(this.message.type);\n spanElement.style.backgroundColor = (_a = styles.background) !== null && _a !== void 0 ? _a : '';\n spanElement.style.color = (_b = styles.foreground) !== null && _b !== void 0 ? _b : '';\n spanElement.style.border = styles.border ? `1px solid ${styles.border}` : '';\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(div, spanElement);\n return null;\n },\n onHide: () => {\n this.state = 'closed';\n },\n layout: layout\n });\n // ARIA Support\n let alertText;\n if (this.message.type === 3 /* MessageType.ERROR */) {\n alertText = _nls_js__WEBPACK_IMPORTED_MODULE_11__.localize('alertErrorMessage', \"Error: {0}\", this.message.content);\n }\n else if (this.message.type === 2 /* MessageType.WARNING */) {\n alertText = _nls_js__WEBPACK_IMPORTED_MODULE_11__.localize('alertWarningMessage', \"Warning: {0}\", this.message.content);\n }\n else {\n alertText = _nls_js__WEBPACK_IMPORTED_MODULE_11__.localize('alertInfoMessage', \"Info: {0}\", this.message.content);\n }\n _aria_aria_js__WEBPACK_IMPORTED_MODULE_4__.alert(alertText);\n this.state = 'open';\n }\n _hideMessage() {\n if (!this.contextViewProvider) {\n return;\n }\n if (this.state === 'open') {\n this.contextViewProvider.hideContextView();\n }\n this.state = 'idle';\n }\n onValueChange() {\n this._onDidChange.fire(this.value);\n this.validate();\n this.updateMirror();\n this.input.classList.toggle('empty', !this.value);\n if (this.state === 'open' && this.contextViewProvider) {\n this.contextViewProvider.layout();\n }\n }\n updateMirror() {\n if (!this.mirror) {\n return;\n }\n const value = this.value;\n const lastCharCode = value.charCodeAt(value.length - 1);\n const suffix = lastCharCode === 10 ? ' ' : '';\n const mirrorTextContent = (value + suffix)\n .replace(/\\u000c/g, ''); // Don't measure with the form feed character, which messes up sizing\n if (mirrorTextContent) {\n this.mirror.textContent = value + suffix;\n }\n else {\n this.mirror.innerText = '\\u00a0';\n }\n this.layout();\n }\n applyStyles() {\n var _a, _b, _c;\n const styles = this.options.inputBoxStyles;\n const background = (_a = styles.inputBackground) !== null && _a !== void 0 ? _a : '';\n const foreground = (_b = styles.inputForeground) !== null && _b !== void 0 ? _b : '';\n const border = (_c = styles.inputBorder) !== null && _c !== void 0 ? _c : '';\n this.element.style.backgroundColor = background;\n this.element.style.color = foreground;\n this.input.style.backgroundColor = 'inherit';\n this.input.style.color = foreground;\n // there's always a border, even if the color is not set.\n this.element.style.border = `1px solid ${_dom_js__WEBPACK_IMPORTED_MODULE_0__.asCssValueWithDefault(border, 'transparent')}`;\n }\n layout() {\n if (!this.mirror) {\n return;\n }\n const previousHeight = this.cachedContentHeight;\n this.cachedContentHeight = _dom_js__WEBPACK_IMPORTED_MODULE_0__.getTotalHeight(this.mirror);\n if (previousHeight !== this.cachedContentHeight) {\n this.cachedHeight = Math.min(this.cachedContentHeight, this.maxHeight);\n this.input.style.height = this.cachedHeight + 'px';\n this._onDidHeightChange.fire(this.cachedContentHeight);\n }\n }\n insertAtCursor(text) {\n const inputElement = this.inputElement;\n const start = inputElement.selectionStart;\n const end = inputElement.selectionEnd;\n const content = inputElement.value;\n if (start !== null && end !== null) {\n this.value = content.substr(0, start) + text + content.substr(end);\n inputElement.setSelectionRange(start + 1, start + 1);\n this.layout();\n }\n }\n dispose() {\n var _a;\n this._hideMessage();\n this.message = null;\n (_a = this.actionbar) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\nclass HistoryInputBox extends InputBox {\n constructor(container, contextViewProvider, options) {\n const NLS_PLACEHOLDER_HISTORY_HINT = _nls_js__WEBPACK_IMPORTED_MODULE_11__.localize({ key: 'history.inputbox.hint', comment: ['Text will be prefixed with \\u21C5 plus a single space, then used as a hint where input field keeps history'] }, \"for history\");\n const NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX = ` or \\u21C5 ${NLS_PLACEHOLDER_HISTORY_HINT}`;\n const NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS = ` (\\u21C5 ${NLS_PLACEHOLDER_HISTORY_HINT})`;\n super(container, contextViewProvider, options);\n this._onDidFocus = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_7__.Emitter());\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_7__.Emitter());\n this.onDidBlur = this._onDidBlur.event;\n this.history = new _common_history_js__WEBPACK_IMPORTED_MODULE_8__.HistoryNavigator(options.history, 100);\n // Function to append the history suffix to the placeholder if necessary\n const addSuffix = () => {\n if (options.showHistoryHint && options.showHistoryHint() && !this.placeholder.endsWith(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX) && !this.placeholder.endsWith(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS) && this.history.getHistory().length) {\n const suffix = this.placeholder.endsWith(')') ? NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX : NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS;\n const suffixedPlaceholder = this.placeholder + suffix;\n if (options.showPlaceholderOnFocus && document.activeElement !== this.input) {\n this.placeholder = suffixedPlaceholder;\n }\n else {\n this.setPlaceHolder(suffixedPlaceholder);\n }\n }\n };\n // Spot the change to the textarea class attribute which occurs when it changes between non-empty and empty,\n // and add the history suffix to the placeholder if not yet present\n this.observer = new MutationObserver((mutationList, observer) => {\n mutationList.forEach((mutation) => {\n if (!mutation.target.textContent) {\n addSuffix();\n }\n });\n });\n this.observer.observe(this.input, { attributeFilter: ['class'] });\n this.onfocus(this.input, () => addSuffix());\n this.onblur(this.input, () => {\n const resetPlaceholder = (historyHint) => {\n if (!this.placeholder.endsWith(historyHint)) {\n return false;\n }\n else {\n const revertedPlaceholder = this.placeholder.slice(0, this.placeholder.length - historyHint.length);\n if (options.showPlaceholderOnFocus) {\n this.placeholder = revertedPlaceholder;\n }\n else {\n this.setPlaceHolder(revertedPlaceholder);\n }\n return true;\n }\n };\n if (!resetPlaceholder(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS)) {\n resetPlaceholder(NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX);\n }\n });\n }\n dispose() {\n super.dispose();\n if (this.observer) {\n this.observer.disconnect();\n this.observer = undefined;\n }\n }\n addToHistory(always) {\n if (this.value && (always || this.value !== this.getCurrentValue())) {\n this.history.add(this.value);\n }\n }\n isAtLastInHistory() {\n return this.history.isLast();\n }\n isNowhereInHistory() {\n return this.history.isNowhere();\n }\n showNextValue() {\n if (!this.history.has(this.value)) {\n this.addToHistory();\n }\n let next = this.getNextValue();\n if (next) {\n next = next === this.value ? this.getNextValue() : next;\n }\n this.value = next !== null && next !== void 0 ? next : '';\n _aria_aria_js__WEBPACK_IMPORTED_MODULE_4__.status(this.value ? this.value : _nls_js__WEBPACK_IMPORTED_MODULE_11__.localize('clearedInput', \"Cleared Input\"));\n }\n showPreviousValue() {\n if (!this.history.has(this.value)) {\n this.addToHistory();\n }\n let previous = this.getPreviousValue();\n if (previous) {\n previous = previous === this.value ? this.getPreviousValue() : previous;\n }\n if (previous) {\n this.value = previous;\n _aria_aria_js__WEBPACK_IMPORTED_MODULE_4__.status(this.value);\n }\n }\n onBlur() {\n super.onBlur();\n this._onDidBlur.fire();\n }\n onFocus() {\n super.onFocus();\n this._onDidFocus.fire();\n }\n getCurrentValue() {\n let currentValue = this.history.current();\n if (!currentValue) {\n currentValue = this.history.last();\n this.history.next();\n }\n return currentValue;\n }\n getPreviousValue() {\n return this.history.previous() || this.history.first();\n }\n getNextValue() {\n return this.history.next();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js": +/*!**********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js ***! + \**********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ KeybindingLabel: () => (/* binding */ KeybindingLabel),\n/* harmony export */ unthemedKeybindingLabelOptions: () => (/* binding */ unthemedKeybindingLabelOptions)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_keybindingLabels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/keybindingLabels.js */ \"./node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js\");\n/* harmony import */ var _common_objects_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/objects.js */ \"./node_modules/monaco-editor/esm/vs/base/common/objects.js\");\n/* harmony import */ var _keybindingLabel_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keybindingLabel.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nconst $ = _dom_js__WEBPACK_IMPORTED_MODULE_0__.$;\nconst unthemedKeybindingLabelOptions = {\n keybindingLabelBackground: undefined,\n keybindingLabelForeground: undefined,\n keybindingLabelBorder: undefined,\n keybindingLabelBottomBorder: undefined,\n keybindingLabelShadow: undefined\n};\nclass KeybindingLabel {\n constructor(container, os, options) {\n this.os = os;\n this.keyElements = new Set();\n this.options = options || Object.create(null);\n const labelForeground = this.options.keybindingLabelForeground;\n this.domNode = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, $('.monaco-keybinding'));\n if (labelForeground) {\n this.domNode.style.color = labelForeground;\n }\n this.didEverRender = false;\n container.appendChild(this.domNode);\n }\n get element() {\n return this.domNode;\n }\n set(keybinding, matches) {\n if (this.didEverRender && this.keybinding === keybinding && KeybindingLabel.areSame(this.matches, matches)) {\n return;\n }\n this.keybinding = keybinding;\n this.matches = matches;\n this.render();\n }\n render() {\n var _a;\n this.clear();\n if (this.keybinding) {\n const chords = this.keybinding.getChords();\n if (chords[0]) {\n this.renderChord(this.domNode, chords[0], this.matches ? this.matches.firstPart : null);\n }\n for (let i = 1; i < chords.length; i++) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(this.domNode, $('span.monaco-keybinding-key-chord-separator', undefined, ' '));\n this.renderChord(this.domNode, chords[i], this.matches ? this.matches.chordPart : null);\n }\n const title = ((_a = this.options.disableTitle) !== null && _a !== void 0 ? _a : false) ? undefined : this.keybinding.getAriaLabel() || undefined;\n if (title !== undefined) {\n this.domNode.title = title;\n }\n else {\n this.domNode.removeAttribute('title');\n }\n }\n else if (this.options && this.options.renderUnboundKeybindings) {\n this.renderUnbound(this.domNode);\n }\n this.didEverRender = true;\n }\n clear() {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode(this.domNode);\n this.keyElements.clear();\n }\n renderChord(parent, chord, match) {\n const modifierLabels = _common_keybindingLabels_js__WEBPACK_IMPORTED_MODULE_1__.UILabelProvider.modifierLabels[this.os];\n if (chord.ctrlKey) {\n this.renderKey(parent, modifierLabels.ctrlKey, Boolean(match === null || match === void 0 ? void 0 : match.ctrlKey), modifierLabels.separator);\n }\n if (chord.shiftKey) {\n this.renderKey(parent, modifierLabels.shiftKey, Boolean(match === null || match === void 0 ? void 0 : match.shiftKey), modifierLabels.separator);\n }\n if (chord.altKey) {\n this.renderKey(parent, modifierLabels.altKey, Boolean(match === null || match === void 0 ? void 0 : match.altKey), modifierLabels.separator);\n }\n if (chord.metaKey) {\n this.renderKey(parent, modifierLabels.metaKey, Boolean(match === null || match === void 0 ? void 0 : match.metaKey), modifierLabels.separator);\n }\n const keyLabel = chord.keyLabel;\n if (keyLabel) {\n this.renderKey(parent, keyLabel, Boolean(match === null || match === void 0 ? void 0 : match.keyCode), '');\n }\n }\n renderKey(parent, label, highlight, separator) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(parent, this.createKeyElement(label, highlight ? '.highlight' : ''));\n if (separator) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(parent, $('span.monaco-keybinding-key-separator', undefined, separator));\n }\n }\n renderUnbound(parent) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(parent, this.createKeyElement((0,_nls_js__WEBPACK_IMPORTED_MODULE_4__.localize)('unbound', \"Unbound\")));\n }\n createKeyElement(label, extraClass = '') {\n const keyElement = $('span.monaco-keybinding-key' + extraClass, undefined, label);\n this.keyElements.add(keyElement);\n if (this.options.keybindingLabelBackground) {\n keyElement.style.backgroundColor = this.options.keybindingLabelBackground;\n }\n if (this.options.keybindingLabelBorder) {\n keyElement.style.borderColor = this.options.keybindingLabelBorder;\n }\n if (this.options.keybindingLabelBottomBorder) {\n keyElement.style.borderBottomColor = this.options.keybindingLabelBottomBorder;\n }\n if (this.options.keybindingLabelShadow) {\n keyElement.style.boxShadow = `inset 0 -1px 0 ${this.options.keybindingLabelShadow}`;\n }\n return keyElement;\n }\n static areSame(a, b) {\n if (a === b || (!a && !b)) {\n return true;\n }\n return !!a && !!b && (0,_common_objects_js__WEBPACK_IMPORTED_MODULE_2__.equals)(a.firstPart, b.firstPart) && (0,_common_objects_js__WEBPACK_IMPORTED_MODULE_2__.equals)(a.chordPart, b.chordPart);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js": +/*!************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ListError: () => (/* binding */ ListError)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass ListError extends Error {\n constructor(user, message) {\n super(`ListError [${user}] ${message}`);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listPaging.js": +/*!******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listPaging.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PagedList: () => (/* binding */ PagedList)\n/* harmony export */ });\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_cancellation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/cancellation.js */ \"./node_modules/monaco-editor/esm/vs/base/common/cancellation.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _list_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./list.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css\");\n/* harmony import */ var _listWidget_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./listWidget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nclass PagedRenderer {\n get templateId() { return this.renderer.templateId; }\n constructor(renderer, modelProvider) {\n this.renderer = renderer;\n this.modelProvider = modelProvider;\n }\n renderTemplate(container) {\n const data = this.renderer.renderTemplate(container);\n return { data, disposable: _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.Disposable.None };\n }\n renderElement(index, _, data, height) {\n var _a;\n (_a = data.disposable) === null || _a === void 0 ? void 0 : _a.dispose();\n if (!data.data) {\n return;\n }\n const model = this.modelProvider();\n if (model.isResolved(index)) {\n return this.renderer.renderElement(model.get(index), index, data.data, height);\n }\n const cts = new _common_cancellation_js__WEBPACK_IMPORTED_MODULE_1__.CancellationTokenSource();\n const promise = model.resolve(index, cts.token);\n data.disposable = { dispose: () => cts.cancel() };\n this.renderer.renderPlaceholder(index, data.data);\n promise.then(entry => this.renderer.renderElement(entry, index, data.data, height));\n }\n disposeTemplate(data) {\n if (data.disposable) {\n data.disposable.dispose();\n data.disposable = undefined;\n }\n if (data.data) {\n this.renderer.disposeTemplate(data.data);\n data.data = undefined;\n }\n }\n}\nclass PagedAccessibilityProvider {\n constructor(modelProvider, accessibilityProvider) {\n this.modelProvider = modelProvider;\n this.accessibilityProvider = accessibilityProvider;\n }\n getWidgetAriaLabel() {\n return this.accessibilityProvider.getWidgetAriaLabel();\n }\n getAriaLabel(index) {\n const model = this.modelProvider();\n if (!model.isResolved(index)) {\n return null;\n }\n return this.accessibilityProvider.getAriaLabel(model.get(index));\n }\n}\nfunction fromPagedListOptions(modelProvider, options) {\n return Object.assign(Object.assign({}, options), { accessibilityProvider: options.accessibilityProvider && new PagedAccessibilityProvider(modelProvider, options.accessibilityProvider) });\n}\nclass PagedList {\n constructor(user, container, virtualDelegate, renderers, options = {}) {\n const modelProvider = () => this.model;\n const pagedRenderers = renderers.map(r => new PagedRenderer(r, modelProvider));\n this.list = new _listWidget_js__WEBPACK_IMPORTED_MODULE_5__.List(user, container, virtualDelegate, pagedRenderers, fromPagedListOptions(modelProvider, options));\n }\n updateOptions(options) {\n this.list.updateOptions(options);\n }\n getHTMLElement() {\n return this.list.getHTMLElement();\n }\n get onDidFocus() {\n return this.list.onDidFocus;\n }\n get onDidDispose() {\n return this.list.onDidDispose;\n }\n get onMouseDblClick() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.map(this.list.onMouseDblClick, ({ element, index, browserEvent }) => ({ element: element === undefined ? undefined : this._model.get(element), index, browserEvent }));\n }\n get onPointer() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.map(this.list.onPointer, ({ element, index, browserEvent }) => ({ element: element === undefined ? undefined : this._model.get(element), index, browserEvent }));\n }\n get onDidChangeSelection() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.map(this.list.onDidChangeSelection, ({ elements, indexes, browserEvent }) => ({ elements: elements.map(e => this._model.get(e)), indexes, browserEvent }));\n }\n get model() {\n return this._model;\n }\n set model(model) {\n this._model = model;\n this.list.splice(0, this.list.length, (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_0__.range)(model.length));\n }\n getFocus() {\n return this.list.getFocus();\n }\n getSelection() {\n return this.list.getSelection();\n }\n getSelectedElements() {\n return this.getSelection().map(i => this.model.get(i));\n }\n style(styles) {\n this.list.style(styles);\n }\n dispose() {\n this.list.dispose();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listPaging.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js": +/*!****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ElementsDragAndDropData: () => (/* binding */ ElementsDragAndDropData),\n/* harmony export */ ExternalElementsDragAndDropData: () => (/* binding */ ExternalElementsDragAndDropData),\n/* harmony export */ ListView: () => (/* binding */ ListView),\n/* harmony export */ NativeDragAndDropData: () => (/* binding */ NativeDragAndDropData)\n/* harmony export */ });\n/* harmony import */ var _dnd_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dnd.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dnd.js\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../event.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/event.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scrollbar/scrollableElement.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/decorators.js */ \"./node_modules/monaco-editor/esm/vs/base/common/decorators.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_range_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/range.js */ \"./node_modules/monaco-editor/esm/vs/base/common/range.js\");\n/* harmony import */ var _common_scrollable_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/scrollable.js */ \"./node_modules/monaco-editor/esm/vs/base/common/scrollable.js\");\n/* harmony import */ var _rangeMap_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rangeMap.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js\");\n/* harmony import */ var _rowCache_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rowCache.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js\");\n/* harmony import */ var _common_errors_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../common/errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst StaticDND = {\n CurrentDragAndDropData: undefined\n};\nconst DefaultOptions = {\n useShadows: true,\n verticalScrollMode: 1 /* ScrollbarVisibility.Auto */,\n setRowLineHeight: true,\n setRowHeight: true,\n supportDynamicHeights: false,\n dnd: {\n getDragElements(e) { return [e]; },\n getDragURI() { return null; },\n onDragStart() { },\n onDragOver() { return false; },\n drop() { }\n },\n horizontalScrolling: false,\n transformOptimization: true,\n alwaysConsumeMouseWheel: true,\n};\nclass ElementsDragAndDropData {\n constructor(elements) {\n this.elements = elements;\n }\n update() { }\n getData() {\n return this.elements;\n }\n}\nclass ExternalElementsDragAndDropData {\n constructor(elements) {\n this.elements = elements;\n }\n update() { }\n getData() {\n return this.elements;\n }\n}\nclass NativeDragAndDropData {\n constructor() {\n this.types = [];\n this.files = [];\n }\n update(dataTransfer) {\n if (dataTransfer.types) {\n this.types.splice(0, this.types.length, ...dataTransfer.types);\n }\n if (dataTransfer.files) {\n this.files.splice(0, this.files.length);\n for (let i = 0; i < dataTransfer.files.length; i++) {\n const file = dataTransfer.files.item(i);\n if (file && (file.size || file.type)) {\n this.files.push(file);\n }\n }\n }\n }\n getData() {\n return {\n types: this.types,\n files: this.files\n };\n }\n}\nfunction equalsDragFeedback(f1, f2) {\n if (Array.isArray(f1) && Array.isArray(f2)) {\n return (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_5__.equals)(f1, f2);\n }\n return f1 === f2;\n}\nclass ListViewAccessibilityProvider {\n constructor(accessibilityProvider) {\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getSetSize) {\n this.getSetSize = accessibilityProvider.getSetSize.bind(accessibilityProvider);\n }\n else {\n this.getSetSize = (e, i, l) => l;\n }\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getPosInSet) {\n this.getPosInSet = accessibilityProvider.getPosInSet.bind(accessibilityProvider);\n }\n else {\n this.getPosInSet = (e, i) => i + 1;\n }\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getRole) {\n this.getRole = accessibilityProvider.getRole.bind(accessibilityProvider);\n }\n else {\n this.getRole = _ => 'listitem';\n }\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.isChecked) {\n this.isChecked = accessibilityProvider.isChecked.bind(accessibilityProvider);\n }\n else {\n this.isChecked = _ => undefined;\n }\n }\n}\n/**\n * The {@link ListView} is a virtual scrolling engine.\n *\n * Given that it only renders elements within its viewport, it can hold large\n * collections of elements and stay very performant. The performance bottleneck\n * usually lies within the user's rendering code for each element.\n *\n * @remarks It is a low-level widget, not meant to be used directly. Refer to the\n * List widget instead.\n */\nclass ListView {\n get contentHeight() { return this.rangeMap.size; }\n get horizontalScrolling() { return this._horizontalScrolling; }\n set horizontalScrolling(value) {\n if (value === this._horizontalScrolling) {\n return;\n }\n if (value && this.supportDynamicHeights) {\n throw new Error('Horizontal scrolling and dynamic heights not supported simultaneously');\n }\n this._horizontalScrolling = value;\n this.domNode.classList.toggle('horizontal-scrolling', this._horizontalScrolling);\n if (this._horizontalScrolling) {\n for (const item of this.items) {\n this.measureItemWidth(item);\n }\n this.updateScrollWidth();\n this.scrollableElement.setScrollDimensions({ width: (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.getContentWidth)(this.domNode) });\n this.rowsContainer.style.width = `${Math.max(this.scrollWidth || 0, this.renderWidth)}px`;\n }\n else {\n this.scrollableElementWidthDelayer.cancel();\n this.scrollableElement.setScrollDimensions({ width: this.renderWidth, scrollWidth: this.renderWidth });\n this.rowsContainer.style.width = '';\n }\n }\n constructor(container, virtualDelegate, renderers, options = DefaultOptions) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n this.virtualDelegate = virtualDelegate;\n this.domId = `list_id_${++ListView.InstanceCount}`;\n this.renderers = new Map();\n this.renderWidth = 0;\n this._scrollHeight = 0;\n this.scrollableElementUpdateDisposable = null;\n this.scrollableElementWidthDelayer = new _common_async_js__WEBPACK_IMPORTED_MODULE_6__.Delayer(50);\n this.splicing = false;\n this.dragOverAnimationStopDisposable = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.Disposable.None;\n this.dragOverMouseY = 0;\n this.canDrop = false;\n this.currentDragFeedbackDisposable = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.Disposable.None;\n this.onDragLeaveTimeout = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.Disposable.None;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.DisposableStore();\n this._onDidChangeContentHeight = new _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Emitter();\n this._onDidChangeContentWidth = new _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Emitter();\n this._horizontalScrolling = false;\n if (options.horizontalScrolling && options.supportDynamicHeights) {\n throw new Error('Horizontal scrolling and dynamic heights not supported simultaneously');\n }\n this.items = [];\n this.itemId = 0;\n this.rangeMap = new _rangeMap_js__WEBPACK_IMPORTED_MODULE_12__.RangeMap();\n for (const renderer of renderers) {\n this.renderers.set(renderer.templateId, renderer);\n }\n this.cache = this.disposables.add(new _rowCache_js__WEBPACK_IMPORTED_MODULE_13__.RowCache(this.renderers));\n this.lastRenderTop = 0;\n this.lastRenderHeight = 0;\n this.domNode = document.createElement('div');\n this.domNode.className = 'monaco-list';\n this.domNode.classList.add(this.domId);\n this.domNode.tabIndex = 0;\n this.domNode.classList.toggle('mouse-support', typeof options.mouseSupport === 'boolean' ? options.mouseSupport : true);\n this._horizontalScrolling = (_a = options.horizontalScrolling) !== null && _a !== void 0 ? _a : DefaultOptions.horizontalScrolling;\n this.domNode.classList.toggle('horizontal-scrolling', this._horizontalScrolling);\n this.additionalScrollHeight = typeof options.additionalScrollHeight === 'undefined' ? 0 : options.additionalScrollHeight;\n this.accessibilityProvider = new ListViewAccessibilityProvider(options.accessibilityProvider);\n this.rowsContainer = document.createElement('div');\n this.rowsContainer.className = 'monaco-list-rows';\n const transformOptimization = (_b = options.transformOptimization) !== null && _b !== void 0 ? _b : DefaultOptions.transformOptimization;\n if (transformOptimization) {\n this.rowsContainer.style.transform = 'translate3d(0px, 0px, 0px)';\n this.rowsContainer.style.overflow = 'hidden';\n this.rowsContainer.style.contain = 'strict';\n }\n this.disposables.add(_touch_js__WEBPACK_IMPORTED_MODULE_3__.Gesture.addTarget(this.rowsContainer));\n this.scrollable = new _common_scrollable_js__WEBPACK_IMPORTED_MODULE_11__.Scrollable({\n forceIntegerValues: true,\n smoothScrollDuration: ((_c = options.smoothScrolling) !== null && _c !== void 0 ? _c : false) ? 125 : 0,\n scheduleAtNextAnimationFrame: cb => (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.scheduleAtNextAnimationFrame)(cb)\n });\n this.scrollableElement = this.disposables.add(new _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_4__.SmoothScrollableElement(this.rowsContainer, {\n alwaysConsumeMouseWheel: (_d = options.alwaysConsumeMouseWheel) !== null && _d !== void 0 ? _d : DefaultOptions.alwaysConsumeMouseWheel,\n horizontal: 1 /* ScrollbarVisibility.Auto */,\n vertical: (_e = options.verticalScrollMode) !== null && _e !== void 0 ? _e : DefaultOptions.verticalScrollMode,\n useShadows: (_f = options.useShadows) !== null && _f !== void 0 ? _f : DefaultOptions.useShadows,\n mouseWheelScrollSensitivity: options.mouseWheelScrollSensitivity,\n fastScrollSensitivity: options.fastScrollSensitivity,\n scrollByPage: options.scrollByPage\n }, this.scrollable));\n this.domNode.appendChild(this.scrollableElement.getDomNode());\n container.appendChild(this.domNode);\n this.scrollableElement.onScroll(this.onScroll, this, this.disposables);\n this.disposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener)(this.rowsContainer, _touch_js__WEBPACK_IMPORTED_MODULE_3__.EventType.Change, e => this.onTouchChange(e)));\n // Prevent the monaco-scrollable-element from scrolling\n // https://github.com/microsoft/vscode/issues/44181\n this.disposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener)(this.scrollableElement.getDomNode(), 'scroll', e => e.target.scrollTop = 0));\n this.disposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener)(this.domNode, 'dragover', e => this.onDragOver(this.toDragEvent(e))));\n this.disposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener)(this.domNode, 'drop', e => this.onDrop(this.toDragEvent(e))));\n this.disposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener)(this.domNode, 'dragleave', e => this.onDragLeave(this.toDragEvent(e))));\n this.disposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener)(this.domNode, 'dragend', e => this.onDragEnd(e)));\n this.setRowLineHeight = (_g = options.setRowLineHeight) !== null && _g !== void 0 ? _g : DefaultOptions.setRowLineHeight;\n this.setRowHeight = (_h = options.setRowHeight) !== null && _h !== void 0 ? _h : DefaultOptions.setRowHeight;\n this.supportDynamicHeights = (_j = options.supportDynamicHeights) !== null && _j !== void 0 ? _j : DefaultOptions.supportDynamicHeights;\n this.dnd = (_k = options.dnd) !== null && _k !== void 0 ? _k : DefaultOptions.dnd;\n this.layout((_l = options.initialSize) === null || _l === void 0 ? void 0 : _l.height, (_m = options.initialSize) === null || _m === void 0 ? void 0 : _m.width);\n }\n updateOptions(options) {\n if (options.additionalScrollHeight !== undefined) {\n this.additionalScrollHeight = options.additionalScrollHeight;\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\n }\n if (options.smoothScrolling !== undefined) {\n this.scrollable.setSmoothScrollDuration(options.smoothScrolling ? 125 : 0);\n }\n if (options.horizontalScrolling !== undefined) {\n this.horizontalScrolling = options.horizontalScrolling;\n }\n let scrollableOptions;\n if (options.scrollByPage !== undefined) {\n scrollableOptions = Object.assign(Object.assign({}, (scrollableOptions !== null && scrollableOptions !== void 0 ? scrollableOptions : {})), { scrollByPage: options.scrollByPage });\n }\n if (options.mouseWheelScrollSensitivity !== undefined) {\n scrollableOptions = Object.assign(Object.assign({}, (scrollableOptions !== null && scrollableOptions !== void 0 ? scrollableOptions : {})), { mouseWheelScrollSensitivity: options.mouseWheelScrollSensitivity });\n }\n if (options.fastScrollSensitivity !== undefined) {\n scrollableOptions = Object.assign(Object.assign({}, (scrollableOptions !== null && scrollableOptions !== void 0 ? scrollableOptions : {})), { fastScrollSensitivity: options.fastScrollSensitivity });\n }\n if (scrollableOptions) {\n this.scrollableElement.updateOptions(scrollableOptions);\n }\n }\n splice(start, deleteCount, elements = []) {\n if (this.splicing) {\n throw new Error('Can\\'t run recursive splices.');\n }\n this.splicing = true;\n try {\n return this._splice(start, deleteCount, elements);\n }\n finally {\n this.splicing = false;\n this._onDidChangeContentHeight.fire(this.contentHeight);\n }\n }\n _splice(start, deleteCount, elements = []) {\n const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\n const deleteRange = { start, end: start + deleteCount };\n const removeRange = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.intersect(previousRenderRange, deleteRange);\n // try to reuse rows, avoid removing them from DOM\n const rowsToDispose = new Map();\n for (let i = removeRange.end - 1; i >= removeRange.start; i--) {\n const item = this.items[i];\n item.dragStartDisposable.dispose();\n item.checkedDisposable.dispose();\n if (item.row) {\n let rows = rowsToDispose.get(item.templateId);\n if (!rows) {\n rows = [];\n rowsToDispose.set(item.templateId, rows);\n }\n const renderer = this.renderers.get(item.templateId);\n if (renderer && renderer.disposeElement) {\n renderer.disposeElement(item.element, i, item.row.templateData, item.size);\n }\n rows.push(item.row);\n }\n item.row = null;\n }\n const previousRestRange = { start: start + deleteCount, end: this.items.length };\n const previousRenderedRestRange = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.intersect(previousRestRange, previousRenderRange);\n const previousUnrenderedRestRanges = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.relativeComplement(previousRestRange, previousRenderRange);\n const inserted = elements.map(element => ({\n id: String(this.itemId++),\n element,\n templateId: this.virtualDelegate.getTemplateId(element),\n size: this.virtualDelegate.getHeight(element),\n width: undefined,\n hasDynamicHeight: !!this.virtualDelegate.hasDynamicHeight && this.virtualDelegate.hasDynamicHeight(element),\n lastDynamicHeightWidth: undefined,\n row: null,\n uri: undefined,\n dropTarget: false,\n dragStartDisposable: _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.Disposable.None,\n checkedDisposable: _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.Disposable.None\n }));\n let deleted;\n // TODO@joao: improve this optimization to catch even more cases\n if (start === 0 && deleteCount >= this.items.length) {\n this.rangeMap = new _rangeMap_js__WEBPACK_IMPORTED_MODULE_12__.RangeMap();\n this.rangeMap.splice(0, 0, inserted);\n deleted = this.items;\n this.items = inserted;\n }\n else {\n this.rangeMap.splice(start, deleteCount, inserted);\n deleted = this.items.splice(start, deleteCount, ...inserted);\n }\n const delta = elements.length - deleteCount;\n const renderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\n const renderedRestRange = (0,_rangeMap_js__WEBPACK_IMPORTED_MODULE_12__.shift)(previousRenderedRestRange, delta);\n const updateRange = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.intersect(renderRange, renderedRestRange);\n for (let i = updateRange.start; i < updateRange.end; i++) {\n this.updateItemInDOM(this.items[i], i);\n }\n const removeRanges = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.relativeComplement(renderedRestRange, renderRange);\n for (const range of removeRanges) {\n for (let i = range.start; i < range.end; i++) {\n this.removeItemFromDOM(i);\n }\n }\n const unrenderedRestRanges = previousUnrenderedRestRanges.map(r => (0,_rangeMap_js__WEBPACK_IMPORTED_MODULE_12__.shift)(r, delta));\n const elementsRange = { start, end: start + elements.length };\n const insertRanges = [elementsRange, ...unrenderedRestRanges].map(r => _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.intersect(renderRange, r));\n const beforeElement = this.getNextToLastElement(insertRanges);\n for (const range of insertRanges) {\n for (let i = range.start; i < range.end; i++) {\n const item = this.items[i];\n const rows = rowsToDispose.get(item.templateId);\n const row = rows === null || rows === void 0 ? void 0 : rows.pop();\n this.insertItemInDOM(i, beforeElement, row);\n }\n }\n for (const rows of rowsToDispose.values()) {\n for (const row of rows) {\n this.cache.release(row);\n }\n }\n this.eventuallyUpdateScrollDimensions();\n if (this.supportDynamicHeights) {\n this._rerender(this.scrollTop, this.renderHeight);\n }\n return deleted.map(i => i.element);\n }\n eventuallyUpdateScrollDimensions() {\n this._scrollHeight = this.contentHeight;\n this.rowsContainer.style.height = `${this._scrollHeight}px`;\n if (!this.scrollableElementUpdateDisposable) {\n this.scrollableElementUpdateDisposable = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.scheduleAtNextAnimationFrame)(() => {\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\n this.updateScrollWidth();\n this.scrollableElementUpdateDisposable = null;\n });\n }\n }\n eventuallyUpdateScrollWidth() {\n if (!this.horizontalScrolling) {\n this.scrollableElementWidthDelayer.cancel();\n return;\n }\n this.scrollableElementWidthDelayer.trigger(() => this.updateScrollWidth());\n }\n updateScrollWidth() {\n if (!this.horizontalScrolling) {\n return;\n }\n let scrollWidth = 0;\n for (const item of this.items) {\n if (typeof item.width !== 'undefined') {\n scrollWidth = Math.max(scrollWidth, item.width);\n }\n }\n this.scrollWidth = scrollWidth;\n this.scrollableElement.setScrollDimensions({ scrollWidth: scrollWidth === 0 ? 0 : (scrollWidth + 10) });\n this._onDidChangeContentWidth.fire(this.scrollWidth);\n }\n rerender() {\n if (!this.supportDynamicHeights) {\n return;\n }\n for (const item of this.items) {\n item.lastDynamicHeightWidth = undefined;\n }\n this._rerender(this.lastRenderTop, this.lastRenderHeight);\n }\n get length() {\n return this.items.length;\n }\n get renderHeight() {\n const scrollDimensions = this.scrollableElement.getScrollDimensions();\n return scrollDimensions.height;\n }\n get firstVisibleIndex() {\n const range = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\n const firstElTop = this.rangeMap.positionAt(range.start);\n const nextElTop = this.rangeMap.positionAt(range.start + 1);\n if (nextElTop !== -1) {\n const firstElMidpoint = (nextElTop - firstElTop) / 2 + firstElTop;\n if (firstElMidpoint < this.scrollTop) {\n return range.start + 1;\n }\n }\n return range.start;\n }\n element(index) {\n return this.items[index].element;\n }\n domElement(index) {\n const row = this.items[index].row;\n return row && row.domNode;\n }\n elementHeight(index) {\n return this.items[index].size;\n }\n elementTop(index) {\n return this.rangeMap.positionAt(index);\n }\n indexAt(position) {\n return this.rangeMap.indexAt(position);\n }\n indexAfter(position) {\n return this.rangeMap.indexAfter(position);\n }\n layout(height, width) {\n const scrollDimensions = {\n height: typeof height === 'number' ? height : (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.getContentHeight)(this.domNode)\n };\n if (this.scrollableElementUpdateDisposable) {\n this.scrollableElementUpdateDisposable.dispose();\n this.scrollableElementUpdateDisposable = null;\n scrollDimensions.scrollHeight = this.scrollHeight;\n }\n this.scrollableElement.setScrollDimensions(scrollDimensions);\n if (typeof width !== 'undefined') {\n this.renderWidth = width;\n if (this.supportDynamicHeights) {\n this._rerender(this.scrollTop, this.renderHeight);\n }\n }\n if (this.horizontalScrolling) {\n this.scrollableElement.setScrollDimensions({\n width: typeof width === 'number' ? width : (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.getContentWidth)(this.domNode)\n });\n }\n }\n // Render\n render(previousRenderRange, renderTop, renderHeight, renderLeft, scrollWidth, updateItemsInDOM = false) {\n const renderRange = this.getRenderRange(renderTop, renderHeight);\n const rangesToInsert = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.relativeComplement(renderRange, previousRenderRange);\n const rangesToRemove = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.relativeComplement(previousRenderRange, renderRange);\n const beforeElement = this.getNextToLastElement(rangesToInsert);\n if (updateItemsInDOM) {\n const rangesToUpdate = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.intersect(previousRenderRange, renderRange);\n for (let i = rangesToUpdate.start; i < rangesToUpdate.end; i++) {\n this.updateItemInDOM(this.items[i], i);\n }\n }\n this.cache.transact(() => {\n for (const range of rangesToRemove) {\n for (let i = range.start; i < range.end; i++) {\n this.removeItemFromDOM(i);\n }\n }\n for (const range of rangesToInsert) {\n for (let i = range.start; i < range.end; i++) {\n this.insertItemInDOM(i, beforeElement);\n }\n }\n });\n if (renderLeft !== undefined) {\n this.rowsContainer.style.left = `-${renderLeft}px`;\n }\n this.rowsContainer.style.top = `-${renderTop}px`;\n if (this.horizontalScrolling && scrollWidth !== undefined) {\n this.rowsContainer.style.width = `${Math.max(scrollWidth, this.renderWidth)}px`;\n }\n this.lastRenderTop = renderTop;\n this.lastRenderHeight = renderHeight;\n }\n // DOM operations\n insertItemInDOM(index, beforeElement, row) {\n const item = this.items[index];\n let isStale = false;\n if (!item.row) {\n if (row) {\n item.row = row;\n }\n else {\n const result = this.cache.alloc(item.templateId);\n item.row = result.row;\n isStale = result.isReusingConnectedDomNode;\n }\n }\n const role = this.accessibilityProvider.getRole(item.element) || 'listitem';\n item.row.domNode.setAttribute('role', role);\n const checked = this.accessibilityProvider.isChecked(item.element);\n if (typeof checked === 'boolean') {\n item.row.domNode.setAttribute('aria-checked', String(!!checked));\n }\n else if (checked) {\n const update = (checked) => item.row.domNode.setAttribute('aria-checked', String(!!checked));\n update(checked.value);\n item.checkedDisposable = checked.onDidChange(update);\n }\n if (isStale || !item.row.domNode.parentElement) {\n if (beforeElement) {\n this.rowsContainer.insertBefore(item.row.domNode, beforeElement);\n }\n else {\n this.rowsContainer.appendChild(item.row.domNode);\n }\n }\n this.updateItemInDOM(item, index);\n const renderer = this.renderers.get(item.templateId);\n if (!renderer) {\n throw new Error(`No renderer found for template id ${item.templateId}`);\n }\n renderer === null || renderer === void 0 ? void 0 : renderer.renderElement(item.element, index, item.row.templateData, item.size);\n const uri = this.dnd.getDragURI(item.element);\n item.dragStartDisposable.dispose();\n item.row.domNode.draggable = !!uri;\n if (uri) {\n item.dragStartDisposable = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener)(item.row.domNode, 'dragstart', event => this.onDragStart(item.element, uri, event));\n }\n if (this.horizontalScrolling) {\n this.measureItemWidth(item);\n this.eventuallyUpdateScrollWidth();\n }\n }\n measureItemWidth(item) {\n if (!item.row || !item.row.domNode) {\n return;\n }\n item.row.domNode.style.width = 'fit-content';\n item.width = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.getContentWidth)(item.row.domNode);\n const style = window.getComputedStyle(item.row.domNode);\n if (style.paddingLeft) {\n item.width += parseFloat(style.paddingLeft);\n }\n if (style.paddingRight) {\n item.width += parseFloat(style.paddingRight);\n }\n item.row.domNode.style.width = '';\n }\n updateItemInDOM(item, index) {\n item.row.domNode.style.top = `${this.elementTop(index)}px`;\n if (this.setRowHeight) {\n item.row.domNode.style.height = `${item.size}px`;\n }\n if (this.setRowLineHeight) {\n item.row.domNode.style.lineHeight = `${item.size}px`;\n }\n item.row.domNode.setAttribute('data-index', `${index}`);\n item.row.domNode.setAttribute('data-last-element', index === this.length - 1 ? 'true' : 'false');\n item.row.domNode.setAttribute('data-parity', index % 2 === 0 ? 'even' : 'odd');\n item.row.domNode.setAttribute('aria-setsize', String(this.accessibilityProvider.getSetSize(item.element, index, this.length)));\n item.row.domNode.setAttribute('aria-posinset', String(this.accessibilityProvider.getPosInSet(item.element, index)));\n item.row.domNode.setAttribute('id', this.getElementDomId(index));\n item.row.domNode.classList.toggle('drop-target', item.dropTarget);\n }\n removeItemFromDOM(index) {\n const item = this.items[index];\n item.dragStartDisposable.dispose();\n item.checkedDisposable.dispose();\n if (item.row) {\n const renderer = this.renderers.get(item.templateId);\n if (renderer && renderer.disposeElement) {\n renderer.disposeElement(item.element, index, item.row.templateData, item.size);\n }\n this.cache.release(item.row);\n item.row = null;\n }\n if (this.horizontalScrolling) {\n this.eventuallyUpdateScrollWidth();\n }\n }\n getScrollTop() {\n const scrollPosition = this.scrollableElement.getScrollPosition();\n return scrollPosition.scrollTop;\n }\n setScrollTop(scrollTop, reuseAnimation) {\n if (this.scrollableElementUpdateDisposable) {\n this.scrollableElementUpdateDisposable.dispose();\n this.scrollableElementUpdateDisposable = null;\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\n }\n this.scrollableElement.setScrollPosition({ scrollTop, reuseAnimation });\n }\n get scrollTop() {\n return this.getScrollTop();\n }\n set scrollTop(scrollTop) {\n this.setScrollTop(scrollTop);\n }\n get scrollHeight() {\n return this._scrollHeight + (this.horizontalScrolling ? 10 : 0) + this.additionalScrollHeight;\n }\n // Events\n get onMouseClick() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'click')).event, e => this.toMouseEvent(e), this.disposables); }\n get onMouseDblClick() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'dblclick')).event, e => this.toMouseEvent(e), this.disposables); }\n get onMouseMiddleClick() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.filter(_common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'auxclick')).event, e => this.toMouseEvent(e), this.disposables), e => e.browserEvent.button === 1, this.disposables); }\n get onMouseDown() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'mousedown')).event, e => this.toMouseEvent(e), this.disposables); }\n get onMouseOver() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'mouseover')).event, e => this.toMouseEvent(e), this.disposables); }\n get onMouseOut() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'mouseout')).event, e => this.toMouseEvent(e), this.disposables); }\n get onContextMenu() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.any(_common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'contextmenu')).event, e => this.toMouseEvent(e), this.disposables), _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, _touch_js__WEBPACK_IMPORTED_MODULE_3__.EventType.Contextmenu)).event, e => this.toGestureEvent(e), this.disposables)); }\n get onTouchStart() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.domNode, 'touchstart')).event, e => this.toTouchEvent(e), this.disposables); }\n get onTap() { return _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Event.map(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_2__.DomEmitter(this.rowsContainer, _touch_js__WEBPACK_IMPORTED_MODULE_3__.EventType.Tap)).event, e => this.toGestureEvent(e), this.disposables); }\n toMouseEvent(browserEvent) {\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\n const item = typeof index === 'undefined' ? undefined : this.items[index];\n const element = item && item.element;\n return { browserEvent, index, element };\n }\n toTouchEvent(browserEvent) {\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\n const item = typeof index === 'undefined' ? undefined : this.items[index];\n const element = item && item.element;\n return { browserEvent, index, element };\n }\n toGestureEvent(browserEvent) {\n const index = this.getItemIndexFromEventTarget(browserEvent.initialTarget || null);\n const item = typeof index === 'undefined' ? undefined : this.items[index];\n const element = item && item.element;\n return { browserEvent, index, element };\n }\n toDragEvent(browserEvent) {\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\n const item = typeof index === 'undefined' ? undefined : this.items[index];\n const element = item && item.element;\n return { browserEvent, index, element };\n }\n onScroll(e) {\n try {\n const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\n this.render(previousRenderRange, e.scrollTop, e.height, e.scrollLeft, e.scrollWidth);\n if (this.supportDynamicHeights) {\n this._rerender(e.scrollTop, e.height, e.inSmoothScrolling);\n }\n }\n catch (err) {\n console.error('Got bad scroll event:', e);\n throw err;\n }\n }\n onTouchChange(event) {\n event.preventDefault();\n event.stopPropagation();\n this.scrollTop -= event.translationY;\n }\n // DND\n onDragStart(element, uri, event) {\n var _a, _b;\n if (!event.dataTransfer) {\n return;\n }\n const elements = this.dnd.getDragElements(element);\n event.dataTransfer.effectAllowed = 'copyMove';\n event.dataTransfer.setData(_dnd_js__WEBPACK_IMPORTED_MODULE_0__.DataTransfers.TEXT, uri);\n if (event.dataTransfer.setDragImage) {\n let label;\n if (this.dnd.getDragLabel) {\n label = this.dnd.getDragLabel(elements, event);\n }\n if (typeof label === 'undefined') {\n label = String(elements.length);\n }\n const dragImage = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.$)('.monaco-drag-image');\n dragImage.textContent = label;\n const getDragImageContainer = (e) => {\n while (e && !e.classList.contains('monaco-workbench')) {\n e = e.parentElement;\n }\n return e || document.body;\n };\n const container = getDragImageContainer(this.domNode);\n container.appendChild(dragImage);\n event.dataTransfer.setDragImage(dragImage, -10, -10);\n setTimeout(() => container.removeChild(dragImage), 0);\n }\n this.domNode.classList.add('dragging');\n this.currentDragData = new ElementsDragAndDropData(elements);\n StaticDND.CurrentDragAndDropData = new ExternalElementsDragAndDropData(elements);\n (_b = (_a = this.dnd).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, this.currentDragData, event);\n }\n onDragOver(event) {\n var _a;\n event.browserEvent.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n this.onDragLeaveTimeout.dispose();\n if (StaticDND.CurrentDragAndDropData && StaticDND.CurrentDragAndDropData.getData() === 'vscode-ui') {\n return false;\n }\n this.setupDragAndDropScrollTopAnimation(event.browserEvent);\n if (!event.browserEvent.dataTransfer) {\n return false;\n }\n // Drag over from outside\n if (!this.currentDragData) {\n if (StaticDND.CurrentDragAndDropData) {\n // Drag over from another list\n this.currentDragData = StaticDND.CurrentDragAndDropData;\n }\n else {\n // Drag over from the desktop\n if (!event.browserEvent.dataTransfer.types) {\n return false;\n }\n this.currentDragData = new NativeDragAndDropData();\n }\n }\n const result = this.dnd.onDragOver(this.currentDragData, event.element, event.index, event.browserEvent);\n this.canDrop = typeof result === 'boolean' ? result : result.accept;\n if (!this.canDrop) {\n this.currentDragFeedback = undefined;\n this.currentDragFeedbackDisposable.dispose();\n return false;\n }\n event.browserEvent.dataTransfer.dropEffect = (typeof result !== 'boolean' && result.effect === 0 /* ListDragOverEffect.Copy */) ? 'copy' : 'move';\n let feedback;\n if (typeof result !== 'boolean' && result.feedback) {\n feedback = result.feedback;\n }\n else {\n if (typeof event.index === 'undefined') {\n feedback = [-1];\n }\n else {\n feedback = [event.index];\n }\n }\n // sanitize feedback list\n feedback = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_5__.distinct)(feedback).filter(i => i >= -1 && i < this.length).sort((a, b) => a - b);\n feedback = feedback[0] === -1 ? [-1] : feedback;\n if (equalsDragFeedback(this.currentDragFeedback, feedback)) {\n return true;\n }\n this.currentDragFeedback = feedback;\n this.currentDragFeedbackDisposable.dispose();\n if (feedback[0] === -1) { // entire list feedback\n this.domNode.classList.add('drop-target');\n this.rowsContainer.classList.add('drop-target');\n this.currentDragFeedbackDisposable = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.toDisposable)(() => {\n this.domNode.classList.remove('drop-target');\n this.rowsContainer.classList.remove('drop-target');\n });\n }\n else {\n for (const index of feedback) {\n const item = this.items[index];\n item.dropTarget = true;\n (_a = item.row) === null || _a === void 0 ? void 0 : _a.domNode.classList.add('drop-target');\n }\n this.currentDragFeedbackDisposable = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.toDisposable)(() => {\n var _a;\n for (const index of feedback) {\n const item = this.items[index];\n item.dropTarget = false;\n (_a = item.row) === null || _a === void 0 ? void 0 : _a.domNode.classList.remove('drop-target');\n }\n });\n }\n return true;\n }\n onDragLeave(event) {\n var _a, _b;\n this.onDragLeaveTimeout.dispose();\n this.onDragLeaveTimeout = (0,_common_async_js__WEBPACK_IMPORTED_MODULE_6__.disposableTimeout)(() => this.clearDragOverFeedback(), 100);\n if (this.currentDragData) {\n (_b = (_a = this.dnd).onDragLeave) === null || _b === void 0 ? void 0 : _b.call(_a, this.currentDragData, event.element, event.index, event.browserEvent);\n }\n }\n onDrop(event) {\n if (!this.canDrop) {\n return;\n }\n const dragData = this.currentDragData;\n this.teardownDragAndDropScrollTopAnimation();\n this.clearDragOverFeedback();\n this.domNode.classList.remove('dragging');\n this.currentDragData = undefined;\n StaticDND.CurrentDragAndDropData = undefined;\n if (!dragData || !event.browserEvent.dataTransfer) {\n return;\n }\n event.browserEvent.preventDefault();\n dragData.update(event.browserEvent.dataTransfer);\n this.dnd.drop(dragData, event.element, event.index, event.browserEvent);\n }\n onDragEnd(event) {\n var _a, _b;\n this.canDrop = false;\n this.teardownDragAndDropScrollTopAnimation();\n this.clearDragOverFeedback();\n this.domNode.classList.remove('dragging');\n this.currentDragData = undefined;\n StaticDND.CurrentDragAndDropData = undefined;\n (_b = (_a = this.dnd).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n }\n clearDragOverFeedback() {\n this.currentDragFeedback = undefined;\n this.currentDragFeedbackDisposable.dispose();\n this.currentDragFeedbackDisposable = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.Disposable.None;\n }\n // DND scroll top animation\n setupDragAndDropScrollTopAnimation(event) {\n if (!this.dragOverAnimationDisposable) {\n const viewTop = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.getTopLeftOffset)(this.domNode).top;\n this.dragOverAnimationDisposable = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.animate)(this.animateDragAndDropScrollTop.bind(this, viewTop));\n }\n this.dragOverAnimationStopDisposable.dispose();\n this.dragOverAnimationStopDisposable = (0,_common_async_js__WEBPACK_IMPORTED_MODULE_6__.disposableTimeout)(() => {\n if (this.dragOverAnimationDisposable) {\n this.dragOverAnimationDisposable.dispose();\n this.dragOverAnimationDisposable = undefined;\n }\n }, 1000);\n this.dragOverMouseY = event.pageY;\n }\n animateDragAndDropScrollTop(viewTop) {\n if (this.dragOverMouseY === undefined) {\n return;\n }\n const diff = this.dragOverMouseY - viewTop;\n const upperLimit = this.renderHeight - 35;\n if (diff < 35) {\n this.scrollTop += Math.max(-14, Math.floor(0.3 * (diff - 35)));\n }\n else if (diff > upperLimit) {\n this.scrollTop += Math.min(14, Math.floor(0.3 * (diff - upperLimit)));\n }\n }\n teardownDragAndDropScrollTopAnimation() {\n this.dragOverAnimationStopDisposable.dispose();\n if (this.dragOverAnimationDisposable) {\n this.dragOverAnimationDisposable.dispose();\n this.dragOverAnimationDisposable = undefined;\n }\n }\n // Util\n getItemIndexFromEventTarget(target) {\n const scrollableElement = this.scrollableElement.getDomNode();\n let element = target;\n while (element instanceof HTMLElement && element !== this.rowsContainer && scrollableElement.contains(element)) {\n const rawIndex = element.getAttribute('data-index');\n if (rawIndex) {\n const index = Number(rawIndex);\n if (!isNaN(index)) {\n return index;\n }\n }\n element = element.parentElement;\n }\n return undefined;\n }\n getRenderRange(renderTop, renderHeight) {\n return {\n start: this.rangeMap.indexAt(renderTop),\n end: this.rangeMap.indexAfter(renderTop + renderHeight - 1)\n };\n }\n /**\n * Given a stable rendered state, checks every rendered element whether it needs\n * to be probed for dynamic height. Adjusts scroll height and top if necessary.\n */\n _rerender(renderTop, renderHeight, inSmoothScrolling) {\n const previousRenderRange = this.getRenderRange(renderTop, renderHeight);\n // Let's remember the second element's position, this helps in scrolling up\n // and preserving a linear upwards scroll movement\n let anchorElementIndex;\n let anchorElementTopDelta;\n if (renderTop === this.elementTop(previousRenderRange.start)) {\n anchorElementIndex = previousRenderRange.start;\n anchorElementTopDelta = 0;\n }\n else if (previousRenderRange.end - previousRenderRange.start > 1) {\n anchorElementIndex = previousRenderRange.start + 1;\n anchorElementTopDelta = this.elementTop(anchorElementIndex) - renderTop;\n }\n let heightDiff = 0;\n while (true) {\n const renderRange = this.getRenderRange(renderTop, renderHeight);\n let didChange = false;\n for (let i = renderRange.start; i < renderRange.end; i++) {\n const diff = this.probeDynamicHeight(i);\n if (diff !== 0) {\n this.rangeMap.splice(i, 1, [this.items[i]]);\n }\n heightDiff += diff;\n didChange = didChange || diff !== 0;\n }\n if (!didChange) {\n if (heightDiff !== 0) {\n this.eventuallyUpdateScrollDimensions();\n }\n const unrenderRanges = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.relativeComplement(previousRenderRange, renderRange);\n for (const range of unrenderRanges) {\n for (let i = range.start; i < range.end; i++) {\n if (this.items[i].row) {\n this.removeItemFromDOM(i);\n }\n }\n }\n const renderRanges = _common_range_js__WEBPACK_IMPORTED_MODULE_10__.Range.relativeComplement(renderRange, previousRenderRange);\n for (const range of renderRanges) {\n for (let i = range.start; i < range.end; i++) {\n const afterIndex = i + 1;\n const beforeRow = afterIndex < this.items.length ? this.items[afterIndex].row : null;\n const beforeElement = beforeRow ? beforeRow.domNode : null;\n this.insertItemInDOM(i, beforeElement);\n }\n }\n for (let i = renderRange.start; i < renderRange.end; i++) {\n if (this.items[i].row) {\n this.updateItemInDOM(this.items[i], i);\n }\n }\n if (typeof anchorElementIndex === 'number') {\n // To compute a destination scroll top, we need to take into account the current smooth scrolling\n // animation, and then reuse it with a new target (to avoid prolonging the scroll)\n // See https://github.com/microsoft/vscode/issues/104144\n // See https://github.com/microsoft/vscode/pull/104284\n // See https://github.com/microsoft/vscode/issues/107704\n const deltaScrollTop = this.scrollable.getFutureScrollPosition().scrollTop - renderTop;\n const newScrollTop = this.elementTop(anchorElementIndex) - anchorElementTopDelta + deltaScrollTop;\n this.setScrollTop(newScrollTop, inSmoothScrolling);\n }\n this._onDidChangeContentHeight.fire(this.contentHeight);\n return;\n }\n }\n }\n probeDynamicHeight(index) {\n var _a, _b, _c;\n const item = this.items[index];\n if (!!this.virtualDelegate.getDynamicHeight) {\n const newSize = this.virtualDelegate.getDynamicHeight(item.element);\n if (newSize !== null) {\n const size = item.size;\n item.size = newSize;\n item.lastDynamicHeightWidth = this.renderWidth;\n return newSize - size;\n }\n }\n if (!item.hasDynamicHeight || item.lastDynamicHeightWidth === this.renderWidth) {\n return 0;\n }\n if (!!this.virtualDelegate.hasDynamicHeight && !this.virtualDelegate.hasDynamicHeight(item.element)) {\n return 0;\n }\n const size = item.size;\n if (item.row) {\n item.row.domNode.style.height = '';\n item.size = item.row.domNode.offsetHeight;\n item.lastDynamicHeightWidth = this.renderWidth;\n return item.size - size;\n }\n const { row } = this.cache.alloc(item.templateId);\n row.domNode.style.height = '';\n this.rowsContainer.appendChild(row.domNode);\n const renderer = this.renderers.get(item.templateId);\n if (!renderer) {\n throw new _common_errors_js__WEBPACK_IMPORTED_MODULE_14__.BugIndicatingError('Missing renderer for templateId: ' + item.templateId);\n }\n renderer.renderElement(item.element, index, row.templateData, undefined);\n item.size = row.domNode.offsetHeight;\n (_a = renderer.disposeElement) === null || _a === void 0 ? void 0 : _a.call(renderer, item.element, index, row.templateData, undefined);\n (_c = (_b = this.virtualDelegate).setDynamicHeight) === null || _c === void 0 ? void 0 : _c.call(_b, item.element, item.size);\n item.lastDynamicHeightWidth = this.renderWidth;\n this.rowsContainer.removeChild(row.domNode);\n this.cache.release(row);\n return item.size - size;\n }\n getNextToLastElement(ranges) {\n const lastRange = ranges[ranges.length - 1];\n if (!lastRange) {\n return null;\n }\n const nextToLastItem = this.items[lastRange.end];\n if (!nextToLastItem) {\n return null;\n }\n if (!nextToLastItem.row) {\n return null;\n }\n return nextToLastItem.row.domNode;\n }\n getElementDomId(index) {\n return `${this.domId}_${index}`;\n }\n // Dispose\n dispose() {\n var _a;\n if (this.items) {\n for (const item of this.items) {\n if (item.row) {\n const renderer = this.renderers.get(item.row.templateId);\n if (renderer) {\n (_a = renderer.disposeElement) === null || _a === void 0 ? void 0 : _a.call(renderer, item.element, -1, item.row.templateData, undefined);\n renderer.disposeTemplate(item.row.templateData);\n }\n }\n }\n this.items = [];\n }\n if (this.domNode && this.domNode.parentNode) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.dispose)(this.disposables);\n }\n}\nListView.InstanceCount = 0;\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onMouseClick\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onMouseDblClick\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onMouseMiddleClick\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onMouseDown\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onMouseOver\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onMouseOut\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onContextMenu\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onTouchStart\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_7__.memoize\n], ListView.prototype, \"onTap\", null);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js": +/*!******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DefaultKeyboardNavigationDelegate: () => (/* binding */ DefaultKeyboardNavigationDelegate),\n/* harmony export */ DefaultStyleController: () => (/* binding */ DefaultStyleController),\n/* harmony export */ List: () => (/* binding */ List),\n/* harmony export */ MouseController: () => (/* binding */ MouseController),\n/* harmony export */ TypeNavigationMode: () => (/* binding */ TypeNavigationMode),\n/* harmony export */ isButton: () => (/* binding */ isButton),\n/* harmony export */ isInputElement: () => (/* binding */ isInputElement),\n/* harmony export */ isMonacoEditor: () => (/* binding */ isMonacoEditor),\n/* harmony export */ isSelectionRangeChangeEvent: () => (/* binding */ isSelectionRangeChangeEvent),\n/* harmony export */ isSelectionSingleChangeEvent: () => (/* binding */ isSelectionSingleChangeEvent),\n/* harmony export */ unthemedListStyles: () => (/* binding */ unthemedListStyles)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../event.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/event.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _aria_aria_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../aria/aria.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js\");\n/* harmony import */ var _splice_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./splice.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_color_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/color.js */ \"./node_modules/monaco-editor/esm/vs/base/common/color.js\");\n/* harmony import */ var _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/decorators.js */ \"./node_modules/monaco-editor/esm/vs/base/common/decorators.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_filters_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/filters.js */ \"./node_modules/monaco-editor/esm/vs/base/common/filters.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_numbers_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../common/numbers.js */ \"./node_modules/monaco-editor/esm/vs/base/common/numbers.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _list_css__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./list.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css\");\n/* harmony import */ var _list_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./list.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js\");\n/* harmony import */ var _listView_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./listView.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass TraitRenderer {\n constructor(trait) {\n this.trait = trait;\n this.renderedElements = [];\n }\n get templateId() {\n return `template:${this.trait.name}`;\n }\n renderTemplate(container) {\n return container;\n }\n renderElement(element, index, templateData) {\n const renderedElementIndex = this.renderedElements.findIndex(el => el.templateData === templateData);\n if (renderedElementIndex >= 0) {\n const rendered = this.renderedElements[renderedElementIndex];\n this.trait.unrender(templateData);\n rendered.index = index;\n }\n else {\n const rendered = { index, templateData };\n this.renderedElements.push(rendered);\n }\n this.trait.renderIndex(index, templateData);\n }\n splice(start, deleteCount, insertCount) {\n const rendered = [];\n for (const renderedElement of this.renderedElements) {\n if (renderedElement.index < start) {\n rendered.push(renderedElement);\n }\n else if (renderedElement.index >= start + deleteCount) {\n rendered.push({\n index: renderedElement.index + insertCount - deleteCount,\n templateData: renderedElement.templateData\n });\n }\n }\n this.renderedElements = rendered;\n }\n renderIndexes(indexes) {\n for (const { index, templateData } of this.renderedElements) {\n if (indexes.indexOf(index) > -1) {\n this.trait.renderIndex(index, templateData);\n }\n }\n }\n disposeTemplate(templateData) {\n const index = this.renderedElements.findIndex(el => el.templateData === templateData);\n if (index < 0) {\n return;\n }\n this.renderedElements.splice(index, 1);\n }\n}\nclass Trait {\n get name() { return this._trait; }\n get renderer() {\n return new TraitRenderer(this);\n }\n constructor(_trait) {\n this._trait = _trait;\n this.length = 0;\n this.indexes = [];\n this.sortedIndexes = [];\n this._onChange = new _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Emitter();\n this.onChange = this._onChange.event;\n }\n splice(start, deleteCount, elements) {\n var _a;\n deleteCount = Math.max(0, Math.min(deleteCount, this.length - start));\n const diff = elements.length - deleteCount;\n const end = start + deleteCount;\n const sortedIndexes = [];\n let i = 0;\n while (i < this.sortedIndexes.length && this.sortedIndexes[i] < start) {\n sortedIndexes.push(this.sortedIndexes[i++]);\n }\n for (let j = 0; j < elements.length; j++) {\n if (elements[j]) {\n sortedIndexes.push(j + start);\n }\n }\n while (i < this.sortedIndexes.length && this.sortedIndexes[i] >= end) {\n sortedIndexes.push(this.sortedIndexes[i++] + diff);\n }\n const length = this.length + diff;\n if (this.sortedIndexes.length > 0 && sortedIndexes.length === 0 && length > 0) {\n const first = (_a = this.sortedIndexes.find(index => index >= start)) !== null && _a !== void 0 ? _a : length - 1;\n sortedIndexes.push(Math.min(first, length - 1));\n }\n this.renderer.splice(start, deleteCount, elements.length);\n this._set(sortedIndexes, sortedIndexes);\n this.length = length;\n }\n renderIndex(index, container) {\n container.classList.toggle(this._trait, this.contains(index));\n }\n unrender(container) {\n container.classList.remove(this._trait);\n }\n /**\n * Sets the indexes which should have this trait.\n *\n * @param indexes Indexes which should have this trait.\n * @return The old indexes which had this trait.\n */\n set(indexes, browserEvent) {\n return this._set(indexes, [...indexes].sort(numericSort), browserEvent);\n }\n _set(indexes, sortedIndexes, browserEvent) {\n const result = this.indexes;\n const sortedResult = this.sortedIndexes;\n this.indexes = indexes;\n this.sortedIndexes = sortedIndexes;\n const toRender = disjunction(sortedResult, indexes);\n this.renderer.renderIndexes(toRender);\n this._onChange.fire({ indexes, browserEvent });\n return result;\n }\n get() {\n return this.indexes;\n }\n contains(index) {\n return (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_6__.binarySearch)(this.sortedIndexes, index, numericSort) >= 0;\n }\n dispose() {\n (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.dispose)(this._onChange);\n }\n}\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__.memoize\n], Trait.prototype, \"renderer\", null);\nclass SelectionTrait extends Trait {\n constructor(setAriaSelected) {\n super('selected');\n this.setAriaSelected = setAriaSelected;\n }\n renderIndex(index, container) {\n super.renderIndex(index, container);\n if (this.setAriaSelected) {\n if (this.contains(index)) {\n container.setAttribute('aria-selected', 'true');\n }\n else {\n container.setAttribute('aria-selected', 'false');\n }\n }\n }\n}\n/**\n * The TraitSpliceable is used as a util class to be able\n * to preserve traits across splice calls, given an identity\n * provider.\n */\nclass TraitSpliceable {\n constructor(trait, view, identityProvider) {\n this.trait = trait;\n this.view = view;\n this.identityProvider = identityProvider;\n }\n splice(start, deleteCount, elements) {\n if (!this.identityProvider) {\n return this.trait.splice(start, deleteCount, new Array(elements.length).fill(false));\n }\n const pastElementsWithTrait = this.trait.get().map(i => this.identityProvider.getId(this.view.element(i)).toString());\n if (pastElementsWithTrait.length === 0) {\n return this.trait.splice(start, deleteCount, new Array(elements.length).fill(false));\n }\n const pastElementsWithTraitSet = new Set(pastElementsWithTrait);\n const elementsWithTrait = elements.map(e => pastElementsWithTraitSet.has(this.identityProvider.getId(e).toString()));\n this.trait.splice(start, deleteCount, elementsWithTrait);\n }\n}\nfunction isInputElement(e) {\n return e.tagName === 'INPUT' || e.tagName === 'TEXTAREA';\n}\nfunction isMonacoEditor(e) {\n if (e.classList.contains('monaco-editor')) {\n return true;\n }\n if (e.classList.contains('monaco-list')) {\n return false;\n }\n if (!e.parentElement) {\n return false;\n }\n return isMonacoEditor(e.parentElement);\n}\nfunction isButton(e) {\n if ((e.tagName === 'A' && e.classList.contains('monaco-button')) ||\n (e.tagName === 'DIV' && e.classList.contains('monaco-button-dropdown'))) {\n return true;\n }\n if (e.classList.contains('monaco-list')) {\n return false;\n }\n if (!e.parentElement) {\n return false;\n }\n return isButton(e.parentElement);\n}\nclass KeyboardController {\n get onKeyDown() {\n return this.disposables.add(_common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.chain(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.view.domNode, 'keydown')).event)\n .filter(e => !isInputElement(e.target))\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e)));\n }\n constructor(list, view, options) {\n this.list = list;\n this.view = view;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.DisposableStore();\n this.multipleSelectionDisposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.DisposableStore();\n this.onKeyDown.filter(e => e.keyCode === 3 /* KeyCode.Enter */).on(this.onEnter, this, this.disposables);\n this.onKeyDown.filter(e => e.keyCode === 16 /* KeyCode.UpArrow */).on(this.onUpArrow, this, this.disposables);\n this.onKeyDown.filter(e => e.keyCode === 18 /* KeyCode.DownArrow */).on(this.onDownArrow, this, this.disposables);\n this.onKeyDown.filter(e => e.keyCode === 11 /* KeyCode.PageUp */).on(this.onPageUpArrow, this, this.disposables);\n this.onKeyDown.filter(e => e.keyCode === 12 /* KeyCode.PageDown */).on(this.onPageDownArrow, this, this.disposables);\n this.onKeyDown.filter(e => e.keyCode === 9 /* KeyCode.Escape */).on(this.onEscape, this, this.disposables);\n if (options.multipleSelectionSupport !== false) {\n this.onKeyDown.filter(e => (_common_platform_js__WEBPACK_IMPORTED_MODULE_14__.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === 31 /* KeyCode.KeyA */).on(this.onCtrlA, this, this.multipleSelectionDisposables);\n }\n }\n updateOptions(optionsUpdate) {\n if (optionsUpdate.multipleSelectionSupport !== undefined) {\n this.multipleSelectionDisposables.clear();\n if (optionsUpdate.multipleSelectionSupport) {\n this.onKeyDown.filter(e => (_common_platform_js__WEBPACK_IMPORTED_MODULE_14__.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === 31 /* KeyCode.KeyA */).on(this.onCtrlA, this, this.multipleSelectionDisposables);\n }\n }\n }\n onEnter(e) {\n e.preventDefault();\n e.stopPropagation();\n this.list.setSelection(this.list.getFocus(), e.browserEvent);\n }\n onUpArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n this.list.focusPrevious(1, false, e.browserEvent);\n const el = this.list.getFocus()[0];\n this.list.setAnchor(el);\n this.list.reveal(el);\n this.view.domNode.focus();\n }\n onDownArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n this.list.focusNext(1, false, e.browserEvent);\n const el = this.list.getFocus()[0];\n this.list.setAnchor(el);\n this.list.reveal(el);\n this.view.domNode.focus();\n }\n onPageUpArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n this.list.focusPreviousPage(e.browserEvent);\n const el = this.list.getFocus()[0];\n this.list.setAnchor(el);\n this.list.reveal(el);\n this.view.domNode.focus();\n }\n onPageDownArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n this.list.focusNextPage(e.browserEvent);\n const el = this.list.getFocus()[0];\n this.list.setAnchor(el);\n this.list.reveal(el);\n this.view.domNode.focus();\n }\n onCtrlA(e) {\n e.preventDefault();\n e.stopPropagation();\n this.list.setSelection((0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_6__.range)(this.list.length), e.browserEvent);\n this.list.setAnchor(undefined);\n this.view.domNode.focus();\n }\n onEscape(e) {\n if (this.list.getSelection().length) {\n e.preventDefault();\n e.stopPropagation();\n this.list.setSelection([], e.browserEvent);\n this.list.setAnchor(undefined);\n this.view.domNode.focus();\n }\n }\n dispose() {\n this.disposables.dispose();\n this.multipleSelectionDisposables.dispose();\n }\n}\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__.memoize\n], KeyboardController.prototype, \"onKeyDown\", null);\nvar TypeNavigationMode;\n(function (TypeNavigationMode) {\n TypeNavigationMode[TypeNavigationMode[\"Automatic\"] = 0] = \"Automatic\";\n TypeNavigationMode[TypeNavigationMode[\"Trigger\"] = 1] = \"Trigger\";\n})(TypeNavigationMode || (TypeNavigationMode = {}));\nvar TypeNavigationControllerState;\n(function (TypeNavigationControllerState) {\n TypeNavigationControllerState[TypeNavigationControllerState[\"Idle\"] = 0] = \"Idle\";\n TypeNavigationControllerState[TypeNavigationControllerState[\"Typing\"] = 1] = \"Typing\";\n})(TypeNavigationControllerState || (TypeNavigationControllerState = {}));\nconst DefaultKeyboardNavigationDelegate = new class {\n mightProducePrintableCharacter(event) {\n if (event.ctrlKey || event.metaKey || event.altKey) {\n return false;\n }\n return (event.keyCode >= 31 /* KeyCode.KeyA */ && event.keyCode <= 56 /* KeyCode.KeyZ */)\n || (event.keyCode >= 21 /* KeyCode.Digit0 */ && event.keyCode <= 30 /* KeyCode.Digit9 */)\n || (event.keyCode >= 98 /* KeyCode.Numpad0 */ && event.keyCode <= 107 /* KeyCode.Numpad9 */)\n || (event.keyCode >= 85 /* KeyCode.Semicolon */ && event.keyCode <= 95 /* KeyCode.Quote */);\n }\n};\nclass TypeNavigationController {\n constructor(list, view, keyboardNavigationLabelProvider, keyboardNavigationEventFilter, delegate) {\n this.list = list;\n this.view = view;\n this.keyboardNavigationLabelProvider = keyboardNavigationLabelProvider;\n this.keyboardNavigationEventFilter = keyboardNavigationEventFilter;\n this.delegate = delegate;\n this.enabled = false;\n this.state = TypeNavigationControllerState.Idle;\n this.mode = TypeNavigationMode.Automatic;\n this.triggered = false;\n this.previouslyFocused = -1;\n this.enabledDisposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.DisposableStore();\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.DisposableStore();\n this.updateOptions(list.options);\n }\n updateOptions(options) {\n var _a, _b;\n if ((_a = options.typeNavigationEnabled) !== null && _a !== void 0 ? _a : true) {\n this.enable();\n }\n else {\n this.disable();\n }\n this.mode = (_b = options.typeNavigationMode) !== null && _b !== void 0 ? _b : TypeNavigationMode.Automatic;\n }\n enable() {\n if (this.enabled) {\n return;\n }\n let typing = false;\n const onChar = this.enabledDisposables.add(_common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.chain(this.enabledDisposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.view.domNode, 'keydown')).event))\n .filter(e => !isInputElement(e.target))\n .filter(() => this.mode === TypeNavigationMode.Automatic || this.triggered)\n .map(event => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(event))\n .filter(e => typing || this.keyboardNavigationEventFilter(e))\n .filter(e => this.delegate.mightProducePrintableCharacter(e))\n .forEach(e => _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true))\n .map(event => event.browserEvent.key)\n .event;\n const onClear = _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.debounce(onChar, () => null, 800, undefined, undefined, undefined, this.enabledDisposables);\n const onInput = _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.reduce(_common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.any(onChar, onClear), (r, i) => i === null ? null : ((r || '') + i), undefined, this.enabledDisposables);\n onInput(this.onInput, this, this.enabledDisposables);\n onClear(this.onClear, this, this.enabledDisposables);\n onChar(() => typing = true, undefined, this.enabledDisposables);\n onClear(() => typing = false, undefined, this.enabledDisposables);\n this.enabled = true;\n this.triggered = false;\n }\n disable() {\n if (!this.enabled) {\n return;\n }\n this.enabledDisposables.clear();\n this.enabled = false;\n this.triggered = false;\n }\n onClear() {\n var _a;\n const focus = this.list.getFocus();\n if (focus.length > 0 && focus[0] === this.previouslyFocused) {\n // List: re-announce element on typing end since typed keys will interrupt aria label of focused element\n // Do not announce if there was a focus change at the end to prevent duplication https://github.com/microsoft/vscode/issues/95961\n const ariaLabel = (_a = this.list.options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getAriaLabel(this.list.element(focus[0]));\n if (ariaLabel) {\n (0,_aria_aria_js__WEBPACK_IMPORTED_MODULE_4__.alert)(ariaLabel);\n }\n }\n this.previouslyFocused = -1;\n }\n onInput(word) {\n if (!word) {\n this.state = TypeNavigationControllerState.Idle;\n this.triggered = false;\n return;\n }\n const focus = this.list.getFocus();\n const start = focus.length > 0 ? focus[0] : 0;\n const delta = this.state === TypeNavigationControllerState.Idle ? 1 : 0;\n this.state = TypeNavigationControllerState.Typing;\n for (let i = 0; i < this.list.length; i++) {\n const index = (start + i + delta) % this.list.length;\n const label = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(index));\n const labelStr = label && label.toString();\n if (typeof labelStr === 'undefined' || (0,_common_filters_js__WEBPACK_IMPORTED_MODULE_11__.matchesPrefix)(word, labelStr)) {\n this.previouslyFocused = start;\n this.list.setFocus([index]);\n this.list.reveal(index);\n return;\n }\n }\n }\n dispose() {\n this.disable();\n this.enabledDisposables.dispose();\n this.disposables.dispose();\n }\n}\nclass DOMFocusController {\n constructor(list, view) {\n this.list = list;\n this.view = view;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.DisposableStore();\n const onKeyDown = this.disposables.add(_common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.chain(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(view.domNode, 'keydown')).event))\n .filter(e => !isInputElement(e.target))\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e));\n onKeyDown.filter(e => e.keyCode === 2 /* KeyCode.Tab */ && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey)\n .on(this.onTab, this, this.disposables);\n }\n onTab(e) {\n if (e.target !== this.view.domNode) {\n return;\n }\n const focus = this.list.getFocus();\n if (focus.length === 0) {\n return;\n }\n const focusedDomElement = this.view.domElement(focus[0]);\n if (!focusedDomElement) {\n return;\n }\n const tabIndexElement = focusedDomElement.querySelector('[tabIndex]');\n if (!tabIndexElement || !(tabIndexElement instanceof HTMLElement) || tabIndexElement.tabIndex === -1) {\n return;\n }\n const style = window.getComputedStyle(tabIndexElement);\n if (style.visibility === 'hidden' || style.display === 'none') {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n tabIndexElement.focus();\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nfunction isSelectionSingleChangeEvent(event) {\n return _common_platform_js__WEBPACK_IMPORTED_MODULE_14__.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;\n}\nfunction isSelectionRangeChangeEvent(event) {\n return event.browserEvent.shiftKey;\n}\nfunction isMouseRightClick(event) {\n return event instanceof MouseEvent && event.button === 2;\n}\nconst DefaultMultipleSelectionController = {\n isSelectionSingleChangeEvent,\n isSelectionRangeChangeEvent\n};\nclass MouseController {\n constructor(list) {\n this.list = list;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.DisposableStore();\n this._onPointer = new _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Emitter();\n this.onPointer = this._onPointer.event;\n if (list.options.multipleSelectionSupport !== false) {\n this.multipleSelectionController = this.list.options.multipleSelectionController || DefaultMultipleSelectionController;\n }\n this.mouseSupport = typeof list.options.mouseSupport === 'undefined' || !!list.options.mouseSupport;\n if (this.mouseSupport) {\n list.onMouseDown(this.onMouseDown, this, this.disposables);\n list.onContextMenu(this.onContextMenu, this, this.disposables);\n list.onMouseDblClick(this.onDoubleClick, this, this.disposables);\n list.onTouchStart(this.onMouseDown, this, this.disposables);\n this.disposables.add(_touch_js__WEBPACK_IMPORTED_MODULE_3__.Gesture.addTarget(list.getHTMLElement()));\n }\n _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.any(list.onMouseClick, list.onMouseMiddleClick, list.onTap)(this.onViewPointer, this, this.disposables);\n }\n updateOptions(optionsUpdate) {\n if (optionsUpdate.multipleSelectionSupport !== undefined) {\n this.multipleSelectionController = undefined;\n if (optionsUpdate.multipleSelectionSupport) {\n this.multipleSelectionController = this.list.options.multipleSelectionController || DefaultMultipleSelectionController;\n }\n }\n }\n isSelectionSingleChangeEvent(event) {\n if (!this.multipleSelectionController) {\n return false;\n }\n return this.multipleSelectionController.isSelectionSingleChangeEvent(event);\n }\n isSelectionRangeChangeEvent(event) {\n if (!this.multipleSelectionController) {\n return false;\n }\n return this.multipleSelectionController.isSelectionRangeChangeEvent(event);\n }\n isSelectionChangeEvent(event) {\n return this.isSelectionSingleChangeEvent(event) || this.isSelectionRangeChangeEvent(event);\n }\n onMouseDown(e) {\n if (isMonacoEditor(e.browserEvent.target)) {\n return;\n }\n if (document.activeElement !== e.browserEvent.target) {\n this.list.domFocus();\n }\n }\n onContextMenu(e) {\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\n return;\n }\n const focus = typeof e.index === 'undefined' ? [] : [e.index];\n this.list.setFocus(focus, e.browserEvent);\n }\n onViewPointer(e) {\n if (!this.mouseSupport) {\n return;\n }\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\n return;\n }\n if (e.browserEvent.isHandledByList) {\n return;\n }\n e.browserEvent.isHandledByList = true;\n const focus = e.index;\n if (typeof focus === 'undefined') {\n this.list.setFocus([], e.browserEvent);\n this.list.setSelection([], e.browserEvent);\n this.list.setAnchor(undefined);\n return;\n }\n if (this.isSelectionRangeChangeEvent(e)) {\n return this.changeSelection(e);\n }\n if (this.isSelectionChangeEvent(e)) {\n return this.changeSelection(e);\n }\n this.list.setFocus([focus], e.browserEvent);\n this.list.setAnchor(focus);\n if (!isMouseRightClick(e.browserEvent)) {\n this.list.setSelection([focus], e.browserEvent);\n }\n this._onPointer.fire(e);\n }\n onDoubleClick(e) {\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\n return;\n }\n if (this.isSelectionChangeEvent(e)) {\n return;\n }\n if (e.browserEvent.isHandledByList) {\n return;\n }\n e.browserEvent.isHandledByList = true;\n const focus = this.list.getFocus();\n this.list.setSelection(focus, e.browserEvent);\n }\n changeSelection(e) {\n const focus = e.index;\n let anchor = this.list.getAnchor();\n if (this.isSelectionRangeChangeEvent(e)) {\n if (typeof anchor === 'undefined') {\n const currentFocus = this.list.getFocus()[0];\n anchor = currentFocus !== null && currentFocus !== void 0 ? currentFocus : focus;\n this.list.setAnchor(anchor);\n }\n const min = Math.min(anchor, focus);\n const max = Math.max(anchor, focus);\n const rangeSelection = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_6__.range)(min, max + 1);\n const selection = this.list.getSelection();\n const contiguousRange = getContiguousRangeContaining(disjunction(selection, [anchor]), anchor);\n if (contiguousRange.length === 0) {\n return;\n }\n const newSelection = disjunction(rangeSelection, relativeComplement(selection, contiguousRange));\n this.list.setSelection(newSelection, e.browserEvent);\n this.list.setFocus([focus], e.browserEvent);\n }\n else if (this.isSelectionSingleChangeEvent(e)) {\n const selection = this.list.getSelection();\n const newSelection = selection.filter(i => i !== focus);\n this.list.setFocus([focus]);\n this.list.setAnchor(focus);\n if (selection.length === newSelection.length) {\n this.list.setSelection([...newSelection, focus], e.browserEvent);\n }\n else {\n this.list.setSelection(newSelection, e.browserEvent);\n }\n }\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nclass DefaultStyleController {\n constructor(styleElement, selectorSuffix) {\n this.styleElement = styleElement;\n this.selectorSuffix = selectorSuffix;\n }\n style(styles) {\n var _a, _b;\n const suffix = this.selectorSuffix && `.${this.selectorSuffix}`;\n const content = [];\n if (styles.listBackground) {\n content.push(`.monaco-list${suffix} .monaco-list-rows { background: ${styles.listBackground}; }`);\n }\n if (styles.listFocusBackground) {\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { background-color: ${styles.listFocusBackground}; }`);\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused:hover { background-color: ${styles.listFocusBackground}; }`); // overwrite :hover style in this case!\n }\n if (styles.listFocusForeground) {\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { color: ${styles.listFocusForeground}; }`);\n }\n if (styles.listActiveSelectionBackground) {\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { background-color: ${styles.listActiveSelectionBackground}; }`);\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected:hover { background-color: ${styles.listActiveSelectionBackground}; }`); // overwrite :hover style in this case!\n }\n if (styles.listActiveSelectionForeground) {\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { color: ${styles.listActiveSelectionForeground}; }`);\n }\n if (styles.listActiveSelectionIconForeground) {\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected .codicon { color: ${styles.listActiveSelectionIconForeground}; }`);\n }\n if (styles.listFocusAndSelectionBackground) {\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.selected.focused { background-color: ${styles.listFocusAndSelectionBackground}; }\n\t\t\t`);\n }\n if (styles.listFocusAndSelectionForeground) {\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.selected.focused { color: ${styles.listFocusAndSelectionForeground}; }\n\t\t\t`);\n }\n if (styles.listInactiveFocusForeground) {\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { color: ${styles.listInactiveFocusForeground}; }`);\n content.push(`.monaco-list${suffix} .monaco-list-row.focused:hover { color: ${styles.listInactiveFocusForeground}; }`); // overwrite :hover style in this case!\n }\n if (styles.listInactiveSelectionIconForeground) {\n content.push(`.monaco-list${suffix} .monaco-list-row.focused .codicon { color: ${styles.listInactiveSelectionIconForeground}; }`);\n }\n if (styles.listInactiveFocusBackground) {\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { background-color: ${styles.listInactiveFocusBackground}; }`);\n content.push(`.monaco-list${suffix} .monaco-list-row.focused:hover { background-color: ${styles.listInactiveFocusBackground}; }`); // overwrite :hover style in this case!\n }\n if (styles.listInactiveSelectionBackground) {\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { background-color: ${styles.listInactiveSelectionBackground}; }`);\n content.push(`.monaco-list${suffix} .monaco-list-row.selected:hover { background-color: ${styles.listInactiveSelectionBackground}; }`); // overwrite :hover style in this case!\n }\n if (styles.listInactiveSelectionForeground) {\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { color: ${styles.listInactiveSelectionForeground}; }`);\n }\n if (styles.listHoverBackground) {\n content.push(`.monaco-list${suffix}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${styles.listHoverBackground}; }`);\n }\n if (styles.listHoverForeground) {\n content.push(`.monaco-list${suffix}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ${styles.listHoverForeground}; }`);\n }\n /**\n * Outlines\n */\n const focusAndSelectionOutline = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.asCssValueWithDefault)(styles.listFocusAndSelectionOutline, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.asCssValueWithDefault)(styles.listSelectionOutline, (_a = styles.listFocusOutline) !== null && _a !== void 0 ? _a : ''));\n if (focusAndSelectionOutline) { // default: listFocusOutline\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused.selected { outline: 1px solid ${focusAndSelectionOutline}; outline-offset: -1px;}`);\n }\n if (styles.listFocusOutline) { // default: set\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.focused { outline: 1px solid ${styles.listFocusOutline}; outline-offset: -1px; }\n\t\t\t\t.monaco-workbench.context-menu-visible .monaco-list${suffix}.last-focused .monaco-list-row.focused { outline: 1px solid ${styles.listFocusOutline}; outline-offset: -1px; }\n\t\t\t`);\n }\n const inactiveFocusAndSelectionOutline = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.asCssValueWithDefault)(styles.listSelectionOutline, (_b = styles.listInactiveFocusOutline) !== null && _b !== void 0 ? _b : '');\n if (inactiveFocusAndSelectionOutline) {\n content.push(`.monaco-list${suffix} .monaco-list-row.focused.selected { outline: 1px dotted ${inactiveFocusAndSelectionOutline}; outline-offset: -1px; }`);\n }\n if (styles.listSelectionOutline) { // default: activeContrastBorder\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { outline: 1px dotted ${styles.listSelectionOutline}; outline-offset: -1px; }`);\n }\n if (styles.listInactiveFocusOutline) { // default: null\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { outline: 1px dotted ${styles.listInactiveFocusOutline}; outline-offset: -1px; }`);\n }\n if (styles.listHoverOutline) { // default: activeContrastBorder\n content.push(`.monaco-list${suffix} .monaco-list-row:hover { outline: 1px dashed ${styles.listHoverOutline}; outline-offset: -1px; }`);\n }\n if (styles.listDropBackground) {\n content.push(`\n\t\t\t\t.monaco-list${suffix}.drop-target,\n\t\t\t\t.monaco-list${suffix} .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list${suffix} .monaco-list-row.drop-target { background-color: ${styles.listDropBackground} !important; color: inherit !important; }\n\t\t\t`);\n }\n if (styles.tableColumnsBorder) {\n content.push(`\n\t\t\t\t.monaco-table > .monaco-split-view2,\n\t\t\t\t.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: ${styles.tableColumnsBorder};\n\t\t\t\t}\n\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t}\n\t\t\t`);\n }\n if (styles.tableOddRowsBackgroundColor) {\n content.push(`\n\t\t\t\t.monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr,\n\t\t\t\t.monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr,\n\t\t\t\t.monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr {\n\t\t\t\t\tbackground-color: ${styles.tableOddRowsBackgroundColor};\n\t\t\t\t}\n\t\t\t`);\n }\n this.styleElement.textContent = content.join('\\n');\n }\n}\nconst unthemedListStyles = {\n listFocusBackground: '#7FB0D0',\n listActiveSelectionBackground: '#0E639C',\n listActiveSelectionForeground: '#FFFFFF',\n listActiveSelectionIconForeground: '#FFFFFF',\n listFocusAndSelectionOutline: '#90C2F9',\n listFocusAndSelectionBackground: '#094771',\n listFocusAndSelectionForeground: '#FFFFFF',\n listInactiveSelectionBackground: '#3F3F46',\n listInactiveSelectionIconForeground: '#FFFFFF',\n listHoverBackground: '#2A2D2E',\n listDropBackground: '#383B3D',\n treeIndentGuidesStroke: '#a9a9a9',\n treeInactiveIndentGuidesStroke: _common_color_js__WEBPACK_IMPORTED_MODULE_8__.Color.fromHex('#a9a9a9').transparent(0.4).toString(),\n tableColumnsBorder: _common_color_js__WEBPACK_IMPORTED_MODULE_8__.Color.fromHex('#cccccc').transparent(0.2).toString(),\n tableOddRowsBackgroundColor: _common_color_js__WEBPACK_IMPORTED_MODULE_8__.Color.fromHex('#cccccc').transparent(0.04).toString(),\n listBackground: undefined,\n listFocusForeground: undefined,\n listInactiveSelectionForeground: undefined,\n listInactiveFocusForeground: undefined,\n listInactiveFocusBackground: undefined,\n listHoverForeground: undefined,\n listFocusOutline: undefined,\n listInactiveFocusOutline: undefined,\n listSelectionOutline: undefined,\n listHoverOutline: undefined\n};\nconst DefaultOptions = {\n keyboardSupport: true,\n mouseSupport: true,\n multipleSelectionSupport: true,\n dnd: {\n getDragURI() { return null; },\n onDragStart() { },\n onDragOver() { return false; },\n drop() { }\n }\n};\n// TODO@Joao: move these utils into a SortedArray class\nfunction getContiguousRangeContaining(range, value) {\n const index = range.indexOf(value);\n if (index === -1) {\n return [];\n }\n const result = [];\n let i = index - 1;\n while (i >= 0 && range[i] === value - (index - i)) {\n result.push(range[i--]);\n }\n result.reverse();\n i = index;\n while (i < range.length && range[i] === value + (i - index)) {\n result.push(range[i++]);\n }\n return result;\n}\n/**\n * Given two sorted collections of numbers, returns the intersection\n * between them (OR).\n */\nfunction disjunction(one, other) {\n const result = [];\n let i = 0, j = 0;\n while (i < one.length || j < other.length) {\n if (i >= one.length) {\n result.push(other[j++]);\n }\n else if (j >= other.length) {\n result.push(one[i++]);\n }\n else if (one[i] === other[j]) {\n result.push(one[i]);\n i++;\n j++;\n continue;\n }\n else if (one[i] < other[j]) {\n result.push(one[i++]);\n }\n else {\n result.push(other[j++]);\n }\n }\n return result;\n}\n/**\n * Given two sorted collections of numbers, returns the relative\n * complement between them (XOR).\n */\nfunction relativeComplement(one, other) {\n const result = [];\n let i = 0, j = 0;\n while (i < one.length || j < other.length) {\n if (i >= one.length) {\n result.push(other[j++]);\n }\n else if (j >= other.length) {\n result.push(one[i++]);\n }\n else if (one[i] === other[j]) {\n i++;\n j++;\n continue;\n }\n else if (one[i] < other[j]) {\n result.push(one[i++]);\n }\n else {\n j++;\n }\n }\n return result;\n}\nconst numericSort = (a, b) => a - b;\nclass PipelineRenderer {\n constructor(_templateId, renderers) {\n this._templateId = _templateId;\n this.renderers = renderers;\n }\n get templateId() {\n return this._templateId;\n }\n renderTemplate(container) {\n return this.renderers.map(r => r.renderTemplate(container));\n }\n renderElement(element, index, templateData, height) {\n let i = 0;\n for (const renderer of this.renderers) {\n renderer.renderElement(element, index, templateData[i++], height);\n }\n }\n disposeElement(element, index, templateData, height) {\n var _a;\n let i = 0;\n for (const renderer of this.renderers) {\n (_a = renderer.disposeElement) === null || _a === void 0 ? void 0 : _a.call(renderer, element, index, templateData[i], height);\n i += 1;\n }\n }\n disposeTemplate(templateData) {\n let i = 0;\n for (const renderer of this.renderers) {\n renderer.disposeTemplate(templateData[i++]);\n }\n }\n}\nclass AccessibiltyRenderer {\n constructor(accessibilityProvider) {\n this.accessibilityProvider = accessibilityProvider;\n this.templateId = 'a18n';\n }\n renderTemplate(container) {\n return container;\n }\n renderElement(element, index, container) {\n const ariaLabel = this.accessibilityProvider.getAriaLabel(element);\n if (ariaLabel) {\n container.setAttribute('aria-label', ariaLabel);\n }\n else {\n container.removeAttribute('aria-label');\n }\n const ariaLevel = this.accessibilityProvider.getAriaLevel && this.accessibilityProvider.getAriaLevel(element);\n if (typeof ariaLevel === 'number') {\n container.setAttribute('aria-level', `${ariaLevel}`);\n }\n else {\n container.removeAttribute('aria-level');\n }\n }\n disposeTemplate(templateData) {\n // noop\n }\n}\nclass ListViewDragAndDrop {\n constructor(list, dnd) {\n this.list = list;\n this.dnd = dnd;\n }\n getDragElements(element) {\n const selection = this.list.getSelectedElements();\n const elements = selection.indexOf(element) > -1 ? selection : [element];\n return elements;\n }\n getDragURI(element) {\n return this.dnd.getDragURI(element);\n }\n getDragLabel(elements, originalEvent) {\n if (this.dnd.getDragLabel) {\n return this.dnd.getDragLabel(elements, originalEvent);\n }\n return undefined;\n }\n onDragStart(data, originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, data, originalEvent);\n }\n onDragOver(data, targetElement, targetIndex, originalEvent) {\n return this.dnd.onDragOver(data, targetElement, targetIndex, originalEvent);\n }\n onDragLeave(data, targetElement, targetIndex, originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragLeave) === null || _b === void 0 ? void 0 : _b.call(_a, data, targetElement, targetIndex, originalEvent);\n }\n onDragEnd(originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, originalEvent);\n }\n drop(data, targetElement, targetIndex, originalEvent) {\n this.dnd.drop(data, targetElement, targetIndex, originalEvent);\n }\n}\n/**\n * The {@link List} is a virtual scrolling widget, built on top of the {@link ListView}\n * widget.\n *\n * Features:\n * - Customizable keyboard and mouse support\n * - Element traits: focus, selection, achor\n * - Accessibility support\n * - Touch support\n * - Performant template-based rendering\n * - Horizontal scrolling\n * - Variable element height support\n * - Dynamic element height support\n * - Drag-and-drop support\n */\nclass List {\n get onDidChangeFocus() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.map(this.eventBufferer.wrapEvent(this.focus.onChange), e => this.toListEvent(e), this.disposables);\n }\n get onDidChangeSelection() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.map(this.eventBufferer.wrapEvent(this.selection.onChange), e => this.toListEvent(e), this.disposables);\n }\n get domId() { return this.view.domId; }\n get onMouseClick() { return this.view.onMouseClick; }\n get onMouseDblClick() { return this.view.onMouseDblClick; }\n get onMouseMiddleClick() { return this.view.onMouseMiddleClick; }\n get onPointer() { return this.mouseController.onPointer; }\n get onMouseDown() { return this.view.onMouseDown; }\n get onMouseOver() { return this.view.onMouseOver; }\n get onMouseOut() { return this.view.onMouseOut; }\n get onTouchStart() { return this.view.onTouchStart; }\n get onTap() { return this.view.onTap; }\n /**\n * Possible context menu trigger events:\n * - ContextMenu key\n * - Shift F10\n * - Ctrl Option Shift M (macOS with VoiceOver)\n * - Mouse right click\n */\n get onContextMenu() {\n let didJustPressContextMenuKey = false;\n const fromKeyDown = this.disposables.add(_common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.chain(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.view.domNode, 'keydown')).event))\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e))\n .filter(e => didJustPressContextMenuKey = e.keyCode === 58 /* KeyCode.ContextMenu */ || (e.shiftKey && e.keyCode === 68 /* KeyCode.F10 */))\n .map(e => _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true))\n .filter(() => false)\n .event;\n const fromKeyUp = this.disposables.add(_common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.chain(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.view.domNode, 'keyup')).event))\n .forEach(() => didJustPressContextMenuKey = false)\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e))\n .filter(e => e.keyCode === 58 /* KeyCode.ContextMenu */ || (e.shiftKey && e.keyCode === 68 /* KeyCode.F10 */))\n .map(e => _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true))\n .map(({ browserEvent }) => {\n const focus = this.getFocus();\n const index = focus.length ? focus[0] : undefined;\n const element = typeof index !== 'undefined' ? this.view.element(index) : undefined;\n const anchor = typeof index !== 'undefined' ? this.view.domElement(index) : this.view.domNode;\n return { index, element, anchor, browserEvent };\n })\n .event;\n const fromMouse = this.disposables.add(_common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.chain(this.view.onContextMenu))\n .filter(_ => !didJustPressContextMenuKey)\n .map(({ element, index, browserEvent }) => ({ element, index, anchor: { x: browserEvent.pageX + 1, y: browserEvent.pageY }, browserEvent }))\n .event;\n return _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.any(fromKeyDown, fromKeyUp, fromMouse);\n }\n get onKeyDown() { return this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.view.domNode, 'keydown')).event; }\n get onDidFocus() { return _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Event.signal(this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.view.domNode, 'focus', true)).event); }\n constructor(user, container, virtualDelegate, renderers, _options = DefaultOptions) {\n var _a, _b, _c, _d;\n this.user = user;\n this._options = _options;\n this.focus = new Trait('focused');\n this.anchor = new Trait('anchor');\n this.eventBufferer = new _common_event_js__WEBPACK_IMPORTED_MODULE_10__.EventBufferer();\n this._ariaLabel = '';\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_12__.DisposableStore();\n this._onDidDispose = new _common_event_js__WEBPACK_IMPORTED_MODULE_10__.Emitter();\n this.onDidDispose = this._onDidDispose.event;\n const role = this._options.accessibilityProvider && this._options.accessibilityProvider.getWidgetRole ? (_a = this._options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getWidgetRole() : 'list';\n this.selection = new SelectionTrait(role !== 'listbox');\n const baseRenderers = [this.focus.renderer, this.selection.renderer];\n this.accessibilityProvider = _options.accessibilityProvider;\n if (this.accessibilityProvider) {\n baseRenderers.push(new AccessibiltyRenderer(this.accessibilityProvider));\n (_c = (_b = this.accessibilityProvider).onDidChangeActiveDescendant) === null || _c === void 0 ? void 0 : _c.call(_b, this.onDidChangeActiveDescendant, this, this.disposables);\n }\n renderers = renderers.map(r => new PipelineRenderer(r.templateId, [...baseRenderers, r]));\n const viewOptions = Object.assign(Object.assign({}, _options), { dnd: _options.dnd && new ListViewDragAndDrop(this, _options.dnd) });\n this.view = this.createListView(container, virtualDelegate, renderers, viewOptions);\n this.view.domNode.setAttribute('role', role);\n if (_options.styleController) {\n this.styleController = _options.styleController(this.view.domId);\n }\n else {\n const styleElement = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.createStyleSheet)(this.view.domNode);\n this.styleController = new DefaultStyleController(styleElement, this.view.domId);\n }\n this.spliceable = new _splice_js__WEBPACK_IMPORTED_MODULE_5__.CombinedSpliceable([\n new TraitSpliceable(this.focus, this.view, _options.identityProvider),\n new TraitSpliceable(this.selection, this.view, _options.identityProvider),\n new TraitSpliceable(this.anchor, this.view, _options.identityProvider),\n this.view\n ]);\n this.disposables.add(this.focus);\n this.disposables.add(this.selection);\n this.disposables.add(this.anchor);\n this.disposables.add(this.view);\n this.disposables.add(this._onDidDispose);\n this.disposables.add(new DOMFocusController(this, this.view));\n if (typeof _options.keyboardSupport !== 'boolean' || _options.keyboardSupport) {\n this.keyboardController = new KeyboardController(this, this.view, _options);\n this.disposables.add(this.keyboardController);\n }\n if (_options.keyboardNavigationLabelProvider) {\n const delegate = _options.keyboardNavigationDelegate || DefaultKeyboardNavigationDelegate;\n this.typeNavigationController = new TypeNavigationController(this, this.view, _options.keyboardNavigationLabelProvider, (_d = _options.keyboardNavigationEventFilter) !== null && _d !== void 0 ? _d : (() => true), delegate);\n this.disposables.add(this.typeNavigationController);\n }\n this.mouseController = this.createMouseController(_options);\n this.disposables.add(this.mouseController);\n this.onDidChangeFocus(this._onFocusChange, this, this.disposables);\n this.onDidChangeSelection(this._onSelectionChange, this, this.disposables);\n if (this.accessibilityProvider) {\n this.ariaLabel = this.accessibilityProvider.getWidgetAriaLabel();\n }\n if (this._options.multipleSelectionSupport !== false) {\n this.view.domNode.setAttribute('aria-multiselectable', 'true');\n }\n }\n createListView(container, virtualDelegate, renderers, viewOptions) {\n return new _listView_js__WEBPACK_IMPORTED_MODULE_18__.ListView(container, virtualDelegate, renderers, viewOptions);\n }\n createMouseController(options) {\n return new MouseController(this);\n }\n updateOptions(optionsUpdate = {}) {\n var _a, _b;\n this._options = Object.assign(Object.assign({}, this._options), optionsUpdate);\n (_a = this.typeNavigationController) === null || _a === void 0 ? void 0 : _a.updateOptions(this._options);\n if (this._options.multipleSelectionController !== undefined) {\n if (this._options.multipleSelectionSupport) {\n this.view.domNode.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.view.domNode.removeAttribute('aria-multiselectable');\n }\n }\n this.mouseController.updateOptions(optionsUpdate);\n (_b = this.keyboardController) === null || _b === void 0 ? void 0 : _b.updateOptions(optionsUpdate);\n this.view.updateOptions(optionsUpdate);\n }\n get options() {\n return this._options;\n }\n splice(start, deleteCount, elements = []) {\n if (start < 0 || start > this.view.length) {\n throw new _list_js__WEBPACK_IMPORTED_MODULE_17__.ListError(this.user, `Invalid start index: ${start}`);\n }\n if (deleteCount < 0) {\n throw new _list_js__WEBPACK_IMPORTED_MODULE_17__.ListError(this.user, `Invalid delete count: ${deleteCount}`);\n }\n if (deleteCount === 0 && elements.length === 0) {\n return;\n }\n this.eventBufferer.bufferEvents(() => this.spliceable.splice(start, deleteCount, elements));\n }\n rerender() {\n this.view.rerender();\n }\n element(index) {\n return this.view.element(index);\n }\n get length() {\n return this.view.length;\n }\n get contentHeight() {\n return this.view.contentHeight;\n }\n get scrollTop() {\n return this.view.getScrollTop();\n }\n set scrollTop(scrollTop) {\n this.view.setScrollTop(scrollTop);\n }\n get scrollHeight() {\n return this.view.scrollHeight;\n }\n get firstVisibleIndex() {\n return this.view.firstVisibleIndex;\n }\n get ariaLabel() {\n return this._ariaLabel;\n }\n set ariaLabel(value) {\n this._ariaLabel = value;\n this.view.domNode.setAttribute('aria-label', value);\n }\n domFocus() {\n this.view.domNode.focus({ preventScroll: true });\n }\n layout(height, width) {\n this.view.layout(height, width);\n }\n setSelection(indexes, browserEvent) {\n for (const index of indexes) {\n if (index < 0 || index >= this.length) {\n throw new _list_js__WEBPACK_IMPORTED_MODULE_17__.ListError(this.user, `Invalid index ${index}`);\n }\n }\n this.selection.set(indexes, browserEvent);\n }\n getSelection() {\n return this.selection.get();\n }\n getSelectedElements() {\n return this.getSelection().map(i => this.view.element(i));\n }\n setAnchor(index) {\n if (typeof index === 'undefined') {\n this.anchor.set([]);\n return;\n }\n if (index < 0 || index >= this.length) {\n throw new _list_js__WEBPACK_IMPORTED_MODULE_17__.ListError(this.user, `Invalid index ${index}`);\n }\n this.anchor.set([index]);\n }\n getAnchor() {\n return (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_6__.firstOrDefault)(this.anchor.get(), undefined);\n }\n getAnchorElement() {\n const anchor = this.getAnchor();\n return typeof anchor === 'undefined' ? undefined : this.element(anchor);\n }\n setFocus(indexes, browserEvent) {\n for (const index of indexes) {\n if (index < 0 || index >= this.length) {\n throw new _list_js__WEBPACK_IMPORTED_MODULE_17__.ListError(this.user, `Invalid index ${index}`);\n }\n }\n this.focus.set(indexes, browserEvent);\n }\n focusNext(n = 1, loop = false, browserEvent, filter) {\n if (this.length === 0) {\n return;\n }\n const focus = this.focus.get();\n const index = this.findNextIndex(focus.length > 0 ? focus[0] + n : 0, loop, filter);\n if (index > -1) {\n this.setFocus([index], browserEvent);\n }\n }\n focusPrevious(n = 1, loop = false, browserEvent, filter) {\n if (this.length === 0) {\n return;\n }\n const focus = this.focus.get();\n const index = this.findPreviousIndex(focus.length > 0 ? focus[0] - n : 0, loop, filter);\n if (index > -1) {\n this.setFocus([index], browserEvent);\n }\n }\n focusNextPage(browserEvent, filter) {\n return __awaiter(this, void 0, void 0, function* () {\n let lastPageIndex = this.view.indexAt(this.view.getScrollTop() + this.view.renderHeight);\n lastPageIndex = lastPageIndex === 0 ? 0 : lastPageIndex - 1;\n const currentlyFocusedElementIndex = this.getFocus()[0];\n if (currentlyFocusedElementIndex !== lastPageIndex && (currentlyFocusedElementIndex === undefined || lastPageIndex > currentlyFocusedElementIndex)) {\n const lastGoodPageIndex = this.findPreviousIndex(lastPageIndex, false, filter);\n if (lastGoodPageIndex > -1 && currentlyFocusedElementIndex !== lastGoodPageIndex) {\n this.setFocus([lastGoodPageIndex], browserEvent);\n }\n else {\n this.setFocus([lastPageIndex], browserEvent);\n }\n }\n else {\n const previousScrollTop = this.view.getScrollTop();\n let nextpageScrollTop = previousScrollTop + this.view.renderHeight;\n if (lastPageIndex > currentlyFocusedElementIndex) {\n // scroll last page element to the top only if the last page element is below the focused element\n nextpageScrollTop -= this.view.elementHeight(lastPageIndex);\n }\n this.view.setScrollTop(nextpageScrollTop);\n if (this.view.getScrollTop() !== previousScrollTop) {\n this.setFocus([]);\n // Let the scroll event listener run\n yield (0,_common_async_js__WEBPACK_IMPORTED_MODULE_7__.timeout)(0);\n yield this.focusNextPage(browserEvent, filter);\n }\n }\n });\n }\n focusPreviousPage(browserEvent, filter) {\n return __awaiter(this, void 0, void 0, function* () {\n let firstPageIndex;\n const scrollTop = this.view.getScrollTop();\n if (scrollTop === 0) {\n firstPageIndex = this.view.indexAt(scrollTop);\n }\n else {\n firstPageIndex = this.view.indexAfter(scrollTop - 1);\n }\n const currentlyFocusedElementIndex = this.getFocus()[0];\n if (currentlyFocusedElementIndex !== firstPageIndex && (currentlyFocusedElementIndex === undefined || currentlyFocusedElementIndex >= firstPageIndex)) {\n const firstGoodPageIndex = this.findNextIndex(firstPageIndex, false, filter);\n if (firstGoodPageIndex > -1 && currentlyFocusedElementIndex !== firstGoodPageIndex) {\n this.setFocus([firstGoodPageIndex], browserEvent);\n }\n else {\n this.setFocus([firstPageIndex], browserEvent);\n }\n }\n else {\n const previousScrollTop = scrollTop;\n this.view.setScrollTop(scrollTop - this.view.renderHeight);\n if (this.view.getScrollTop() !== previousScrollTop) {\n this.setFocus([]);\n // Let the scroll event listener run\n yield (0,_common_async_js__WEBPACK_IMPORTED_MODULE_7__.timeout)(0);\n yield this.focusPreviousPage(browserEvent, filter);\n }\n }\n });\n }\n focusLast(browserEvent, filter) {\n if (this.length === 0) {\n return;\n }\n const index = this.findPreviousIndex(this.length - 1, false, filter);\n if (index > -1) {\n this.setFocus([index], browserEvent);\n }\n }\n focusFirst(browserEvent, filter) {\n this.focusNth(0, browserEvent, filter);\n }\n focusNth(n, browserEvent, filter) {\n if (this.length === 0) {\n return;\n }\n const index = this.findNextIndex(n, false, filter);\n if (index > -1) {\n this.setFocus([index], browserEvent);\n }\n }\n findNextIndex(index, loop = false, filter) {\n for (let i = 0; i < this.length; i++) {\n if (index >= this.length && !loop) {\n return -1;\n }\n index = index % this.length;\n if (!filter || filter(this.element(index))) {\n return index;\n }\n index++;\n }\n return -1;\n }\n findPreviousIndex(index, loop = false, filter) {\n for (let i = 0; i < this.length; i++) {\n if (index < 0 && !loop) {\n return -1;\n }\n index = (this.length + (index % this.length)) % this.length;\n if (!filter || filter(this.element(index))) {\n return index;\n }\n index--;\n }\n return -1;\n }\n getFocus() {\n return this.focus.get();\n }\n getFocusedElements() {\n return this.getFocus().map(i => this.view.element(i));\n }\n reveal(index, relativeTop) {\n if (index < 0 || index >= this.length) {\n throw new _list_js__WEBPACK_IMPORTED_MODULE_17__.ListError(this.user, `Invalid index ${index}`);\n }\n const scrollTop = this.view.getScrollTop();\n const elementTop = this.view.elementTop(index);\n const elementHeight = this.view.elementHeight(index);\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_15__.isNumber)(relativeTop)) {\n // y = mx + b\n const m = elementHeight - this.view.renderHeight;\n this.view.setScrollTop(m * (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_13__.clamp)(relativeTop, 0, 1) + elementTop);\n }\n else {\n const viewItemBottom = elementTop + elementHeight;\n const scrollBottom = scrollTop + this.view.renderHeight;\n if (elementTop < scrollTop && viewItemBottom >= scrollBottom) {\n // The element is already overflowing the viewport, no-op\n }\n else if (elementTop < scrollTop || (viewItemBottom >= scrollBottom && elementHeight >= this.view.renderHeight)) {\n this.view.setScrollTop(elementTop);\n }\n else if (viewItemBottom >= scrollBottom) {\n this.view.setScrollTop(viewItemBottom - this.view.renderHeight);\n }\n }\n }\n getHTMLElement() {\n return this.view.domNode;\n }\n getElementID(index) {\n return this.view.getElementDomId(index);\n }\n style(styles) {\n this.styleController.style(styles);\n }\n toListEvent({ indexes, browserEvent }) {\n return { indexes, elements: indexes.map(i => this.view.element(i)), browserEvent };\n }\n _onFocusChange() {\n const focus = this.focus.get();\n this.view.domNode.classList.toggle('element-focused', focus.length > 0);\n this.onDidChangeActiveDescendant();\n }\n onDidChangeActiveDescendant() {\n var _a;\n const focus = this.focus.get();\n if (focus.length > 0) {\n let id;\n if ((_a = this.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getActiveDescendantId) {\n id = this.accessibilityProvider.getActiveDescendantId(this.view.element(focus[0]));\n }\n this.view.domNode.setAttribute('aria-activedescendant', id || this.view.getElementDomId(focus[0]));\n }\n else {\n this.view.domNode.removeAttribute('aria-activedescendant');\n }\n }\n _onSelectionChange() {\n const selection = this.selection.get();\n this.view.domNode.classList.toggle('selection-none', selection.length === 0);\n this.view.domNode.classList.toggle('selection-single', selection.length === 1);\n this.view.domNode.classList.toggle('selection-multiple', selection.length > 1);\n }\n dispose() {\n this._onDidDispose.fire();\n this.disposables.dispose();\n this._onDidDispose.dispose();\n }\n}\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__.memoize\n], List.prototype, \"onDidChangeFocus\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__.memoize\n], List.prototype, \"onDidChangeSelection\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__.memoize\n], List.prototype, \"onContextMenu\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__.memoize\n], List.prototype, \"onKeyDown\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_9__.memoize\n], List.prototype, \"onDidFocus\", null);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js": +/*!****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RangeMap: () => (/* binding */ RangeMap),\n/* harmony export */ consolidate: () => (/* binding */ consolidate),\n/* harmony export */ groupIntersect: () => (/* binding */ groupIntersect),\n/* harmony export */ shift: () => (/* binding */ shift)\n/* harmony export */ });\n/* harmony import */ var _common_range_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../common/range.js */ \"./node_modules/monaco-editor/esm/vs/base/common/range.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/**\n * Returns the intersection between a ranged group and a range.\n * Returns `[]` if the intersection is empty.\n */\nfunction groupIntersect(range, groups) {\n const result = [];\n for (const r of groups) {\n if (range.start >= r.range.end) {\n continue;\n }\n if (range.end < r.range.start) {\n break;\n }\n const intersection = _common_range_js__WEBPACK_IMPORTED_MODULE_0__.Range.intersect(range, r.range);\n if (_common_range_js__WEBPACK_IMPORTED_MODULE_0__.Range.isEmpty(intersection)) {\n continue;\n }\n result.push({\n range: intersection,\n size: r.size\n });\n }\n return result;\n}\n/**\n * Shifts a range by that `much`.\n */\nfunction shift({ start, end }, much) {\n return { start: start + much, end: end + much };\n}\n/**\n * Consolidates a collection of ranged groups.\n *\n * Consolidation is the process of merging consecutive ranged groups\n * that share the same `size`.\n */\nfunction consolidate(groups) {\n const result = [];\n let previousGroup = null;\n for (const group of groups) {\n const start = group.range.start;\n const end = group.range.end;\n const size = group.size;\n if (previousGroup && size === previousGroup.size) {\n previousGroup.range.end = end;\n continue;\n }\n previousGroup = { range: { start, end }, size };\n result.push(previousGroup);\n }\n return result;\n}\n/**\n * Concatenates several collections of ranged groups into a single\n * collection.\n */\nfunction concat(...groups) {\n return consolidate(groups.reduce((r, g) => r.concat(g), []));\n}\nclass RangeMap {\n constructor() {\n this.groups = [];\n this._size = 0;\n }\n splice(index, deleteCount, items = []) {\n const diff = items.length - deleteCount;\n const before = groupIntersect({ start: 0, end: index }, this.groups);\n const after = groupIntersect({ start: index + deleteCount, end: Number.POSITIVE_INFINITY }, this.groups)\n .map(g => ({ range: shift(g.range, diff), size: g.size }));\n const middle = items.map((item, i) => ({\n range: { start: index + i, end: index + i + 1 },\n size: item.size\n }));\n this.groups = concat(before, middle, after);\n this._size = this.groups.reduce((t, g) => t + (g.size * (g.range.end - g.range.start)), 0);\n }\n /**\n * Returns the number of items in the range map.\n */\n get count() {\n const len = this.groups.length;\n if (!len) {\n return 0;\n }\n return this.groups[len - 1].range.end;\n }\n /**\n * Returns the sum of the sizes of all items in the range map.\n */\n get size() {\n return this._size;\n }\n /**\n * Returns the index of the item at the given position.\n */\n indexAt(position) {\n if (position < 0) {\n return -1;\n }\n let index = 0;\n let size = 0;\n for (const group of this.groups) {\n const count = group.range.end - group.range.start;\n const newSize = size + (count * group.size);\n if (position < newSize) {\n return index + Math.floor((position - size) / group.size);\n }\n index += count;\n size = newSize;\n }\n return index;\n }\n /**\n * Returns the index of the item right after the item at the\n * index of the given position.\n */\n indexAfter(position) {\n return Math.min(this.indexAt(position) + 1, this.count);\n }\n /**\n * Returns the start position of the item at the given index.\n */\n positionAt(index) {\n if (index < 0) {\n return -1;\n }\n let position = 0;\n let count = 0;\n for (const group of this.groups) {\n const groupCount = group.range.end - group.range.start;\n const newCount = count + groupCount;\n if (index < newCount) {\n return position + ((index - count) * group.size);\n }\n position += groupCount * group.size;\n count = newCount;\n }\n return -1;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js": +/*!****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RowCache: () => (/* binding */ RowCache)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction removeFromParent(element) {\n var _a;\n try {\n (_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(element);\n }\n catch (e) {\n // this will throw if this happens due to a blur event, nasty business\n }\n}\nclass RowCache {\n constructor(renderers) {\n this.renderers = renderers;\n this.cache = new Map();\n this.transactionNodesPendingRemoval = new Set();\n this.inTransaction = false;\n }\n /**\n * Returns a row either by creating a new one or reusing\n * a previously released row which shares the same templateId.\n *\n * @returns A row and `isReusingConnectedDomNode` if the row's node is already in the dom in a stale position.\n */\n alloc(templateId) {\n let result = this.getTemplateCache(templateId).pop();\n let isStale = false;\n if (result) {\n isStale = this.transactionNodesPendingRemoval.has(result.domNode);\n if (isStale) {\n this.transactionNodesPendingRemoval.delete(result.domNode);\n }\n }\n else {\n const domNode = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-list-row');\n const renderer = this.getRenderer(templateId);\n const templateData = renderer.renderTemplate(domNode);\n result = { domNode, templateId, templateData };\n }\n return { row: result, isReusingConnectedDomNode: isStale };\n }\n /**\n * Releases the row for eventual reuse.\n */\n release(row) {\n if (!row) {\n return;\n }\n this.releaseRow(row);\n }\n /**\n * Begin a set of changes that use the cache. This lets us skip work when a row is removed and then inserted again.\n */\n transact(makeChanges) {\n if (this.inTransaction) {\n throw new Error('Already in transaction');\n }\n this.inTransaction = true;\n try {\n makeChanges();\n }\n finally {\n for (const domNode of this.transactionNodesPendingRemoval) {\n this.doRemoveNode(domNode);\n }\n this.transactionNodesPendingRemoval.clear();\n this.inTransaction = false;\n }\n }\n releaseRow(row) {\n const { domNode, templateId } = row;\n if (domNode) {\n if (this.inTransaction) {\n this.transactionNodesPendingRemoval.add(domNode);\n }\n else {\n this.doRemoveNode(domNode);\n }\n }\n const cache = this.getTemplateCache(templateId);\n cache.push(row);\n }\n doRemoveNode(domNode) {\n domNode.classList.remove('scrolling');\n removeFromParent(domNode);\n }\n getTemplateCache(templateId) {\n let result = this.cache.get(templateId);\n if (!result) {\n result = [];\n this.cache.set(templateId, result);\n }\n return result;\n }\n dispose() {\n this.cache.forEach((cachedRows, templateId) => {\n for (const cachedRow of cachedRows) {\n const renderer = this.getRenderer(templateId);\n renderer.disposeTemplate(cachedRow.templateData);\n cachedRow.templateData = null;\n }\n });\n this.cache.clear();\n this.transactionNodesPendingRemoval.clear();\n }\n getRenderer(templateId) {\n const renderer = this.renderers.get(templateId);\n if (!renderer) {\n throw new Error(`No renderer found for ${templateId}`);\n }\n return renderer;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js": +/*!**************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CombinedSpliceable: () => (/* binding */ CombinedSpliceable)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass CombinedSpliceable {\n constructor(spliceables) {\n this.spliceables = spliceables;\n }\n splice(start, deleteCount, elements) {\n this.spliceables.forEach(s => s.splice(start, deleteCount, elements));\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/menu/menu.js": +/*!************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/menu/menu.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Direction: () => (/* binding */ Direction),\n/* harmony export */ MENU_ESCAPED_MNEMONIC_REGEX: () => (/* binding */ MENU_ESCAPED_MNEMONIC_REGEX),\n/* harmony export */ MENU_MNEMONIC_REGEX: () => (/* binding */ MENU_MNEMONIC_REGEX),\n/* harmony export */ Menu: () => (/* binding */ Menu),\n/* harmony export */ cleanMnemonic: () => (/* binding */ cleanMnemonic),\n/* harmony export */ formatRule: () => (/* binding */ formatRule)\n/* harmony export */ });\n/* harmony import */ var _browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _mouseEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mouseEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js\");\n/* harmony import */ var _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actionbar/actionbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js\");\n/* harmony import */ var _actionbar_actionViewItems_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../actionbar/actionViewItems.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js\");\n/* harmony import */ var _contextview_contextview_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../contextview/contextview.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js\");\n/* harmony import */ var _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scrollbar/scrollableElement.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js\");\n/* harmony import */ var _common_actions_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/actions.js */ \"./node_modules/monaco-editor/esm/vs/base/common/actions.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/* harmony import */ var _common_themables_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../common/themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/* harmony import */ var _common_iconLabels_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../common/iconLabels.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _common_strings_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../common/strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MENU_MNEMONIC_REGEX = /\\(&([^\\s&])\\)|(^|[^&])&([^\\s&])/;\nconst MENU_ESCAPED_MNEMONIC_REGEX = /(&)?(&)([^\\s&])/g;\nvar Direction;\n(function (Direction) {\n Direction[Direction[\"Right\"] = 0] = \"Right\";\n Direction[Direction[\"Left\"] = 1] = \"Left\";\n})(Direction || (Direction = {}));\nclass Menu extends _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_5__.ActionBar {\n constructor(container, actions, options, menuStyles) {\n container.classList.add('monaco-menu-container');\n container.setAttribute('role', 'presentation');\n const menuElement = document.createElement('div');\n menuElement.classList.add('monaco-menu');\n menuElement.setAttribute('role', 'presentation');\n super(menuElement, {\n orientation: 1 /* ActionsOrientation.VERTICAL */,\n actionViewItemProvider: action => this.doGetActionViewItem(action, options, parentData),\n context: options.context,\n actionRunner: options.actionRunner,\n ariaLabel: options.ariaLabel,\n ariaRole: 'menu',\n focusOnlyEnabledItems: true,\n triggerKeys: { keys: [3 /* KeyCode.Enter */, ...(_common_platform_js__WEBPACK_IMPORTED_MODULE_15__.isMacintosh || _common_platform_js__WEBPACK_IMPORTED_MODULE_15__.isLinux ? [10 /* KeyCode.Space */] : [])], keyDown: true }\n });\n this.menuStyles = menuStyles;\n this.menuElement = menuElement;\n this.actionsList.tabIndex = 0;\n this.menuDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_14__.DisposableStore());\n this.initializeOrUpdateStyleSheet(container, menuStyles);\n this._register(_touch_js__WEBPACK_IMPORTED_MODULE_1__.Gesture.addTarget(menuElement));\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(menuElement, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.KEY_DOWN, (e) => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardKeyboardEvent(e);\n // Stop tab navigation of menus\n if (event.equals(2 /* KeyCode.Tab */)) {\n e.preventDefault();\n }\n });\n if (options.enableMnemonics) {\n this.menuDisposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(menuElement, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.KEY_DOWN, (e) => {\n const key = e.key.toLocaleLowerCase();\n if (this.mnemonics.has(key)) {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n const actions = this.mnemonics.get(key);\n if (actions.length === 1) {\n if (actions[0] instanceof SubmenuMenuActionViewItem && actions[0].container) {\n this.focusItemByElement(actions[0].container);\n }\n actions[0].onClick(e);\n }\n if (actions.length > 1) {\n const action = actions.shift();\n if (action && action.container) {\n this.focusItemByElement(action.container);\n actions.push(action);\n }\n this.mnemonics.set(key, actions);\n }\n }\n }));\n }\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_15__.isLinux) {\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(menuElement, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.KEY_DOWN, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardKeyboardEvent(e);\n if (event.equals(14 /* KeyCode.Home */) || event.equals(11 /* KeyCode.PageUp */)) {\n this.focusedItem = this.viewItems.length - 1;\n this.focusNext();\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n }\n else if (event.equals(13 /* KeyCode.End */) || event.equals(12 /* KeyCode.PageDown */)) {\n this.focusedItem = 0;\n this.focusPrevious();\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n }\n }));\n }\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.domNode, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_OUT, e => {\n const relatedTarget = e.relatedTarget;\n if (!(0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.isAncestor)(relatedTarget, this.domNode)) {\n this.focusedItem = undefined;\n this.updateFocus();\n e.stopPropagation();\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.actionsList, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_OVER, e => {\n let target = e.target;\n if (!target || !(0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.isAncestor)(target, this.actionsList) || target === this.actionsList) {\n return;\n }\n while (target.parentElement !== this.actionsList && target.parentElement !== null) {\n target = target.parentElement;\n }\n if (target.classList.contains('action-item')) {\n const lastFocusedItem = this.focusedItem;\n this.setFocusedItem(target);\n if (lastFocusedItem !== this.focusedItem) {\n this.updateFocus();\n }\n }\n }));\n // Support touch on actions list to focus items (needed for submenus)\n this._register(_touch_js__WEBPACK_IMPORTED_MODULE_1__.Gesture.addTarget(this.actionsList));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.actionsList, _touch_js__WEBPACK_IMPORTED_MODULE_1__.EventType.Tap, e => {\n let target = e.initialTarget;\n if (!target || !(0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.isAncestor)(target, this.actionsList) || target === this.actionsList) {\n return;\n }\n while (target.parentElement !== this.actionsList && target.parentElement !== null) {\n target = target.parentElement;\n }\n if (target.classList.contains('action-item')) {\n const lastFocusedItem = this.focusedItem;\n this.setFocusedItem(target);\n if (lastFocusedItem !== this.focusedItem) {\n this.updateFocus();\n }\n }\n }));\n const parentData = {\n parent: this\n };\n this.mnemonics = new Map();\n // Scroll Logic\n this.scrollableElement = this._register(new _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_8__.DomScrollableElement(menuElement, {\n alwaysConsumeMouseWheel: true,\n horizontal: 2 /* ScrollbarVisibility.Hidden */,\n vertical: 3 /* ScrollbarVisibility.Visible */,\n verticalScrollbarSize: 7,\n handleMouseWheel: true,\n useShadows: true\n }));\n const scrollElement = this.scrollableElement.getDomNode();\n scrollElement.style.position = '';\n this.styleScrollElement(scrollElement, menuStyles);\n // Support scroll on menu drag\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(menuElement, _touch_js__WEBPACK_IMPORTED_MODULE_1__.EventType.Change, e => {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n const scrollTop = this.scrollableElement.getScrollPosition().scrollTop;\n this.scrollableElement.setScrollPosition({ scrollTop: scrollTop - e.translationY });\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(scrollElement, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_UP, e => {\n // Absorb clicks in menu dead space https://github.com/microsoft/vscode/issues/63575\n // We do this on the scroll element so the scroll bar doesn't dismiss the menu either\n e.preventDefault();\n }));\n menuElement.style.maxHeight = `${Math.max(10, window.innerHeight - container.getBoundingClientRect().top - 35)}px`;\n actions = actions.filter(a => {\n var _a;\n if ((_a = options.submenuIds) === null || _a === void 0 ? void 0 : _a.has(a.id)) {\n console.warn(`Found submenu cycle: ${a.id}`);\n return false;\n }\n return true;\n });\n this.push(actions, { icon: true, label: true, isMenu: true });\n container.appendChild(this.scrollableElement.getDomNode());\n this.scrollableElement.scanDomNode();\n this.viewItems.filter(item => !(item instanceof MenuSeparatorActionViewItem)).forEach((item, index, array) => {\n item.updatePositionInSet(index + 1, array.length);\n });\n }\n initializeOrUpdateStyleSheet(container, style) {\n if (!this.styleSheet) {\n if ((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.isInShadowDOM)(container)) {\n this.styleSheet = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.createStyleSheet)(container);\n }\n else {\n if (!Menu.globalStyleSheet) {\n Menu.globalStyleSheet = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.createStyleSheet)();\n }\n this.styleSheet = Menu.globalStyleSheet;\n }\n }\n this.styleSheet.textContent = getMenuWidgetCSS(style, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.isInShadowDOM)(container));\n }\n styleScrollElement(scrollElement, style) {\n var _a, _b;\n const fgColor = (_a = style.foregroundColor) !== null && _a !== void 0 ? _a : '';\n const bgColor = (_b = style.backgroundColor) !== null && _b !== void 0 ? _b : '';\n const border = style.borderColor ? `1px solid ${style.borderColor}` : '';\n const borderRadius = '5px';\n const shadow = style.shadowColor ? `0 2px 8px ${style.shadowColor}` : '';\n scrollElement.style.outline = border;\n scrollElement.style.borderRadius = borderRadius;\n scrollElement.style.color = fgColor;\n scrollElement.style.backgroundColor = bgColor;\n scrollElement.style.boxShadow = shadow;\n }\n getContainer() {\n return this.scrollableElement.getDomNode();\n }\n get onScroll() {\n return this.scrollableElement.onScroll;\n }\n focusItemByElement(element) {\n const lastFocusedItem = this.focusedItem;\n this.setFocusedItem(element);\n if (lastFocusedItem !== this.focusedItem) {\n this.updateFocus();\n }\n }\n setFocusedItem(element) {\n for (let i = 0; i < this.actionsList.children.length; i++) {\n const elem = this.actionsList.children[i];\n if (element === elem) {\n this.focusedItem = i;\n break;\n }\n }\n }\n updateFocus(fromRight) {\n super.updateFocus(fromRight, true, true);\n if (typeof this.focusedItem !== 'undefined') {\n // Workaround for #80047 caused by an issue in chromium\n // https://bugs.chromium.org/p/chromium/issues/detail?id=414283\n // When that's fixed, just call this.scrollableElement.scanDomNode()\n this.scrollableElement.setScrollPosition({\n scrollTop: Math.round(this.menuElement.scrollTop)\n });\n }\n }\n doGetActionViewItem(action, options, parentData) {\n if (action instanceof _common_actions_js__WEBPACK_IMPORTED_MODULE_9__.Separator) {\n return new MenuSeparatorActionViewItem(options.context, action, { icon: true }, this.menuStyles);\n }\n else if (action instanceof _common_actions_js__WEBPACK_IMPORTED_MODULE_9__.SubmenuAction) {\n const menuActionViewItem = new SubmenuMenuActionViewItem(action, action.actions, parentData, Object.assign(Object.assign({}, options), { submenuIds: new Set([...(options.submenuIds || []), action.id]) }), this.menuStyles);\n if (options.enableMnemonics) {\n const mnemonic = menuActionViewItem.getMnemonic();\n if (mnemonic && menuActionViewItem.isEnabled()) {\n let actionViewItems = [];\n if (this.mnemonics.has(mnemonic)) {\n actionViewItems = this.mnemonics.get(mnemonic);\n }\n actionViewItems.push(menuActionViewItem);\n this.mnemonics.set(mnemonic, actionViewItems);\n }\n }\n return menuActionViewItem;\n }\n else {\n const menuItemOptions = { enableMnemonics: options.enableMnemonics, useEventAsContext: options.useEventAsContext };\n if (options.getKeyBinding) {\n const keybinding = options.getKeyBinding(action);\n if (keybinding) {\n const keybindingLabel = keybinding.getLabel();\n if (keybindingLabel) {\n menuItemOptions.keybinding = keybindingLabel;\n }\n }\n }\n const menuActionViewItem = new BaseMenuActionViewItem(options.context, action, menuItemOptions, this.menuStyles);\n if (options.enableMnemonics) {\n const mnemonic = menuActionViewItem.getMnemonic();\n if (mnemonic && menuActionViewItem.isEnabled()) {\n let actionViewItems = [];\n if (this.mnemonics.has(mnemonic)) {\n actionViewItems = this.mnemonics.get(mnemonic);\n }\n actionViewItems.push(menuActionViewItem);\n this.mnemonics.set(mnemonic, actionViewItems);\n }\n }\n return menuActionViewItem;\n }\n }\n}\nclass BaseMenuActionViewItem extends _actionbar_actionViewItems_js__WEBPACK_IMPORTED_MODULE_6__.BaseActionViewItem {\n constructor(ctx, action, options, menuStyle) {\n options.isMenu = true;\n super(action, action, options);\n this.menuStyle = menuStyle;\n this.options = options;\n this.options.icon = options.icon !== undefined ? options.icon : false;\n this.options.label = options.label !== undefined ? options.label : true;\n this.cssClass = '';\n // Set mnemonic\n if (this.options.label && options.enableMnemonics) {\n const label = this.action.label;\n if (label) {\n const matches = MENU_MNEMONIC_REGEX.exec(label);\n if (matches) {\n this.mnemonic = (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase();\n }\n }\n }\n // Add mouse up listener later to avoid accidental clicks\n this.runOnceToEnableMouseUp = new _common_async_js__WEBPACK_IMPORTED_MODULE_10__.RunOnceScheduler(() => {\n if (!this.element) {\n return;\n }\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_UP, e => {\n // removed default prevention as it conflicts\n // with BaseActionViewItem #101537\n // add back if issues arise and link new issue\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n // See https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Interact_with_the_clipboard\n // > Writing to the clipboard\n // > You can use the \"cut\" and \"copy\" commands without any special\n // permission if you are using them in a short-lived event handler\n // for a user action (for example, a click handler).\n // => to get the Copy and Paste context menu actions working on Firefox,\n // there should be no timeout here\n if (_browser_js__WEBPACK_IMPORTED_MODULE_0__.isFirefox) {\n const mouseEvent = new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_4__.StandardMouseEvent(e);\n // Allowing right click to trigger the event causes the issue described below,\n // but since the solution below does not work in FF, we must disable right click\n if (mouseEvent.rightButton) {\n return;\n }\n this.onClick(e);\n }\n // In all other cases, set timeout to allow context menu cancellation to trigger\n // otherwise the action will destroy the menu and a second context menu\n // will still trigger for right click.\n else {\n setTimeout(() => {\n this.onClick(e);\n }, 0);\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.CONTEXT_MENU, e => {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n }));\n }, 100);\n this._register(this.runOnceToEnableMouseUp);\n }\n render(container) {\n super.render(container);\n if (!this.element) {\n return;\n }\n this.container = container;\n this.item = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.element, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('a.action-menu-item'));\n if (this._action.id === _common_actions_js__WEBPACK_IMPORTED_MODULE_9__.Separator.ID) {\n // A separator is a presentation item\n this.item.setAttribute('role', 'presentation');\n }\n else {\n this.item.setAttribute('role', 'menuitem');\n if (this.mnemonic) {\n this.item.setAttribute('aria-keyshortcuts', `${this.mnemonic}`);\n }\n }\n this.check = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.item, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('span.menu-item-check' + _common_themables_js__WEBPACK_IMPORTED_MODULE_12__.ThemeIcon.asCSSSelector(_common_codicons_js__WEBPACK_IMPORTED_MODULE_11__.Codicon.menuSelection)));\n this.check.setAttribute('role', 'none');\n this.label = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.item, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('span.action-label'));\n if (this.options.label && this.options.keybinding) {\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.item, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('span.keybinding')).textContent = this.options.keybinding;\n }\n // Adds mouse up listener to actually run the action\n this.runOnceToEnableMouseUp.schedule();\n this.updateClass();\n this.updateLabel();\n this.updateTooltip();\n this.updateEnabled();\n this.updateChecked();\n this.applyStyle();\n }\n blur() {\n super.blur();\n this.applyStyle();\n }\n focus() {\n var _a;\n super.focus();\n (_a = this.item) === null || _a === void 0 ? void 0 : _a.focus();\n this.applyStyle();\n }\n updatePositionInSet(pos, setSize) {\n if (this.item) {\n this.item.setAttribute('aria-posinset', `${pos}`);\n this.item.setAttribute('aria-setsize', `${setSize}`);\n }\n }\n updateLabel() {\n var _a;\n if (!this.label) {\n return;\n }\n if (this.options.label) {\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.clearNode)(this.label);\n let label = (0,_common_iconLabels_js__WEBPACK_IMPORTED_MODULE_13__.stripIcons)(this.action.label);\n if (label) {\n const cleanLabel = cleanMnemonic(label);\n if (!this.options.enableMnemonics) {\n label = cleanLabel;\n }\n this.label.setAttribute('aria-label', cleanLabel.replace(/&&/g, '&'));\n const matches = MENU_MNEMONIC_REGEX.exec(label);\n if (matches) {\n label = _common_strings_js__WEBPACK_IMPORTED_MODULE_16__.escape(label);\n // This is global, reset it\n MENU_ESCAPED_MNEMONIC_REGEX.lastIndex = 0;\n let escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\n // We can't use negative lookbehind so if we match our negative and skip\n while (escMatch && escMatch[1]) {\n escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\n }\n const replaceDoubleEscapes = (str) => str.replace(/&&/g, '&');\n if (escMatch) {\n this.label.append(_common_strings_js__WEBPACK_IMPORTED_MODULE_16__.ltrim(replaceDoubleEscapes(label.substr(0, escMatch.index)), ' '), (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('u', { 'aria-hidden': 'true' }, escMatch[3]), _common_strings_js__WEBPACK_IMPORTED_MODULE_16__.rtrim(replaceDoubleEscapes(label.substr(escMatch.index + escMatch[0].length)), ' '));\n }\n else {\n this.label.innerText = replaceDoubleEscapes(label).trim();\n }\n (_a = this.item) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-keyshortcuts', (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase());\n }\n else {\n this.label.innerText = label.replace(/&&/g, '&').trim();\n }\n }\n }\n }\n updateTooltip() {\n // menus should function like native menus and they do not have tooltips\n }\n updateClass() {\n if (this.cssClass && this.item) {\n this.item.classList.remove(...this.cssClass.split(' '));\n }\n if (this.options.icon && this.label) {\n this.cssClass = this.action.class || '';\n this.label.classList.add('icon');\n if (this.cssClass) {\n this.label.classList.add(...this.cssClass.split(' '));\n }\n this.updateEnabled();\n }\n else if (this.label) {\n this.label.classList.remove('icon');\n }\n }\n updateEnabled() {\n if (this.action.enabled) {\n if (this.element) {\n this.element.classList.remove('disabled');\n this.element.removeAttribute('aria-disabled');\n }\n if (this.item) {\n this.item.classList.remove('disabled');\n this.item.removeAttribute('aria-disabled');\n this.item.tabIndex = 0;\n }\n }\n else {\n if (this.element) {\n this.element.classList.add('disabled');\n this.element.setAttribute('aria-disabled', 'true');\n }\n if (this.item) {\n this.item.classList.add('disabled');\n this.item.setAttribute('aria-disabled', 'true');\n }\n }\n }\n updateChecked() {\n if (!this.item) {\n return;\n }\n const checked = this.action.checked;\n this.item.classList.toggle('checked', !!checked);\n if (checked !== undefined) {\n this.item.setAttribute('role', 'menuitemcheckbox');\n this.item.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n else {\n this.item.setAttribute('role', 'menuitem');\n this.item.setAttribute('aria-checked', '');\n }\n }\n getMnemonic() {\n return this.mnemonic;\n }\n applyStyle() {\n const isSelected = this.element && this.element.classList.contains('focused');\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\n const bgColor = isSelected && this.menuStyle.selectionBackgroundColor ? this.menuStyle.selectionBackgroundColor : undefined;\n const outline = isSelected && this.menuStyle.selectionBorderColor ? `1px solid ${this.menuStyle.selectionBorderColor}` : '';\n const outlineOffset = isSelected && this.menuStyle.selectionBorderColor ? `-1px` : '';\n if (this.item) {\n this.item.style.color = fgColor !== null && fgColor !== void 0 ? fgColor : '';\n this.item.style.backgroundColor = bgColor !== null && bgColor !== void 0 ? bgColor : '';\n this.item.style.outline = outline;\n this.item.style.outlineOffset = outlineOffset;\n }\n if (this.check) {\n this.check.style.color = fgColor !== null && fgColor !== void 0 ? fgColor : '';\n }\n }\n}\nclass SubmenuMenuActionViewItem extends BaseMenuActionViewItem {\n constructor(action, submenuActions, parentData, submenuOptions, menuStyles) {\n super(action, action, submenuOptions, menuStyles);\n this.submenuActions = submenuActions;\n this.parentData = parentData;\n this.submenuOptions = submenuOptions;\n this.mysubmenu = null;\n this.submenuDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_14__.DisposableStore());\n this.mouseOver = false;\n this.expandDirection = submenuOptions && submenuOptions.expandDirection !== undefined ? submenuOptions.expandDirection : Direction.Right;\n this.showScheduler = new _common_async_js__WEBPACK_IMPORTED_MODULE_10__.RunOnceScheduler(() => {\n if (this.mouseOver) {\n this.cleanupExistingSubmenu(false);\n this.createSubmenu(false);\n }\n }, 250);\n this.hideScheduler = new _common_async_js__WEBPACK_IMPORTED_MODULE_10__.RunOnceScheduler(() => {\n if (this.element && (!(0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.isAncestor)((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.getActiveElement)(), this.element) && this.parentData.submenu === this.mysubmenu)) {\n this.parentData.parent.focus(false);\n this.cleanupExistingSubmenu(true);\n }\n }, 750);\n }\n render(container) {\n super.render(container);\n if (!this.element) {\n return;\n }\n if (this.item) {\n this.item.classList.add('monaco-submenu-item');\n this.item.tabIndex = 0;\n this.item.setAttribute('aria-haspopup', 'true');\n this.updateAriaExpanded('false');\n this.submenuIndicator = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.item, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('span.submenu-indicator' + _common_themables_js__WEBPACK_IMPORTED_MODULE_12__.ThemeIcon.asCSSSelector(_common_codicons_js__WEBPACK_IMPORTED_MODULE_11__.Codicon.menuSubmenu)));\n this.submenuIndicator.setAttribute('aria-hidden', 'true');\n }\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.KEY_UP, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardKeyboardEvent(e);\n if (event.equals(17 /* KeyCode.RightArrow */) || event.equals(3 /* KeyCode.Enter */)) {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n this.createSubmenu(true);\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.KEY_DOWN, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardKeyboardEvent(e);\n if ((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.getActiveElement)() === this.item) {\n if (event.equals(17 /* KeyCode.RightArrow */) || event.equals(3 /* KeyCode.Enter */)) {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n }\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_OVER, e => {\n if (!this.mouseOver) {\n this.mouseOver = true;\n this.showScheduler.schedule();\n }\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.MOUSE_LEAVE, e => {\n this.mouseOver = false;\n }));\n this._register((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.element, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.FOCUS_OUT, e => {\n if (this.element && !(0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.isAncestor)((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.getActiveElement)(), this.element)) {\n this.hideScheduler.schedule();\n }\n }));\n this._register(this.parentData.parent.onScroll(() => {\n if (this.parentData.submenu === this.mysubmenu) {\n this.parentData.parent.focus(false);\n this.cleanupExistingSubmenu(true);\n }\n }));\n }\n updateEnabled() {\n // override on submenu entry\n // native menus do not observe enablement on sumbenus\n // we mimic that behavior\n }\n onClick(e) {\n // stop clicking from trying to run an action\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n this.cleanupExistingSubmenu(false);\n this.createSubmenu(true);\n }\n cleanupExistingSubmenu(force) {\n if (this.parentData.submenu && (force || (this.parentData.submenu !== this.mysubmenu))) {\n // disposal may throw if the submenu has already been removed\n try {\n this.parentData.submenu.dispose();\n }\n catch (_a) { }\n this.parentData.submenu = undefined;\n this.updateAriaExpanded('false');\n if (this.submenuContainer) {\n this.submenuDisposables.clear();\n this.submenuContainer = undefined;\n }\n }\n }\n calculateSubmenuMenuLayout(windowDimensions, submenu, entry, expandDirection) {\n const ret = { top: 0, left: 0 };\n // Start with horizontal\n ret.left = (0,_contextview_contextview_js__WEBPACK_IMPORTED_MODULE_7__.layout)(windowDimensions.width, submenu.width, { position: expandDirection === Direction.Right ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */, offset: entry.left, size: entry.width });\n // We don't have enough room to layout the menu fully, so we are overlapping the menu\n if (ret.left >= entry.left && ret.left < entry.left + entry.width) {\n if (entry.left + 10 + submenu.width <= windowDimensions.width) {\n ret.left = entry.left + 10;\n }\n entry.top += 10;\n entry.height = 0;\n }\n // Now that we have a horizontal position, try layout vertically\n ret.top = (0,_contextview_contextview_js__WEBPACK_IMPORTED_MODULE_7__.layout)(windowDimensions.height, submenu.height, { position: 0 /* LayoutAnchorPosition.Before */, offset: entry.top, size: 0 });\n // We didn't have enough room below, but we did above, so we shift down to align the menu\n if (ret.top + submenu.height === entry.top && ret.top + entry.height + submenu.height <= windowDimensions.height) {\n ret.top += entry.height;\n }\n return ret;\n }\n createSubmenu(selectFirstItem = true) {\n if (!this.element) {\n return;\n }\n if (!this.parentData.submenu) {\n this.updateAriaExpanded('true');\n this.submenuContainer = (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.append)(this.element, (0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.$)('div.monaco-submenu'));\n this.submenuContainer.classList.add('menubar-menu-items-holder', 'context-view');\n // Set the top value of the menu container before construction\n // This allows the menu constructor to calculate the proper max height\n const computedStyles = getComputedStyle(this.parentData.parent.domNode);\n const paddingTop = parseFloat(computedStyles.paddingTop || '0') || 0;\n // this.submenuContainer.style.top = `${this.element.offsetTop - this.parentData.parent.scrollOffset - paddingTop}px`;\n this.submenuContainer.style.zIndex = '1';\n this.submenuContainer.style.position = 'fixed';\n this.submenuContainer.style.top = '0';\n this.submenuContainer.style.left = '0';\n this.parentData.submenu = new Menu(this.submenuContainer, this.submenuActions.length ? this.submenuActions : [new _common_actions_js__WEBPACK_IMPORTED_MODULE_9__.EmptySubmenuAction()], this.submenuOptions, this.menuStyle);\n // layout submenu\n const entryBox = this.element.getBoundingClientRect();\n const entryBoxUpdated = {\n top: entryBox.top - paddingTop,\n left: entryBox.left,\n height: entryBox.height + 2 * paddingTop,\n width: entryBox.width\n };\n const viewBox = this.submenuContainer.getBoundingClientRect();\n const { top, left } = this.calculateSubmenuMenuLayout(new _dom_js__WEBPACK_IMPORTED_MODULE_2__.Dimension(window.innerWidth, window.innerHeight), _dom_js__WEBPACK_IMPORTED_MODULE_2__.Dimension.lift(viewBox), entryBoxUpdated, this.expandDirection);\n // subtract offsets caused by transform parent\n this.submenuContainer.style.left = `${left - viewBox.left}px`;\n this.submenuContainer.style.top = `${top - viewBox.top}px`;\n this.submenuDisposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.submenuContainer, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.KEY_UP, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardKeyboardEvent(e);\n if (event.equals(15 /* KeyCode.LeftArrow */)) {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n this.parentData.parent.focus();\n this.cleanupExistingSubmenu(true);\n }\n }));\n this.submenuDisposables.add((0,_dom_js__WEBPACK_IMPORTED_MODULE_2__.addDisposableListener)(this.submenuContainer, _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventType.KEY_DOWN, e => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardKeyboardEvent(e);\n if (event.equals(15 /* KeyCode.LeftArrow */)) {\n _dom_js__WEBPACK_IMPORTED_MODULE_2__.EventHelper.stop(e, true);\n }\n }));\n this.submenuDisposables.add(this.parentData.submenu.onDidCancel(() => {\n this.parentData.parent.focus();\n this.cleanupExistingSubmenu(true);\n }));\n this.parentData.submenu.focus(selectFirstItem);\n this.mysubmenu = this.parentData.submenu;\n }\n else {\n this.parentData.submenu.focus(false);\n }\n }\n updateAriaExpanded(value) {\n var _a;\n if (this.item) {\n (_a = this.item) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', value);\n }\n }\n applyStyle() {\n super.applyStyle();\n const isSelected = this.element && this.element.classList.contains('focused');\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\n if (this.submenuIndicator) {\n this.submenuIndicator.style.color = fgColor !== null && fgColor !== void 0 ? fgColor : '';\n }\n }\n dispose() {\n super.dispose();\n this.hideScheduler.dispose();\n if (this.mysubmenu) {\n this.mysubmenu.dispose();\n this.mysubmenu = null;\n }\n if (this.submenuContainer) {\n this.submenuContainer = undefined;\n }\n }\n}\nclass MenuSeparatorActionViewItem extends _actionbar_actionViewItems_js__WEBPACK_IMPORTED_MODULE_6__.ActionViewItem {\n constructor(context, action, options, menuStyles) {\n super(context, action, options);\n this.menuStyles = menuStyles;\n }\n render(container) {\n super.render(container);\n if (this.label) {\n this.label.style.borderBottomColor = this.menuStyles.separatorColor ? `${this.menuStyles.separatorColor}` : '';\n }\n }\n}\nfunction cleanMnemonic(label) {\n const regex = MENU_MNEMONIC_REGEX;\n const matches = regex.exec(label);\n if (!matches) {\n return label;\n }\n const mnemonicInText = !matches[1];\n return label.replace(regex, mnemonicInText ? '$2$3' : '').trim();\n}\nfunction formatRule(c) {\n const fontCharacter = (0,_common_codicons_js__WEBPACK_IMPORTED_MODULE_11__.getCodiconFontCharacters)()[c.id];\n return `.codicon-${c.id}:before { content: '\\\\${fontCharacter.toString(16)}'; }`;\n}\nfunction getMenuWidgetCSS(style, isForShadowDom) {\n let result = /* css */ `\n.monaco-menu {\n\tfont-size: 13px;\n\tborder-radius: 5px;\n\tmin-width: 160px;\n}\n\n${formatRule(_common_codicons_js__WEBPACK_IMPORTED_MODULE_11__.Codicon.menuSelection)}\n${formatRule(_common_codicons_js__WEBPACK_IMPORTED_MODULE_11__.Codicon.menuSubmenu)}\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar.animated .action-item.active {\n\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\tcolor: var(--vscode-disabledForeground);\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid var(--vscode-menu-separatorBackground);\n\tpadding-top: 1px;\n\tpadding: 30px;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n\tmargin: 0 4px;\n\tborder-radius: 4px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding {\n\topacity: unset;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\twidth: 100%;\n\theight: 0px !important;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n\t-webkit-app-region: no-drag;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.hc-black .context-view.monaco-menu-container,\n.hc-light .context-view.monaco-menu-container,\n:host-context(.hc-black) .context-view.monaco-menu-container,\n:host-context(.hc-light) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n.hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n.hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: 4px 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tmargin: 5px 0 !important;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .action-label.separator,\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}`;\n if (isForShadowDom) {\n // Only define scrollbar styles when used inside shadow dom,\n // otherwise leave their styling to the global workbench styling.\n result += `\n\t\t\t/* Arrows */\n\t\t\t.monaco-scrollable-element > .scrollbar > .scra {\n\t\t\t\tcursor: pointer;\n\t\t\t\tfont-size: 11px !important;\n\t\t\t}\n\n\t\t\t.monaco-scrollable-element > .visible {\n\t\t\t\topacity: 1;\n\n\t\t\t\t/* Background rule added for IE9 - to allow clicks on dom node */\n\t\t\t\tbackground:rgba(0,0,0,0);\n\n\t\t\t\ttransition: opacity 100ms linear;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible {\n\t\t\t\topacity: 0;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible.fade {\n\t\t\t\ttransition: opacity 800ms linear;\n\t\t\t}\n\n\t\t\t/* Scrollable Content Inset Shadow */\n\t\t\t.monaco-scrollable-element > .shadow {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 3px;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 3px;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top-left-corner {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t`;\n // Scrollbars\n const scrollbarShadowColor = style.scrollbarShadow;\n if (scrollbarShadowColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\t\tbox-shadow: ${scrollbarShadowColor} 0 6px 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\t\tbox-shadow: ${scrollbarShadowColor} 6px 0 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.top.left {\n\t\t\t\t\tbox-shadow: ${scrollbarShadowColor} 6px 6px 6px -6px inset;\n\t\t\t\t}\n\t\t\t`;\n }\n const scrollbarSliderBackgroundColor = style.scrollbarSliderBackground;\n if (scrollbarSliderBackgroundColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider {\n\t\t\t\t\tbackground: ${scrollbarSliderBackgroundColor};\n\t\t\t\t}\n\t\t\t`;\n }\n const scrollbarSliderHoverBackgroundColor = style.scrollbarSliderHoverBackground;\n if (scrollbarSliderHoverBackgroundColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider:hover {\n\t\t\t\t\tbackground: ${scrollbarSliderHoverBackgroundColor};\n\t\t\t\t}\n\t\t\t`;\n }\n const scrollbarSliderActiveBackgroundColor = style.scrollbarSliderActiveBackground;\n if (scrollbarSliderActiveBackgroundColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider.active {\n\t\t\t\t\tbackground: ${scrollbarSliderActiveBackgroundColor};\n\t\t\t\t}\n\t\t\t`;\n }\n }\n return result;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/menu/menu.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MOUSE_CURSOR_TEXT_CSS_CLASS_NAME: () => (/* binding */ MOUSE_CURSOR_TEXT_CSS_CLASS_NAME)\n/* harmony export */ });\n/* harmony import */ var _mouseCursor_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mouseCursor.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nconst MOUSE_CURSOR_TEXT_CSS_CLASS_NAME = `monaco-mouse-cursor-text`;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ProgressBar: () => (/* binding */ ProgressBar)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _progressbar_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./progressbar.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\nconst CSS_DONE = 'done';\nconst CSS_ACTIVE = 'active';\nconst CSS_INFINITE = 'infinite';\nconst CSS_INFINITE_LONG_RUNNING = 'infinite-long-running';\nconst CSS_DISCRETE = 'discrete';\n/**\n * A progress bar with support for infinite or discrete progress.\n */\nclass ProgressBar extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor(container, options) {\n super();\n this.workedVal = 0;\n this.showDelayedScheduler = this._register(new _common_async_js__WEBPACK_IMPORTED_MODULE_1__.RunOnceScheduler(() => (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.show)(this.element), 0));\n this.longRunningScheduler = this._register(new _common_async_js__WEBPACK_IMPORTED_MODULE_1__.RunOnceScheduler(() => this.infiniteLongRunning(), ProgressBar.LONG_RUNNING_INFINITE_THRESHOLD));\n this.create(container, options);\n }\n create(container, options) {\n this.element = document.createElement('div');\n this.element.classList.add('monaco-progress-container');\n this.element.setAttribute('role', 'progressbar');\n this.element.setAttribute('aria-valuemin', '0');\n container.appendChild(this.element);\n this.bit = document.createElement('div');\n this.bit.classList.add('progress-bit');\n this.bit.style.backgroundColor = (options === null || options === void 0 ? void 0 : options.progressBarBackground) || '#0E70C0';\n this.element.appendChild(this.bit);\n }\n off() {\n this.bit.style.width = 'inherit';\n this.bit.style.opacity = '1';\n this.element.classList.remove(CSS_ACTIVE, CSS_INFINITE, CSS_INFINITE_LONG_RUNNING, CSS_DISCRETE);\n this.workedVal = 0;\n this.totalWork = undefined;\n this.longRunningScheduler.cancel();\n }\n /**\n * Stops the progressbar from showing any progress instantly without fading out.\n */\n stop() {\n return this.doDone(false);\n }\n doDone(delayed) {\n this.element.classList.add(CSS_DONE);\n // discrete: let it grow to 100% width and hide afterwards\n if (!this.element.classList.contains(CSS_INFINITE)) {\n this.bit.style.width = 'inherit';\n if (delayed) {\n setTimeout(() => this.off(), 200);\n }\n else {\n this.off();\n }\n }\n // infinite: let it fade out and hide afterwards\n else {\n this.bit.style.opacity = '0';\n if (delayed) {\n setTimeout(() => this.off(), 200);\n }\n else {\n this.off();\n }\n }\n return this;\n }\n /**\n * Use this mode to indicate progress that has no total number of work units.\n */\n infinite() {\n this.bit.style.width = '2%';\n this.bit.style.opacity = '1';\n this.element.classList.remove(CSS_DISCRETE, CSS_DONE, CSS_INFINITE_LONG_RUNNING);\n this.element.classList.add(CSS_ACTIVE, CSS_INFINITE);\n this.longRunningScheduler.schedule();\n return this;\n }\n infiniteLongRunning() {\n this.element.classList.add(CSS_INFINITE_LONG_RUNNING);\n }\n getContainer() {\n return this.element;\n }\n}\n/**\n * After a certain time of showing the progress bar, switch\n * to long-running mode and throttle animations to reduce\n * the pressure on the GPU process.\n *\n * https://github.com/microsoft/vscode/issues/97900\n * https://github.com/microsoft/vscode/issues/138396\n */\nProgressBar.LONG_RUNNING_INFINITE_THRESHOLD = 10000;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/resizable/resizable.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/resizable/resizable.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ResizableHTMLElement: () => (/* binding */ ResizableHTMLElement)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _sash_sash_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../sash/sash.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\nclass ResizableHTMLElement {\n constructor() {\n this._onDidWillResize = new _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Emitter();\n this.onDidWillResize = this._onDidWillResize.event;\n this._onDidResize = new _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Emitter();\n this.onDidResize = this._onDidResize.event;\n this._sashListener = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.DisposableStore();\n this._size = new _dom_js__WEBPACK_IMPORTED_MODULE_0__.Dimension(0, 0);\n this._minSize = new _dom_js__WEBPACK_IMPORTED_MODULE_0__.Dimension(0, 0);\n this._maxSize = new _dom_js__WEBPACK_IMPORTED_MODULE_0__.Dimension(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n this.domNode = document.createElement('div');\n this._eastSash = new _sash_sash_js__WEBPACK_IMPORTED_MODULE_1__.Sash(this.domNode, { getVerticalSashLeft: () => this._size.width }, { orientation: 0 /* Orientation.VERTICAL */ });\n this._westSash = new _sash_sash_js__WEBPACK_IMPORTED_MODULE_1__.Sash(this.domNode, { getVerticalSashLeft: () => 0 }, { orientation: 0 /* Orientation.VERTICAL */ });\n this._northSash = new _sash_sash_js__WEBPACK_IMPORTED_MODULE_1__.Sash(this.domNode, { getHorizontalSashTop: () => 0 }, { orientation: 1 /* Orientation.HORIZONTAL */, orthogonalEdge: _sash_sash_js__WEBPACK_IMPORTED_MODULE_1__.OrthogonalEdge.North });\n this._southSash = new _sash_sash_js__WEBPACK_IMPORTED_MODULE_1__.Sash(this.domNode, { getHorizontalSashTop: () => this._size.height }, { orientation: 1 /* Orientation.HORIZONTAL */, orthogonalEdge: _sash_sash_js__WEBPACK_IMPORTED_MODULE_1__.OrthogonalEdge.South });\n this._northSash.orthogonalStartSash = this._westSash;\n this._northSash.orthogonalEndSash = this._eastSash;\n this._southSash.orthogonalStartSash = this._westSash;\n this._southSash.orthogonalEndSash = this._eastSash;\n let currentSize;\n let deltaY = 0;\n let deltaX = 0;\n this._sashListener.add(_common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.any(this._northSash.onDidStart, this._eastSash.onDidStart, this._southSash.onDidStart, this._westSash.onDidStart)(() => {\n if (currentSize === undefined) {\n this._onDidWillResize.fire();\n currentSize = this._size;\n deltaY = 0;\n deltaX = 0;\n }\n }));\n this._sashListener.add(_common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.any(this._northSash.onDidEnd, this._eastSash.onDidEnd, this._southSash.onDidEnd, this._westSash.onDidEnd)(() => {\n if (currentSize !== undefined) {\n currentSize = undefined;\n deltaY = 0;\n deltaX = 0;\n this._onDidResize.fire({ dimension: this._size, done: true });\n }\n }));\n this._sashListener.add(this._eastSash.onDidChange(e => {\n if (currentSize) {\n deltaX = e.currentX - e.startX;\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, east: true });\n }\n }));\n this._sashListener.add(this._westSash.onDidChange(e => {\n if (currentSize) {\n deltaX = -(e.currentX - e.startX);\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, west: true });\n }\n }));\n this._sashListener.add(this._northSash.onDidChange(e => {\n if (currentSize) {\n deltaY = -(e.currentY - e.startY);\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, north: true });\n }\n }));\n this._sashListener.add(this._southSash.onDidChange(e => {\n if (currentSize) {\n deltaY = e.currentY - e.startY;\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, south: true });\n }\n }));\n this._sashListener.add(_common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.any(this._eastSash.onDidReset, this._westSash.onDidReset)(e => {\n if (this._preferredSize) {\n this.layout(this._size.height, this._preferredSize.width);\n this._onDidResize.fire({ dimension: this._size, done: true });\n }\n }));\n this._sashListener.add(_common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.any(this._northSash.onDidReset, this._southSash.onDidReset)(e => {\n if (this._preferredSize) {\n this.layout(this._preferredSize.height, this._size.width);\n this._onDidResize.fire({ dimension: this._size, done: true });\n }\n }));\n }\n dispose() {\n this._northSash.dispose();\n this._southSash.dispose();\n this._eastSash.dispose();\n this._westSash.dispose();\n this._sashListener.dispose();\n this._onDidResize.dispose();\n this._onDidWillResize.dispose();\n this.domNode.remove();\n }\n enableSashes(north, east, south, west) {\n this._northSash.state = north ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n this._eastSash.state = east ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n this._southSash.state = south ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n this._westSash.state = west ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n }\n layout(height = this.size.height, width = this.size.width) {\n const { height: minHeight, width: minWidth } = this._minSize;\n const { height: maxHeight, width: maxWidth } = this._maxSize;\n height = Math.max(minHeight, Math.min(maxHeight, height));\n width = Math.max(minWidth, Math.min(maxWidth, width));\n const newSize = new _dom_js__WEBPACK_IMPORTED_MODULE_0__.Dimension(width, height);\n if (!_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dimension.equals(newSize, this._size)) {\n this.domNode.style.height = height + 'px';\n this.domNode.style.width = width + 'px';\n this._size = newSize;\n this._northSash.layout();\n this._eastSash.layout();\n this._southSash.layout();\n this._westSash.layout();\n }\n }\n clearSashHoverState() {\n this._eastSash.clearSashHoverState();\n this._westSash.clearSashHoverState();\n this._northSash.clearSashHoverState();\n this._southSash.clearSashHoverState();\n }\n get size() {\n return this._size;\n }\n set maxSize(value) {\n this._maxSize = value;\n }\n get maxSize() {\n return this._maxSize;\n }\n set minSize(value) {\n this._minSize = value;\n }\n get minSize() {\n return this._minSize;\n }\n set preferredSize(value) {\n this._preferredSize = value;\n }\n get preferredSize() {\n return this._preferredSize;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/resizable/resizable.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js": +/*!************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OrthogonalEdge: () => (/* binding */ OrthogonalEdge),\n/* harmony export */ Sash: () => (/* binding */ Sash)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../event.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/event.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_decorators_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/decorators.js */ \"./node_modules/monaco-editor/esm/vs/base/common/decorators.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _sash_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./sash.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\n\n\n\n\n\n\n\n\n/**\n * Allow the sashes to be visible at runtime.\n * @remark Use for development purposes only.\n */\nconst DEBUG = false;\nvar OrthogonalEdge;\n(function (OrthogonalEdge) {\n OrthogonalEdge[\"North\"] = \"north\";\n OrthogonalEdge[\"South\"] = \"south\";\n OrthogonalEdge[\"East\"] = \"east\";\n OrthogonalEdge[\"West\"] = \"west\";\n})(OrthogonalEdge || (OrthogonalEdge = {}));\nlet globalSize = 4;\nconst onDidChangeGlobalSize = new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter();\nlet globalHoverDelay = 300;\nconst onDidChangeHoverDelay = new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter();\nclass MouseEventFactory {\n constructor() {\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore();\n }\n get onPointerMove() {\n return this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(window, 'mousemove')).event;\n }\n get onPointerUp() {\n return this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(window, 'mouseup')).event;\n }\n dispose() {\n this.disposables.dispose();\n }\n}\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_4__.memoize\n], MouseEventFactory.prototype, \"onPointerMove\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_4__.memoize\n], MouseEventFactory.prototype, \"onPointerUp\", null);\nclass GestureEventFactory {\n get onPointerMove() {\n return this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, _touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Change)).event;\n }\n get onPointerUp() {\n return this.disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, _touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.End)).event;\n }\n constructor(el) {\n this.el = el;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore();\n }\n dispose() {\n this.disposables.dispose();\n }\n}\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_4__.memoize\n], GestureEventFactory.prototype, \"onPointerMove\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_4__.memoize\n], GestureEventFactory.prototype, \"onPointerUp\", null);\nclass OrthogonalPointerEventFactory {\n get onPointerMove() {\n return this.factory.onPointerMove;\n }\n get onPointerUp() {\n return this.factory.onPointerUp;\n }\n constructor(factory) {\n this.factory = factory;\n }\n dispose() {\n // noop\n }\n}\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_4__.memoize\n], OrthogonalPointerEventFactory.prototype, \"onPointerMove\", null);\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_4__.memoize\n], OrthogonalPointerEventFactory.prototype, \"onPointerUp\", null);\nconst PointerEventsDisabledCssClass = 'pointer-events-disabled';\n/**\n * The {@link Sash} is the UI component which allows the user to resize other\n * components. It's usually an invisible horizontal or vertical line which, when\n * hovered, becomes highlighted and can be dragged along the perpendicular dimension\n * to its direction.\n *\n * Features:\n * - Touch event handling\n * - Corner sash support\n * - Hover with different mouse cursor support\n * - Configurable hover size\n * - Linked sash support, for 2x2 corner sashes\n */\nclass Sash extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.Disposable {\n get state() { return this._state; }\n get orthogonalStartSash() { return this._orthogonalStartSash; }\n get orthogonalEndSash() { return this._orthogonalEndSash; }\n /**\n * The state of a sash defines whether it can be interacted with by the user\n * as well as what mouse cursor to use, when hovered.\n */\n set state(state) {\n if (this._state === state) {\n return;\n }\n this.el.classList.toggle('disabled', state === 0 /* SashState.Disabled */);\n this.el.classList.toggle('minimum', state === 1 /* SashState.AtMinimum */);\n this.el.classList.toggle('maximum', state === 2 /* SashState.AtMaximum */);\n this._state = state;\n this.onDidEnablementChange.fire(state);\n }\n /**\n * A reference to another sash, perpendicular to this one, which\n * aligns at the start of this one. A corner sash will be created\n * automatically at that location.\n *\n * The start of a horizontal sash is its left-most position.\n * The start of a vertical sash is its top-most position.\n */\n set orthogonalStartSash(sash) {\n if (this._orthogonalStartSash === sash) {\n return;\n }\n this.orthogonalStartDragHandleDisposables.clear();\n this.orthogonalStartSashDisposables.clear();\n if (sash) {\n const onChange = (state) => {\n this.orthogonalStartDragHandleDisposables.clear();\n if (state !== 0 /* SashState.Disabled */) {\n this._orthogonalStartDragHandle = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(this.el, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.orthogonal-drag-handle.start'));\n this.orthogonalStartDragHandleDisposables.add((0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.toDisposable)(() => this._orthogonalStartDragHandle.remove()));\n this.orthogonalStartDragHandleDisposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this._orthogonalStartDragHandle, 'mouseenter')).event(() => Sash.onMouseEnter(sash), undefined, this.orthogonalStartDragHandleDisposables);\n this.orthogonalStartDragHandleDisposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this._orthogonalStartDragHandle, 'mouseleave')).event(() => Sash.onMouseLeave(sash), undefined, this.orthogonalStartDragHandleDisposables);\n }\n };\n this.orthogonalStartSashDisposables.add(sash.onDidEnablementChange.event(onChange, this));\n onChange(sash.state);\n }\n this._orthogonalStartSash = sash;\n }\n /**\n * A reference to another sash, perpendicular to this one, which\n * aligns at the end of this one. A corner sash will be created\n * automatically at that location.\n *\n * The end of a horizontal sash is its right-most position.\n * The end of a vertical sash is its bottom-most position.\n */\n set orthogonalEndSash(sash) {\n if (this._orthogonalEndSash === sash) {\n return;\n }\n this.orthogonalEndDragHandleDisposables.clear();\n this.orthogonalEndSashDisposables.clear();\n if (sash) {\n const onChange = (state) => {\n this.orthogonalEndDragHandleDisposables.clear();\n if (state !== 0 /* SashState.Disabled */) {\n this._orthogonalEndDragHandle = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(this.el, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.orthogonal-drag-handle.end'));\n this.orthogonalEndDragHandleDisposables.add((0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.toDisposable)(() => this._orthogonalEndDragHandle.remove()));\n this.orthogonalEndDragHandleDisposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this._orthogonalEndDragHandle, 'mouseenter')).event(() => Sash.onMouseEnter(sash), undefined, this.orthogonalEndDragHandleDisposables);\n this.orthogonalEndDragHandleDisposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this._orthogonalEndDragHandle, 'mouseleave')).event(() => Sash.onMouseLeave(sash), undefined, this.orthogonalEndDragHandleDisposables);\n }\n };\n this.orthogonalEndSashDisposables.add(sash.onDidEnablementChange.event(onChange, this));\n onChange(sash.state);\n }\n this._orthogonalEndSash = sash;\n }\n constructor(container, layoutProvider, options) {\n super();\n this.hoverDelay = globalHoverDelay;\n this.hoverDelayer = this._register(new _common_async_js__WEBPACK_IMPORTED_MODULE_3__.Delayer(this.hoverDelay));\n this._state = 3 /* SashState.Enabled */;\n this.onDidEnablementChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this._onDidStart = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this._onDidChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this._onDidReset = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this._onDidEnd = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter());\n this.orthogonalStartSashDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore());\n this.orthogonalStartDragHandleDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore());\n this.orthogonalEndSashDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore());\n this.orthogonalEndDragHandleDisposables = this._register(new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore());\n /**\n * An event which fires whenever the user starts dragging this sash.\n */\n this.onDidStart = this._onDidStart.event;\n /**\n * An event which fires whenever the user moves the mouse while\n * dragging this sash.\n */\n this.onDidChange = this._onDidChange.event;\n /**\n * An event which fires whenever the user double clicks this sash.\n */\n this.onDidReset = this._onDidReset.event;\n /**\n * An event which fires whenever the user stops dragging this sash.\n */\n this.onDidEnd = this._onDidEnd.event;\n /**\n * A linked sash will be forwarded the same user interactions and events\n * so it moves exactly the same way as this sash.\n *\n * Useful in 2x2 grids. Not meant for widespread usage.\n */\n this.linkedSash = undefined;\n this.el = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(container, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-sash'));\n if (options.orthogonalEdge) {\n this.el.classList.add(`orthogonal-edge-${options.orthogonalEdge}`);\n }\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_7__.isMacintosh) {\n this.el.classList.add('mac');\n }\n const onMouseDown = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, 'mousedown')).event;\n this._register(onMouseDown(e => this.onPointerStart(e, new MouseEventFactory()), this));\n const onMouseDoubleClick = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, 'dblclick')).event;\n this._register(onMouseDoubleClick(this.onPointerDoublePress, this));\n const onMouseEnter = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, 'mouseenter')).event;\n this._register(onMouseEnter(() => Sash.onMouseEnter(this)));\n const onMouseLeave = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, 'mouseleave')).event;\n this._register(onMouseLeave(() => Sash.onMouseLeave(this)));\n this._register(_touch_js__WEBPACK_IMPORTED_MODULE_2__.Gesture.addTarget(this.el));\n const onTouchStart = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, _touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Start)).event;\n this._register(onTouchStart(e => this.onPointerStart(e, new GestureEventFactory(this.el)), this));\n const onTap = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.el, _touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Tap)).event;\n let doubleTapTimeout = undefined;\n this._register(onTap(event => {\n if (doubleTapTimeout) {\n clearTimeout(doubleTapTimeout);\n doubleTapTimeout = undefined;\n this.onPointerDoublePress(event);\n return;\n }\n clearTimeout(doubleTapTimeout);\n doubleTapTimeout = setTimeout(() => doubleTapTimeout = undefined, 250);\n }, this));\n if (typeof options.size === 'number') {\n this.size = options.size;\n if (options.orientation === 0 /* Orientation.VERTICAL */) {\n this.el.style.width = `${this.size}px`;\n }\n else {\n this.el.style.height = `${this.size}px`;\n }\n }\n else {\n this.size = globalSize;\n this._register(onDidChangeGlobalSize.event(size => {\n this.size = size;\n this.layout();\n }));\n }\n this._register(onDidChangeHoverDelay.event(delay => this.hoverDelay = delay));\n this.layoutProvider = layoutProvider;\n this.orthogonalStartSash = options.orthogonalStartSash;\n this.orthogonalEndSash = options.orthogonalEndSash;\n this.orientation = options.orientation || 0 /* Orientation.VERTICAL */;\n if (this.orientation === 1 /* Orientation.HORIZONTAL */) {\n this.el.classList.add('horizontal');\n this.el.classList.remove('vertical');\n }\n else {\n this.el.classList.remove('horizontal');\n this.el.classList.add('vertical');\n }\n this.el.classList.toggle('debug', DEBUG);\n this.layout();\n }\n onPointerStart(event, pointerEventFactory) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(event);\n let isMultisashResize = false;\n if (!event.__orthogonalSashEvent) {\n const orthogonalSash = this.getOrthogonalSash(event);\n if (orthogonalSash) {\n isMultisashResize = true;\n event.__orthogonalSashEvent = true;\n orthogonalSash.onPointerStart(event, new OrthogonalPointerEventFactory(pointerEventFactory));\n }\n }\n if (this.linkedSash && !event.__linkedSashEvent) {\n event.__linkedSashEvent = true;\n this.linkedSash.onPointerStart(event, new OrthogonalPointerEventFactory(pointerEventFactory));\n }\n if (!this.state) {\n return;\n }\n const iframes = document.getElementsByTagName('iframe');\n for (const iframe of iframes) {\n iframe.classList.add(PointerEventsDisabledCssClass); // disable mouse events on iframes as long as we drag the sash\n }\n const startX = event.pageX;\n const startY = event.pageY;\n const altKey = event.altKey;\n const startEvent = { startX, currentX: startX, startY, currentY: startY, altKey };\n this.el.classList.add('active');\n this._onDidStart.fire(startEvent);\n // fix https://github.com/microsoft/vscode/issues/21675\n const style = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.createStyleSheet)(this.el);\n const updateStyle = () => {\n let cursor = '';\n if (isMultisashResize) {\n cursor = 'all-scroll';\n }\n else if (this.orientation === 1 /* Orientation.HORIZONTAL */) {\n if (this.state === 1 /* SashState.AtMinimum */) {\n cursor = 's-resize';\n }\n else if (this.state === 2 /* SashState.AtMaximum */) {\n cursor = 'n-resize';\n }\n else {\n cursor = _common_platform_js__WEBPACK_IMPORTED_MODULE_7__.isMacintosh ? 'row-resize' : 'ns-resize';\n }\n }\n else {\n if (this.state === 1 /* SashState.AtMinimum */) {\n cursor = 'e-resize';\n }\n else if (this.state === 2 /* SashState.AtMaximum */) {\n cursor = 'w-resize';\n }\n else {\n cursor = _common_platform_js__WEBPACK_IMPORTED_MODULE_7__.isMacintosh ? 'col-resize' : 'ew-resize';\n }\n }\n style.textContent = `* { cursor: ${cursor} !important; }`;\n };\n const disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore();\n updateStyle();\n if (!isMultisashResize) {\n this.onDidEnablementChange.event(updateStyle, null, disposables);\n }\n const onPointerMove = (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, false);\n const event = { startX, currentX: e.pageX, startY, currentY: e.pageY, altKey };\n this._onDidChange.fire(event);\n };\n const onPointerUp = (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, false);\n this.el.removeChild(style);\n this.el.classList.remove('active');\n this._onDidEnd.fire();\n disposables.dispose();\n for (const iframe of iframes) {\n iframe.classList.remove(PointerEventsDisabledCssClass);\n }\n };\n pointerEventFactory.onPointerMove(onPointerMove, null, disposables);\n pointerEventFactory.onPointerUp(onPointerUp, null, disposables);\n disposables.add(pointerEventFactory);\n }\n onPointerDoublePress(e) {\n const orthogonalSash = this.getOrthogonalSash(e);\n if (orthogonalSash) {\n orthogonalSash._onDidReset.fire();\n }\n if (this.linkedSash) {\n this.linkedSash._onDidReset.fire();\n }\n this._onDidReset.fire();\n }\n static onMouseEnter(sash, fromLinkedSash = false) {\n if (sash.el.classList.contains('active')) {\n sash.hoverDelayer.cancel();\n sash.el.classList.add('hover');\n }\n else {\n sash.hoverDelayer.trigger(() => sash.el.classList.add('hover'), sash.hoverDelay).then(undefined, () => { });\n }\n if (!fromLinkedSash && sash.linkedSash) {\n Sash.onMouseEnter(sash.linkedSash, true);\n }\n }\n static onMouseLeave(sash, fromLinkedSash = false) {\n sash.hoverDelayer.cancel();\n sash.el.classList.remove('hover');\n if (!fromLinkedSash && sash.linkedSash) {\n Sash.onMouseLeave(sash.linkedSash, true);\n }\n }\n /**\n * Forcefully stop any user interactions with this sash.\n * Useful when hiding a parent component, while the user is still\n * interacting with the sash.\n */\n clearSashHoverState() {\n Sash.onMouseLeave(this);\n }\n /**\n * Layout the sash. The sash will size and position itself\n * based on its provided {@link ISashLayoutProvider layout provider}.\n */\n layout() {\n if (this.orientation === 0 /* Orientation.VERTICAL */) {\n const verticalProvider = this.layoutProvider;\n this.el.style.left = verticalProvider.getVerticalSashLeft(this) - (this.size / 2) + 'px';\n if (verticalProvider.getVerticalSashTop) {\n this.el.style.top = verticalProvider.getVerticalSashTop(this) + 'px';\n }\n if (verticalProvider.getVerticalSashHeight) {\n this.el.style.height = verticalProvider.getVerticalSashHeight(this) + 'px';\n }\n }\n else {\n const horizontalProvider = this.layoutProvider;\n this.el.style.top = horizontalProvider.getHorizontalSashTop(this) - (this.size / 2) + 'px';\n if (horizontalProvider.getHorizontalSashLeft) {\n this.el.style.left = horizontalProvider.getHorizontalSashLeft(this) + 'px';\n }\n if (horizontalProvider.getHorizontalSashWidth) {\n this.el.style.width = horizontalProvider.getHorizontalSashWidth(this) + 'px';\n }\n }\n }\n getOrthogonalSash(e) {\n var _a;\n const target = (_a = e.initialTarget) !== null && _a !== void 0 ? _a : e.target;\n if (!target || !(target instanceof HTMLElement)) {\n return undefined;\n }\n if (target.classList.contains('orthogonal-drag-handle')) {\n return target.classList.contains('start') ? this.orthogonalStartSash : this.orthogonalEndSash;\n }\n return undefined;\n }\n dispose() {\n super.dispose();\n this.el.remove();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractScrollbar: () => (/* binding */ AbstractScrollbar)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _fastDomNode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../fastDomNode.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/fastDomNode.js\");\n/* harmony import */ var _globalPointerMoveMonitor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../globalPointerMoveMonitor.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/globalPointerMoveMonitor.js\");\n/* harmony import */ var _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scrollbarArrow.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js\");\n/* harmony import */ var _scrollbarVisibilityController_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scrollbarVisibilityController.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js\");\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n/**\n * The orthogonal distance to the slider at which dragging \"resets\". This implements \"snapping\"\n */\nconst POINTER_DRAG_RESET_DISTANCE = 140;\nclass AbstractScrollbar extends _widget_js__WEBPACK_IMPORTED_MODULE_5__.Widget {\n constructor(opts) {\n super();\n this._lazyRender = opts.lazyRender;\n this._host = opts.host;\n this._scrollable = opts.scrollable;\n this._scrollByPage = opts.scrollByPage;\n this._scrollbarState = opts.scrollbarState;\n this._visibilityController = this._register(new _scrollbarVisibilityController_js__WEBPACK_IMPORTED_MODULE_4__.ScrollbarVisibilityController(opts.visibility, 'visible scrollbar ' + opts.extraScrollbarClassName, 'invisible scrollbar ' + opts.extraScrollbarClassName));\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._pointerMoveMonitor = this._register(new _globalPointerMoveMonitor_js__WEBPACK_IMPORTED_MODULE_2__.GlobalPointerMoveMonitor());\n this._shouldRender = true;\n this.domNode = (0,_fastDomNode_js__WEBPACK_IMPORTED_MODULE_1__.createFastDomNode)(document.createElement('div'));\n this.domNode.setAttribute('role', 'presentation');\n this.domNode.setAttribute('aria-hidden', 'true');\n this._visibilityController.setDomNode(this.domNode);\n this.domNode.setPosition('absolute');\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.domNode.domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.POINTER_DOWN, (e) => this._domNodePointerDown(e)));\n }\n // ----------------- creation\n /**\n * Creates the dom node for an arrow & adds it to the container\n */\n _createArrow(opts) {\n const arrow = this._register(new _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_3__.ScrollbarArrow(opts));\n this.domNode.domNode.appendChild(arrow.bgDomNode);\n this.domNode.domNode.appendChild(arrow.domNode);\n }\n /**\n * Creates the slider dom node, adds it to the container & hooks up the events\n */\n _createSlider(top, left, width, height) {\n this.slider = (0,_fastDomNode_js__WEBPACK_IMPORTED_MODULE_1__.createFastDomNode)(document.createElement('div'));\n this.slider.setClassName('slider');\n this.slider.setPosition('absolute');\n this.slider.setTop(top);\n this.slider.setLeft(left);\n if (typeof width === 'number') {\n this.slider.setWidth(width);\n }\n if (typeof height === 'number') {\n this.slider.setHeight(height);\n }\n this.slider.setLayerHinting(true);\n this.slider.setContain('strict');\n this.domNode.domNode.appendChild(this.slider.domNode);\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.slider.domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.POINTER_DOWN, (e) => {\n if (e.button === 0) {\n e.preventDefault();\n this._sliderPointerDown(e);\n }\n }));\n this.onclick(this.slider.domNode, e => {\n if (e.leftButton) {\n e.stopPropagation();\n }\n });\n }\n // ----------------- Update state\n _onElementSize(visibleSize) {\n if (this._scrollbarState.setVisibleSize(visibleSize)) {\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n return this._shouldRender;\n }\n _onElementScrollSize(elementScrollSize) {\n if (this._scrollbarState.setScrollSize(elementScrollSize)) {\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n return this._shouldRender;\n }\n _onElementScrollPosition(elementScrollPosition) {\n if (this._scrollbarState.setScrollPosition(elementScrollPosition)) {\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n return this._shouldRender;\n }\n // ----------------- rendering\n beginReveal() {\n this._visibilityController.setShouldBeVisible(true);\n }\n beginHide() {\n this._visibilityController.setShouldBeVisible(false);\n }\n render() {\n if (!this._shouldRender) {\n return;\n }\n this._shouldRender = false;\n this._renderDomNode(this._scrollbarState.getRectangleLargeSize(), this._scrollbarState.getRectangleSmallSize());\n this._updateSlider(this._scrollbarState.getSliderSize(), this._scrollbarState.getArrowSize() + this._scrollbarState.getSliderPosition());\n }\n // ----------------- DOM events\n _domNodePointerDown(e) {\n if (e.target !== this.domNode.domNode) {\n return;\n }\n this._onPointerDown(e);\n }\n delegatePointerDown(e) {\n const domTop = this.domNode.domNode.getClientRects()[0].top;\n const sliderStart = domTop + this._scrollbarState.getSliderPosition();\n const sliderStop = domTop + this._scrollbarState.getSliderPosition() + this._scrollbarState.getSliderSize();\n const pointerPos = this._sliderPointerPosition(e);\n if (sliderStart <= pointerPos && pointerPos <= sliderStop) {\n // Act as if it was a pointer down on the slider\n if (e.button === 0) {\n e.preventDefault();\n this._sliderPointerDown(e);\n }\n }\n else {\n // Act as if it was a pointer down on the scrollbar\n this._onPointerDown(e);\n }\n }\n _onPointerDown(e) {\n let offsetX;\n let offsetY;\n if (e.target === this.domNode.domNode && typeof e.offsetX === 'number' && typeof e.offsetY === 'number') {\n offsetX = e.offsetX;\n offsetY = e.offsetY;\n }\n else {\n const domNodePosition = _dom_js__WEBPACK_IMPORTED_MODULE_0__.getDomNodePagePosition(this.domNode.domNode);\n offsetX = e.pageX - domNodePosition.left;\n offsetY = e.pageY - domNodePosition.top;\n }\n const offset = this._pointerDownRelativePosition(offsetX, offsetY);\n this._setDesiredScrollPositionNow(this._scrollByPage\n ? this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(offset)\n : this._scrollbarState.getDesiredScrollPositionFromOffset(offset));\n if (e.button === 0) {\n // left button\n e.preventDefault();\n this._sliderPointerDown(e);\n }\n }\n _sliderPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n const initialPointerPosition = this._sliderPointerPosition(e);\n const initialPointerOrthogonalPosition = this._sliderOrthogonalPointerPosition(e);\n const initialScrollbarState = this._scrollbarState.clone();\n this.slider.toggleClassName('active', true);\n this._pointerMoveMonitor.startMonitoring(e.target, e.pointerId, e.buttons, (pointerMoveData) => {\n const pointerOrthogonalPosition = this._sliderOrthogonalPointerPosition(pointerMoveData);\n const pointerOrthogonalDelta = Math.abs(pointerOrthogonalPosition - initialPointerOrthogonalPosition);\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_6__.isWindows && pointerOrthogonalDelta > POINTER_DRAG_RESET_DISTANCE) {\n // The pointer has wondered away from the scrollbar => reset dragging\n this._setDesiredScrollPositionNow(initialScrollbarState.getScrollPosition());\n return;\n }\n const pointerPosition = this._sliderPointerPosition(pointerMoveData);\n const pointerDelta = pointerPosition - initialPointerPosition;\n this._setDesiredScrollPositionNow(initialScrollbarState.getDesiredScrollPositionFromDelta(pointerDelta));\n }, () => {\n this.slider.toggleClassName('active', false);\n this._host.onDragEnd();\n });\n this._host.onDragStart();\n }\n _setDesiredScrollPositionNow(_desiredScrollPosition) {\n const desiredScrollPosition = {};\n this.writeScrollPosition(desiredScrollPosition, _desiredScrollPosition);\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\n }\n updateScrollbarSize(scrollbarSize) {\n this._updateScrollbarSize(scrollbarSize);\n this._scrollbarState.setScrollbarSize(scrollbarSize);\n this._shouldRender = true;\n if (!this._lazyRender) {\n this.render();\n }\n }\n isNeeded() {\n return this._scrollbarState.isNeeded();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js": +/*!********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HorizontalScrollbar: () => (/* binding */ HorizontalScrollbar)\n/* harmony export */ });\n/* harmony import */ var _mouseEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mouseEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js\");\n/* harmony import */ var _abstractScrollbar_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstractScrollbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js\");\n/* harmony import */ var _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scrollbarArrow.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js\");\n/* harmony import */ var _scrollbarState_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scrollbarState.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nclass HorizontalScrollbar extends _abstractScrollbar_js__WEBPACK_IMPORTED_MODULE_1__.AbstractScrollbar {\n constructor(scrollable, options, host) {\n const scrollDimensions = scrollable.getScrollDimensions();\n const scrollPosition = scrollable.getCurrentScrollPosition();\n super({\n lazyRender: options.lazyRender,\n host: host,\n scrollbarState: new _scrollbarState_js__WEBPACK_IMPORTED_MODULE_3__.ScrollbarState((options.horizontalHasArrows ? options.arrowSize : 0), (options.horizontal === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.horizontalScrollbarSize), (options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize), scrollDimensions.width, scrollDimensions.scrollWidth, scrollPosition.scrollLeft),\n visibility: options.horizontal,\n extraScrollbarClassName: 'horizontal',\n scrollable: scrollable,\n scrollByPage: options.scrollByPage\n });\n if (options.horizontalHasArrows) {\n const arrowDelta = (options.arrowSize - _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_2__.ARROW_IMG_SIZE) / 2;\n const scrollbarDelta = (options.horizontalScrollbarSize - _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_2__.ARROW_IMG_SIZE) / 2;\n this._createArrow({\n className: 'scra',\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__.Codicon.scrollbarButtonLeft,\n top: scrollbarDelta,\n left: arrowDelta,\n bottom: undefined,\n right: undefined,\n bgWidth: options.arrowSize,\n bgHeight: options.horizontalScrollbarSize,\n onActivate: () => this._host.onMouseWheel(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_0__.StandardWheelEvent(null, 1, 0)),\n });\n this._createArrow({\n className: 'scra',\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__.Codicon.scrollbarButtonRight,\n top: scrollbarDelta,\n left: undefined,\n bottom: undefined,\n right: arrowDelta,\n bgWidth: options.arrowSize,\n bgHeight: options.horizontalScrollbarSize,\n onActivate: () => this._host.onMouseWheel(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_0__.StandardWheelEvent(null, -1, 0)),\n });\n }\n this._createSlider(Math.floor((options.horizontalScrollbarSize - options.horizontalSliderSize) / 2), 0, undefined, options.horizontalSliderSize);\n }\n _updateSlider(sliderSize, sliderPosition) {\n this.slider.setWidth(sliderSize);\n this.slider.setLeft(sliderPosition);\n }\n _renderDomNode(largeSize, smallSize) {\n this.domNode.setWidth(largeSize);\n this.domNode.setHeight(smallSize);\n this.domNode.setLeft(0);\n this.domNode.setBottom(0);\n }\n onDidScroll(e) {\n this._shouldRender = this._onElementScrollSize(e.scrollWidth) || this._shouldRender;\n this._shouldRender = this._onElementScrollPosition(e.scrollLeft) || this._shouldRender;\n this._shouldRender = this._onElementSize(e.width) || this._shouldRender;\n return this._shouldRender;\n }\n _pointerDownRelativePosition(offsetX, offsetY) {\n return offsetX;\n }\n _sliderPointerPosition(e) {\n return e.pageX;\n }\n _sliderOrthogonalPointerPosition(e) {\n return e.pageY;\n }\n _updateScrollbarSize(size) {\n this.slider.setHeight(size);\n }\n writeScrollPosition(target, scrollPosition) {\n target.scrollLeft = scrollPosition;\n }\n updateOptions(options) {\n this.updateScrollbarSize(options.horizontal === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.horizontalScrollbarSize);\n this._scrollbarState.setOppositeScrollbarSize(options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize);\n this._visibilityController.setVisibility(options.horizontal);\n this._scrollByPage = options.scrollByPage;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractScrollableElement: () => (/* binding */ AbstractScrollableElement),\n/* harmony export */ DomScrollableElement: () => (/* binding */ DomScrollableElement),\n/* harmony export */ MouseWheelClassifier: () => (/* binding */ MouseWheelClassifier),\n/* harmony export */ ScrollableElement: () => (/* binding */ ScrollableElement),\n/* harmony export */ SmoothScrollableElement: () => (/* binding */ SmoothScrollableElement)\n/* harmony export */ });\n/* harmony import */ var _browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _fastDomNode_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../fastDomNode.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/fastDomNode.js\");\n/* harmony import */ var _mouseEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../mouseEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js\");\n/* harmony import */ var _horizontalScrollbar_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./horizontalScrollbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js\");\n/* harmony import */ var _verticalScrollbar_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./verticalScrollbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js\");\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _common_scrollable_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/scrollable.js */ \"./node_modules/monaco-editor/esm/vs/base/common/scrollable.js\");\n/* harmony import */ var _media_scrollbars_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./media/scrollbars.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst HIDE_TIMEOUT = 500;\nconst SCROLL_WHEEL_SENSITIVITY = 50;\nconst SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED = true;\nclass MouseWheelClassifierItem {\n constructor(timestamp, deltaX, deltaY) {\n this.timestamp = timestamp;\n this.deltaX = deltaX;\n this.deltaY = deltaY;\n this.score = 0;\n }\n}\nclass MouseWheelClassifier {\n constructor() {\n this._capacity = 5;\n this._memory = [];\n this._front = -1;\n this._rear = -1;\n }\n isPhysicalMouseWheel() {\n if (this._front === -1 && this._rear === -1) {\n // no elements\n return false;\n }\n // 0.5 * last + 0.25 * 2nd last + 0.125 * 3rd last + ...\n let remainingInfluence = 1;\n let score = 0;\n let iteration = 1;\n let index = this._rear;\n do {\n const influence = (index === this._front ? remainingInfluence : Math.pow(2, -iteration));\n remainingInfluence -= influence;\n score += this._memory[index].score * influence;\n if (index === this._front) {\n break;\n }\n index = (this._capacity + index - 1) % this._capacity;\n iteration++;\n } while (true);\n return (score <= 0.5);\n }\n acceptStandardWheelEvent(e) {\n const osZoomFactor = window.devicePixelRatio / (0,_browser_js__WEBPACK_IMPORTED_MODULE_0__.getZoomFactor)();\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_10__.isWindows || _common_platform_js__WEBPACK_IMPORTED_MODULE_10__.isLinux) {\n // On Windows and Linux, the incoming delta events are multiplied with the OS zoom factor.\n // The OS zoom factor can be reverse engineered by using the device pixel ratio and the configured zoom factor into account.\n this.accept(Date.now(), e.deltaX / osZoomFactor, e.deltaY / osZoomFactor);\n }\n else {\n this.accept(Date.now(), e.deltaX, e.deltaY);\n }\n }\n accept(timestamp, deltaX, deltaY) {\n const item = new MouseWheelClassifierItem(timestamp, deltaX, deltaY);\n item.score = this._computeScore(item);\n if (this._front === -1 && this._rear === -1) {\n this._memory[0] = item;\n this._front = 0;\n this._rear = 0;\n }\n else {\n this._rear = (this._rear + 1) % this._capacity;\n if (this._rear === this._front) {\n // Drop oldest\n this._front = (this._front + 1) % this._capacity;\n }\n this._memory[this._rear] = item;\n }\n }\n /**\n * A score between 0 and 1 for `item`.\n * - a score towards 0 indicates that the source appears to be a physical mouse wheel\n * - a score towards 1 indicates that the source appears to be a touchpad or magic mouse, etc.\n */\n _computeScore(item) {\n if (Math.abs(item.deltaX) > 0 && Math.abs(item.deltaY) > 0) {\n // both axes exercised => definitely not a physical mouse wheel\n return 1;\n }\n let score = 0.5;\n const prev = (this._front === -1 && this._rear === -1 ? null : this._memory[this._rear]);\n if (prev) {\n // const deltaT = item.timestamp - prev.timestamp;\n // if (deltaT < 1000 / 30) {\n // \t// sooner than X times per second => indicator that this is not a physical mouse wheel\n // \tscore += 0.25;\n // }\n // if (item.deltaX === prev.deltaX && item.deltaY === prev.deltaY) {\n // \t// equal amplitude => indicator that this is a physical mouse wheel\n // \tscore -= 0.25;\n // }\n }\n if (!this._isAlmostInt(item.deltaX) || !this._isAlmostInt(item.deltaY)) {\n // non-integer deltas => indicator that this is not a physical mouse wheel\n score += 0.25;\n }\n return Math.min(Math.max(score, 0), 1);\n }\n _isAlmostInt(value) {\n const delta = Math.abs(Math.round(value) - value);\n return (delta < 0.01);\n }\n}\nMouseWheelClassifier.INSTANCE = new MouseWheelClassifier();\nclass AbstractScrollableElement extends _widget_js__WEBPACK_IMPORTED_MODULE_6__.Widget {\n get options() {\n return this._options;\n }\n constructor(element, options, scrollable) {\n super();\n this._onScroll = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Emitter());\n this.onScroll = this._onScroll.event;\n this._onWillScroll = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_8__.Emitter());\n element.style.overflow = 'hidden';\n this._options = resolveOptions(options);\n this._scrollable = scrollable;\n this._register(this._scrollable.onScroll((e) => {\n this._onWillScroll.fire(e);\n this._onDidScroll(e);\n this._onScroll.fire(e);\n }));\n const scrollbarHost = {\n onMouseWheel: (mouseWheelEvent) => this._onMouseWheel(mouseWheelEvent),\n onDragStart: () => this._onDragStart(),\n onDragEnd: () => this._onDragEnd(),\n };\n this._verticalScrollbar = this._register(new _verticalScrollbar_js__WEBPACK_IMPORTED_MODULE_5__.VerticalScrollbar(this._scrollable, this._options, scrollbarHost));\n this._horizontalScrollbar = this._register(new _horizontalScrollbar_js__WEBPACK_IMPORTED_MODULE_4__.HorizontalScrollbar(this._scrollable, this._options, scrollbarHost));\n this._domNode = document.createElement('div');\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\n this._domNode.setAttribute('role', 'presentation');\n this._domNode.style.position = 'relative';\n this._domNode.style.overflow = 'hidden';\n this._domNode.appendChild(element);\n this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode);\n this._domNode.appendChild(this._verticalScrollbar.domNode.domNode);\n if (this._options.useShadows) {\n this._leftShadowDomNode = (0,_fastDomNode_js__WEBPACK_IMPORTED_MODULE_2__.createFastDomNode)(document.createElement('div'));\n this._leftShadowDomNode.setClassName('shadow');\n this._domNode.appendChild(this._leftShadowDomNode.domNode);\n this._topShadowDomNode = (0,_fastDomNode_js__WEBPACK_IMPORTED_MODULE_2__.createFastDomNode)(document.createElement('div'));\n this._topShadowDomNode.setClassName('shadow');\n this._domNode.appendChild(this._topShadowDomNode.domNode);\n this._topLeftShadowDomNode = (0,_fastDomNode_js__WEBPACK_IMPORTED_MODULE_2__.createFastDomNode)(document.createElement('div'));\n this._topLeftShadowDomNode.setClassName('shadow');\n this._domNode.appendChild(this._topLeftShadowDomNode.domNode);\n }\n else {\n this._leftShadowDomNode = null;\n this._topShadowDomNode = null;\n this._topLeftShadowDomNode = null;\n }\n this._listenOnDomNode = this._options.listenOnDomNode || this._domNode;\n this._mouseWheelToDispose = [];\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\n this.onmouseover(this._listenOnDomNode, (e) => this._onMouseOver(e));\n this.onmouseleave(this._listenOnDomNode, (e) => this._onMouseLeave(e));\n this._hideTimeout = this._register(new _common_async_js__WEBPACK_IMPORTED_MODULE_7__.TimeoutTimer());\n this._isDragging = false;\n this._mouseIsOver = false;\n this._shouldRender = true;\n this._revealOnScroll = true;\n }\n dispose() {\n this._mouseWheelToDispose = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.dispose)(this._mouseWheelToDispose);\n super.dispose();\n }\n /**\n * Get the generated 'scrollable' dom node\n */\n getDomNode() {\n return this._domNode;\n }\n getOverviewRulerLayoutInfo() {\n return {\n parent: this._domNode,\n insertBefore: this._verticalScrollbar.domNode.domNode,\n };\n }\n /**\n * Delegate a pointer down event to the vertical scrollbar.\n * This is to help with clicking somewhere else and having the scrollbar react.\n */\n delegateVerticalScrollbarPointerDown(browserEvent) {\n this._verticalScrollbar.delegatePointerDown(browserEvent);\n }\n getScrollDimensions() {\n return this._scrollable.getScrollDimensions();\n }\n setScrollDimensions(dimensions) {\n this._scrollable.setScrollDimensions(dimensions, false);\n }\n /**\n * Update the class name of the scrollable element.\n */\n updateClassName(newClassName) {\n this._options.className = newClassName;\n // Defaults are different on Macs\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_10__.isMacintosh) {\n this._options.className += ' mac';\n }\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\n }\n /**\n * Update configuration options for the scrollbar.\n */\n updateOptions(newOptions) {\n if (typeof newOptions.handleMouseWheel !== 'undefined') {\n this._options.handleMouseWheel = newOptions.handleMouseWheel;\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\n }\n if (typeof newOptions.mouseWheelScrollSensitivity !== 'undefined') {\n this._options.mouseWheelScrollSensitivity = newOptions.mouseWheelScrollSensitivity;\n }\n if (typeof newOptions.fastScrollSensitivity !== 'undefined') {\n this._options.fastScrollSensitivity = newOptions.fastScrollSensitivity;\n }\n if (typeof newOptions.scrollPredominantAxis !== 'undefined') {\n this._options.scrollPredominantAxis = newOptions.scrollPredominantAxis;\n }\n if (typeof newOptions.horizontal !== 'undefined') {\n this._options.horizontal = newOptions.horizontal;\n }\n if (typeof newOptions.vertical !== 'undefined') {\n this._options.vertical = newOptions.vertical;\n }\n if (typeof newOptions.horizontalScrollbarSize !== 'undefined') {\n this._options.horizontalScrollbarSize = newOptions.horizontalScrollbarSize;\n }\n if (typeof newOptions.verticalScrollbarSize !== 'undefined') {\n this._options.verticalScrollbarSize = newOptions.verticalScrollbarSize;\n }\n if (typeof newOptions.scrollByPage !== 'undefined') {\n this._options.scrollByPage = newOptions.scrollByPage;\n }\n this._horizontalScrollbar.updateOptions(this._options);\n this._verticalScrollbar.updateOptions(this._options);\n if (!this._options.lazyRender) {\n this._render();\n }\n }\n delegateScrollFromMouseWheelEvent(browserEvent) {\n this._onMouseWheel(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardWheelEvent(browserEvent));\n }\n // -------------------- mouse wheel scrolling --------------------\n _setListeningToMouseWheel(shouldListen) {\n const isListening = (this._mouseWheelToDispose.length > 0);\n if (isListening === shouldListen) {\n // No change\n return;\n }\n // Stop listening (if necessary)\n this._mouseWheelToDispose = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_9__.dispose)(this._mouseWheelToDispose);\n // Start listening (if necessary)\n if (shouldListen) {\n const onMouseWheel = (browserEvent) => {\n this._onMouseWheel(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_3__.StandardWheelEvent(browserEvent));\n };\n this._mouseWheelToDispose.push(_dom_js__WEBPACK_IMPORTED_MODULE_1__.addDisposableListener(this._listenOnDomNode, _dom_js__WEBPACK_IMPORTED_MODULE_1__.EventType.MOUSE_WHEEL, onMouseWheel, { passive: false }));\n }\n }\n _onMouseWheel(e) {\n var _a;\n if ((_a = e.browserEvent) === null || _a === void 0 ? void 0 : _a.defaultPrevented) {\n return;\n }\n const classifier = MouseWheelClassifier.INSTANCE;\n if (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED) {\n classifier.acceptStandardWheelEvent(e);\n }\n // console.log(`${Date.now()}, ${e.deltaY}, ${e.deltaX}`);\n let didScroll = false;\n if (e.deltaY || e.deltaX) {\n let deltaY = e.deltaY * this._options.mouseWheelScrollSensitivity;\n let deltaX = e.deltaX * this._options.mouseWheelScrollSensitivity;\n if (this._options.scrollPredominantAxis) {\n if (Math.abs(deltaY) >= Math.abs(deltaX)) {\n deltaX = 0;\n }\n else {\n deltaY = 0;\n }\n }\n if (this._options.flipAxes) {\n [deltaY, deltaX] = [deltaX, deltaY];\n }\n // Convert vertical scrolling to horizontal if shift is held, this\n // is handled at a higher level on Mac\n const shiftConvert = !_common_platform_js__WEBPACK_IMPORTED_MODULE_10__.isMacintosh && e.browserEvent && e.browserEvent.shiftKey;\n if ((this._options.scrollYToX || shiftConvert) && !deltaX) {\n deltaX = deltaY;\n deltaY = 0;\n }\n if (e.browserEvent && e.browserEvent.altKey) {\n // fastScrolling\n deltaX = deltaX * this._options.fastScrollSensitivity;\n deltaY = deltaY * this._options.fastScrollSensitivity;\n }\n const futureScrollPosition = this._scrollable.getFutureScrollPosition();\n let desiredScrollPosition = {};\n if (deltaY) {\n const deltaScrollTop = SCROLL_WHEEL_SENSITIVITY * deltaY;\n // Here we convert values such as -0.3 to -1 or 0.3 to 1, otherwise low speed scrolling will never scroll\n const desiredScrollTop = futureScrollPosition.scrollTop - (deltaScrollTop < 0 ? Math.floor(deltaScrollTop) : Math.ceil(deltaScrollTop));\n this._verticalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollTop);\n }\n if (deltaX) {\n const deltaScrollLeft = SCROLL_WHEEL_SENSITIVITY * deltaX;\n // Here we convert values such as -0.3 to -1 or 0.3 to 1, otherwise low speed scrolling will never scroll\n const desiredScrollLeft = futureScrollPosition.scrollLeft - (deltaScrollLeft < 0 ? Math.floor(deltaScrollLeft) : Math.ceil(deltaScrollLeft));\n this._horizontalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollLeft);\n }\n // Check that we are scrolling towards a location which is valid\n desiredScrollPosition = this._scrollable.validateScrollPosition(desiredScrollPosition);\n if (futureScrollPosition.scrollLeft !== desiredScrollPosition.scrollLeft || futureScrollPosition.scrollTop !== desiredScrollPosition.scrollTop) {\n const canPerformSmoothScroll = (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED\n && this._options.mouseWheelSmoothScroll\n && classifier.isPhysicalMouseWheel());\n if (canPerformSmoothScroll) {\n this._scrollable.setScrollPositionSmooth(desiredScrollPosition);\n }\n else {\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\n }\n didScroll = true;\n }\n }\n let consumeMouseWheel = didScroll;\n if (!consumeMouseWheel && this._options.alwaysConsumeMouseWheel) {\n consumeMouseWheel = true;\n }\n if (!consumeMouseWheel && this._options.consumeMouseWheelIfScrollbarIsNeeded && (this._verticalScrollbar.isNeeded() || this._horizontalScrollbar.isNeeded())) {\n consumeMouseWheel = true;\n }\n if (consumeMouseWheel) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n _onDidScroll(e) {\n this._shouldRender = this._horizontalScrollbar.onDidScroll(e) || this._shouldRender;\n this._shouldRender = this._verticalScrollbar.onDidScroll(e) || this._shouldRender;\n if (this._options.useShadows) {\n this._shouldRender = true;\n }\n if (this._revealOnScroll) {\n this._reveal();\n }\n if (!this._options.lazyRender) {\n this._render();\n }\n }\n /**\n * Render / mutate the DOM now.\n * Should be used together with the ctor option `lazyRender`.\n */\n renderNow() {\n if (!this._options.lazyRender) {\n throw new Error('Please use `lazyRender` together with `renderNow`!');\n }\n this._render();\n }\n _render() {\n if (!this._shouldRender) {\n return;\n }\n this._shouldRender = false;\n this._horizontalScrollbar.render();\n this._verticalScrollbar.render();\n if (this._options.useShadows) {\n const scrollState = this._scrollable.getCurrentScrollPosition();\n const enableTop = scrollState.scrollTop > 0;\n const enableLeft = scrollState.scrollLeft > 0;\n const leftClassName = (enableLeft ? ' left' : '');\n const topClassName = (enableTop ? ' top' : '');\n const topLeftClassName = (enableLeft || enableTop ? ' top-left-corner' : '');\n this._leftShadowDomNode.setClassName(`shadow${leftClassName}`);\n this._topShadowDomNode.setClassName(`shadow${topClassName}`);\n this._topLeftShadowDomNode.setClassName(`shadow${topLeftClassName}${topClassName}${leftClassName}`);\n }\n }\n // -------------------- fade in / fade out --------------------\n _onDragStart() {\n this._isDragging = true;\n this._reveal();\n }\n _onDragEnd() {\n this._isDragging = false;\n this._hide();\n }\n _onMouseLeave(e) {\n this._mouseIsOver = false;\n this._hide();\n }\n _onMouseOver(e) {\n this._mouseIsOver = true;\n this._reveal();\n }\n _reveal() {\n this._verticalScrollbar.beginReveal();\n this._horizontalScrollbar.beginReveal();\n this._scheduleHide();\n }\n _hide() {\n if (!this._mouseIsOver && !this._isDragging) {\n this._verticalScrollbar.beginHide();\n this._horizontalScrollbar.beginHide();\n }\n }\n _scheduleHide() {\n if (!this._mouseIsOver && !this._isDragging) {\n this._hideTimeout.cancelAndSet(() => this._hide(), HIDE_TIMEOUT);\n }\n }\n}\nclass ScrollableElement extends AbstractScrollableElement {\n constructor(element, options) {\n options = options || {};\n options.mouseWheelSmoothScroll = false;\n const scrollable = new _common_scrollable_js__WEBPACK_IMPORTED_MODULE_11__.Scrollable({\n forceIntegerValues: true,\n smoothScrollDuration: 0,\n scheduleAtNextAnimationFrame: (callback) => _dom_js__WEBPACK_IMPORTED_MODULE_1__.scheduleAtNextAnimationFrame(callback)\n });\n super(element, options, scrollable);\n this._register(scrollable);\n }\n setScrollPosition(update) {\n this._scrollable.setScrollPositionNow(update);\n }\n}\nclass SmoothScrollableElement extends AbstractScrollableElement {\n constructor(element, options, scrollable) {\n super(element, options, scrollable);\n }\n setScrollPosition(update) {\n if (update.reuseAnimation) {\n this._scrollable.setScrollPositionSmooth(update, update.reuseAnimation);\n }\n else {\n this._scrollable.setScrollPositionNow(update);\n }\n }\n getScrollPosition() {\n return this._scrollable.getCurrentScrollPosition();\n }\n}\nclass DomScrollableElement extends AbstractScrollableElement {\n constructor(element, options) {\n options = options || {};\n options.mouseWheelSmoothScroll = false;\n const scrollable = new _common_scrollable_js__WEBPACK_IMPORTED_MODULE_11__.Scrollable({\n forceIntegerValues: false,\n smoothScrollDuration: 0,\n scheduleAtNextAnimationFrame: (callback) => _dom_js__WEBPACK_IMPORTED_MODULE_1__.scheduleAtNextAnimationFrame(callback)\n });\n super(element, options, scrollable);\n this._register(scrollable);\n this._element = element;\n this.onScroll((e) => {\n if (e.scrollTopChanged) {\n this._element.scrollTop = e.scrollTop;\n }\n if (e.scrollLeftChanged) {\n this._element.scrollLeft = e.scrollLeft;\n }\n });\n this.scanDomNode();\n }\n setScrollPosition(update) {\n this._scrollable.setScrollPositionNow(update);\n }\n getScrollPosition() {\n return this._scrollable.getCurrentScrollPosition();\n }\n scanDomNode() {\n // width, scrollLeft, scrollWidth, height, scrollTop, scrollHeight\n this.setScrollDimensions({\n width: this._element.clientWidth,\n scrollWidth: this._element.scrollWidth,\n height: this._element.clientHeight,\n scrollHeight: this._element.scrollHeight\n });\n this.setScrollPosition({\n scrollLeft: this._element.scrollLeft,\n scrollTop: this._element.scrollTop,\n });\n }\n}\nfunction resolveOptions(opts) {\n const result = {\n lazyRender: (typeof opts.lazyRender !== 'undefined' ? opts.lazyRender : false),\n className: (typeof opts.className !== 'undefined' ? opts.className : ''),\n useShadows: (typeof opts.useShadows !== 'undefined' ? opts.useShadows : true),\n handleMouseWheel: (typeof opts.handleMouseWheel !== 'undefined' ? opts.handleMouseWheel : true),\n flipAxes: (typeof opts.flipAxes !== 'undefined' ? opts.flipAxes : false),\n consumeMouseWheelIfScrollbarIsNeeded: (typeof opts.consumeMouseWheelIfScrollbarIsNeeded !== 'undefined' ? opts.consumeMouseWheelIfScrollbarIsNeeded : false),\n alwaysConsumeMouseWheel: (typeof opts.alwaysConsumeMouseWheel !== 'undefined' ? opts.alwaysConsumeMouseWheel : false),\n scrollYToX: (typeof opts.scrollYToX !== 'undefined' ? opts.scrollYToX : false),\n mouseWheelScrollSensitivity: (typeof opts.mouseWheelScrollSensitivity !== 'undefined' ? opts.mouseWheelScrollSensitivity : 1),\n fastScrollSensitivity: (typeof opts.fastScrollSensitivity !== 'undefined' ? opts.fastScrollSensitivity : 5),\n scrollPredominantAxis: (typeof opts.scrollPredominantAxis !== 'undefined' ? opts.scrollPredominantAxis : true),\n mouseWheelSmoothScroll: (typeof opts.mouseWheelSmoothScroll !== 'undefined' ? opts.mouseWheelSmoothScroll : true),\n arrowSize: (typeof opts.arrowSize !== 'undefined' ? opts.arrowSize : 11),\n listenOnDomNode: (typeof opts.listenOnDomNode !== 'undefined' ? opts.listenOnDomNode : null),\n horizontal: (typeof opts.horizontal !== 'undefined' ? opts.horizontal : 1 /* ScrollbarVisibility.Auto */),\n horizontalScrollbarSize: (typeof opts.horizontalScrollbarSize !== 'undefined' ? opts.horizontalScrollbarSize : 10),\n horizontalSliderSize: (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : 0),\n horizontalHasArrows: (typeof opts.horizontalHasArrows !== 'undefined' ? opts.horizontalHasArrows : false),\n vertical: (typeof opts.vertical !== 'undefined' ? opts.vertical : 1 /* ScrollbarVisibility.Auto */),\n verticalScrollbarSize: (typeof opts.verticalScrollbarSize !== 'undefined' ? opts.verticalScrollbarSize : 10),\n verticalHasArrows: (typeof opts.verticalHasArrows !== 'undefined' ? opts.verticalHasArrows : false),\n verticalSliderSize: (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : 0),\n scrollByPage: (typeof opts.scrollByPage !== 'undefined' ? opts.scrollByPage : false)\n };\n result.horizontalSliderSize = (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : result.horizontalScrollbarSize);\n result.verticalSliderSize = (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : result.verticalScrollbarSize);\n // Defaults are different on Macs\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_10__.isMacintosh) {\n result.className += ' mac';\n }\n return result;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ARROW_IMG_SIZE: () => (/* binding */ ARROW_IMG_SIZE),\n/* harmony export */ ScrollbarArrow: () => (/* binding */ ScrollbarArrow)\n/* harmony export */ });\n/* harmony import */ var _globalPointerMoveMonitor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../globalPointerMoveMonitor.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/globalPointerMoveMonitor.js\");\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_themables_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n/**\n * The arrow image size.\n */\nconst ARROW_IMG_SIZE = 11;\nclass ScrollbarArrow extends _widget_js__WEBPACK_IMPORTED_MODULE_1__.Widget {\n constructor(opts) {\n super();\n this._onActivate = opts.onActivate;\n this.bgDomNode = document.createElement('div');\n this.bgDomNode.className = 'arrow-background';\n this.bgDomNode.style.position = 'absolute';\n this.bgDomNode.style.width = opts.bgWidth + 'px';\n this.bgDomNode.style.height = opts.bgHeight + 'px';\n if (typeof opts.top !== 'undefined') {\n this.bgDomNode.style.top = '0px';\n }\n if (typeof opts.left !== 'undefined') {\n this.bgDomNode.style.left = '0px';\n }\n if (typeof opts.bottom !== 'undefined') {\n this.bgDomNode.style.bottom = '0px';\n }\n if (typeof opts.right !== 'undefined') {\n this.bgDomNode.style.right = '0px';\n }\n this.domNode = document.createElement('div');\n this.domNode.className = opts.className;\n this.domNode.classList.add(..._common_themables_js__WEBPACK_IMPORTED_MODULE_3__.ThemeIcon.asClassNameArray(opts.icon));\n this.domNode.style.position = 'absolute';\n this.domNode.style.width = ARROW_IMG_SIZE + 'px';\n this.domNode.style.height = ARROW_IMG_SIZE + 'px';\n if (typeof opts.top !== 'undefined') {\n this.domNode.style.top = opts.top + 'px';\n }\n if (typeof opts.left !== 'undefined') {\n this.domNode.style.left = opts.left + 'px';\n }\n if (typeof opts.bottom !== 'undefined') {\n this.domNode.style.bottom = opts.bottom + 'px';\n }\n if (typeof opts.right !== 'undefined') {\n this.domNode.style.right = opts.right + 'px';\n }\n this._pointerMoveMonitor = this._register(new _globalPointerMoveMonitor_js__WEBPACK_IMPORTED_MODULE_0__.GlobalPointerMoveMonitor());\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_4__.addStandardDisposableListener(this.bgDomNode, _dom_js__WEBPACK_IMPORTED_MODULE_4__.EventType.POINTER_DOWN, (e) => this._arrowPointerDown(e)));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_4__.addStandardDisposableListener(this.domNode, _dom_js__WEBPACK_IMPORTED_MODULE_4__.EventType.POINTER_DOWN, (e) => this._arrowPointerDown(e)));\n this._pointerdownRepeatTimer = this._register(new _common_async_js__WEBPACK_IMPORTED_MODULE_2__.IntervalTimer());\n this._pointerdownScheduleRepeatTimer = this._register(new _common_async_js__WEBPACK_IMPORTED_MODULE_2__.TimeoutTimer());\n }\n _arrowPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n const scheduleRepeater = () => {\n this._pointerdownRepeatTimer.cancelAndSet(() => this._onActivate(), 1000 / 24);\n };\n this._onActivate();\n this._pointerdownRepeatTimer.cancel();\n this._pointerdownScheduleRepeatTimer.cancelAndSet(scheduleRepeater, 200);\n this._pointerMoveMonitor.startMonitoring(e.target, e.pointerId, e.buttons, (pointerMoveData) => { }, () => {\n this._pointerdownRepeatTimer.cancel();\n this._pointerdownScheduleRepeatTimer.cancel();\n });\n e.preventDefault();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScrollbarState: () => (/* binding */ ScrollbarState)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * The minimal size of the slider (such that it can still be clickable) -- it is artificially enlarged.\n */\nconst MINIMUM_SLIDER_SIZE = 20;\nclass ScrollbarState {\n constructor(arrowSize, scrollbarSize, oppositeScrollbarSize, visibleSize, scrollSize, scrollPosition) {\n this._scrollbarSize = Math.round(scrollbarSize);\n this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize);\n this._arrowSize = Math.round(arrowSize);\n this._visibleSize = visibleSize;\n this._scrollSize = scrollSize;\n this._scrollPosition = scrollPosition;\n this._computedAvailableSize = 0;\n this._computedIsNeeded = false;\n this._computedSliderSize = 0;\n this._computedSliderRatio = 0;\n this._computedSliderPosition = 0;\n this._refreshComputedValues();\n }\n clone() {\n return new ScrollbarState(this._arrowSize, this._scrollbarSize, this._oppositeScrollbarSize, this._visibleSize, this._scrollSize, this._scrollPosition);\n }\n setVisibleSize(visibleSize) {\n const iVisibleSize = Math.round(visibleSize);\n if (this._visibleSize !== iVisibleSize) {\n this._visibleSize = iVisibleSize;\n this._refreshComputedValues();\n return true;\n }\n return false;\n }\n setScrollSize(scrollSize) {\n const iScrollSize = Math.round(scrollSize);\n if (this._scrollSize !== iScrollSize) {\n this._scrollSize = iScrollSize;\n this._refreshComputedValues();\n return true;\n }\n return false;\n }\n setScrollPosition(scrollPosition) {\n const iScrollPosition = Math.round(scrollPosition);\n if (this._scrollPosition !== iScrollPosition) {\n this._scrollPosition = iScrollPosition;\n this._refreshComputedValues();\n return true;\n }\n return false;\n }\n setScrollbarSize(scrollbarSize) {\n this._scrollbarSize = Math.round(scrollbarSize);\n }\n setOppositeScrollbarSize(oppositeScrollbarSize) {\n this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize);\n }\n static _computeValues(oppositeScrollbarSize, arrowSize, visibleSize, scrollSize, scrollPosition) {\n const computedAvailableSize = Math.max(0, visibleSize - oppositeScrollbarSize);\n const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * arrowSize);\n const computedIsNeeded = (scrollSize > 0 && scrollSize > visibleSize);\n if (!computedIsNeeded) {\n // There is no need for a slider\n return {\n computedAvailableSize: Math.round(computedAvailableSize),\n computedIsNeeded: computedIsNeeded,\n computedSliderSize: Math.round(computedRepresentableSize),\n computedSliderRatio: 0,\n computedSliderPosition: 0,\n };\n }\n // We must artificially increase the size of the slider if needed, since the slider would be too small to grab with the mouse otherwise\n const computedSliderSize = Math.round(Math.max(MINIMUM_SLIDER_SIZE, Math.floor(visibleSize * computedRepresentableSize / scrollSize)));\n // The slider can move from 0 to `computedRepresentableSize` - `computedSliderSize`\n // in the same way `scrollPosition` can move from 0 to `scrollSize` - `visibleSize`.\n const computedSliderRatio = (computedRepresentableSize - computedSliderSize) / (scrollSize - visibleSize);\n const computedSliderPosition = (scrollPosition * computedSliderRatio);\n return {\n computedAvailableSize: Math.round(computedAvailableSize),\n computedIsNeeded: computedIsNeeded,\n computedSliderSize: Math.round(computedSliderSize),\n computedSliderRatio: computedSliderRatio,\n computedSliderPosition: Math.round(computedSliderPosition),\n };\n }\n _refreshComputedValues() {\n const r = ScrollbarState._computeValues(this._oppositeScrollbarSize, this._arrowSize, this._visibleSize, this._scrollSize, this._scrollPosition);\n this._computedAvailableSize = r.computedAvailableSize;\n this._computedIsNeeded = r.computedIsNeeded;\n this._computedSliderSize = r.computedSliderSize;\n this._computedSliderRatio = r.computedSliderRatio;\n this._computedSliderPosition = r.computedSliderPosition;\n }\n getArrowSize() {\n return this._arrowSize;\n }\n getScrollPosition() {\n return this._scrollPosition;\n }\n getRectangleLargeSize() {\n return this._computedAvailableSize;\n }\n getRectangleSmallSize() {\n return this._scrollbarSize;\n }\n isNeeded() {\n return this._computedIsNeeded;\n }\n getSliderSize() {\n return this._computedSliderSize;\n }\n getSliderPosition() {\n return this._computedSliderPosition;\n }\n /**\n * Compute a desired `scrollPosition` such that `offset` ends up in the center of the slider.\n * `offset` is based on the same coordinate system as the `sliderPosition`.\n */\n getDesiredScrollPositionFromOffset(offset) {\n if (!this._computedIsNeeded) {\n // no need for a slider\n return 0;\n }\n const desiredSliderPosition = offset - this._arrowSize - this._computedSliderSize / 2;\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\n }\n /**\n * Compute a desired `scrollPosition` from if offset is before or after the slider position.\n * If offset is before slider, treat as a page up (or left). If after, page down (or right).\n * `offset` and `_computedSliderPosition` are based on the same coordinate system.\n * `_visibleSize` corresponds to a \"page\" of lines in the returned coordinate system.\n */\n getDesiredScrollPositionFromOffsetPaged(offset) {\n if (!this._computedIsNeeded) {\n // no need for a slider\n return 0;\n }\n const correctedOffset = offset - this._arrowSize; // compensate if has arrows\n let desiredScrollPosition = this._scrollPosition;\n if (correctedOffset < this._computedSliderPosition) {\n desiredScrollPosition -= this._visibleSize; // page up/left\n }\n else {\n desiredScrollPosition += this._visibleSize; // page down/right\n }\n return desiredScrollPosition;\n }\n /**\n * Compute a desired `scrollPosition` such that the slider moves by `delta`.\n */\n getDesiredScrollPositionFromDelta(delta) {\n if (!this._computedIsNeeded) {\n // no need for a slider\n return 0;\n }\n const desiredSliderPosition = this._computedSliderPosition + delta;\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js": +/*!******************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js ***! + \******************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScrollbarVisibilityController: () => (/* binding */ ScrollbarVisibilityController)\n/* harmony export */ });\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nclass ScrollbarVisibilityController extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable {\n constructor(visibility, visibleClassName, invisibleClassName) {\n super();\n this._visibility = visibility;\n this._visibleClassName = visibleClassName;\n this._invisibleClassName = invisibleClassName;\n this._domNode = null;\n this._isVisible = false;\n this._isNeeded = false;\n this._rawShouldBeVisible = false;\n this._shouldBeVisible = false;\n this._revealTimer = this._register(new _common_async_js__WEBPACK_IMPORTED_MODULE_0__.TimeoutTimer());\n }\n setVisibility(visibility) {\n if (this._visibility !== visibility) {\n this._visibility = visibility;\n this._updateShouldBeVisible();\n }\n }\n // ----------------- Hide / Reveal\n setShouldBeVisible(rawShouldBeVisible) {\n this._rawShouldBeVisible = rawShouldBeVisible;\n this._updateShouldBeVisible();\n }\n _applyVisibilitySetting() {\n if (this._visibility === 2 /* ScrollbarVisibility.Hidden */) {\n return false;\n }\n if (this._visibility === 3 /* ScrollbarVisibility.Visible */) {\n return true;\n }\n return this._rawShouldBeVisible;\n }\n _updateShouldBeVisible() {\n const shouldBeVisible = this._applyVisibilitySetting();\n if (this._shouldBeVisible !== shouldBeVisible) {\n this._shouldBeVisible = shouldBeVisible;\n this.ensureVisibility();\n }\n }\n setIsNeeded(isNeeded) {\n if (this._isNeeded !== isNeeded) {\n this._isNeeded = isNeeded;\n this.ensureVisibility();\n }\n }\n setDomNode(domNode) {\n this._domNode = domNode;\n this._domNode.setClassName(this._invisibleClassName);\n // Now that the flags & the dom node are in a consistent state, ensure the Hidden/Visible configuration\n this.setShouldBeVisible(false);\n }\n ensureVisibility() {\n if (!this._isNeeded) {\n // Nothing to be rendered\n this._hide(false);\n return;\n }\n if (this._shouldBeVisible) {\n this._reveal();\n }\n else {\n this._hide(true);\n }\n }\n _reveal() {\n if (this._isVisible) {\n return;\n }\n this._isVisible = true;\n // The CSS animation doesn't play otherwise\n this._revealTimer.setIfNotSet(() => {\n var _a;\n (_a = this._domNode) === null || _a === void 0 ? void 0 : _a.setClassName(this._visibleClassName);\n }, 0);\n }\n _hide(withFadeAway) {\n var _a;\n this._revealTimer.cancel();\n if (!this._isVisible) {\n return;\n }\n this._isVisible = false;\n (_a = this._domNode) === null || _a === void 0 ? void 0 : _a.setClassName(this._invisibleClassName + (withFadeAway ? ' fade' : ''));\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js": +/*!******************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js ***! + \******************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VerticalScrollbar: () => (/* binding */ VerticalScrollbar)\n/* harmony export */ });\n/* harmony import */ var _mouseEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mouseEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js\");\n/* harmony import */ var _abstractScrollbar_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstractScrollbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js\");\n/* harmony import */ var _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scrollbarArrow.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js\");\n/* harmony import */ var _scrollbarState_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scrollbarState.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nclass VerticalScrollbar extends _abstractScrollbar_js__WEBPACK_IMPORTED_MODULE_1__.AbstractScrollbar {\n constructor(scrollable, options, host) {\n const scrollDimensions = scrollable.getScrollDimensions();\n const scrollPosition = scrollable.getCurrentScrollPosition();\n super({\n lazyRender: options.lazyRender,\n host: host,\n scrollbarState: new _scrollbarState_js__WEBPACK_IMPORTED_MODULE_3__.ScrollbarState((options.verticalHasArrows ? options.arrowSize : 0), (options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize), \n // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom\n 0, scrollDimensions.height, scrollDimensions.scrollHeight, scrollPosition.scrollTop),\n visibility: options.vertical,\n extraScrollbarClassName: 'vertical',\n scrollable: scrollable,\n scrollByPage: options.scrollByPage\n });\n if (options.verticalHasArrows) {\n const arrowDelta = (options.arrowSize - _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_2__.ARROW_IMG_SIZE) / 2;\n const scrollbarDelta = (options.verticalScrollbarSize - _scrollbarArrow_js__WEBPACK_IMPORTED_MODULE_2__.ARROW_IMG_SIZE) / 2;\n this._createArrow({\n className: 'scra',\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__.Codicon.scrollbarButtonUp,\n top: arrowDelta,\n left: scrollbarDelta,\n bottom: undefined,\n right: undefined,\n bgWidth: options.verticalScrollbarSize,\n bgHeight: options.arrowSize,\n onActivate: () => this._host.onMouseWheel(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_0__.StandardWheelEvent(null, 0, 1)),\n });\n this._createArrow({\n className: 'scra',\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_4__.Codicon.scrollbarButtonDown,\n top: undefined,\n left: scrollbarDelta,\n bottom: arrowDelta,\n right: undefined,\n bgWidth: options.verticalScrollbarSize,\n bgHeight: options.arrowSize,\n onActivate: () => this._host.onMouseWheel(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_0__.StandardWheelEvent(null, 0, -1)),\n });\n }\n this._createSlider(0, Math.floor((options.verticalScrollbarSize - options.verticalSliderSize) / 2), options.verticalSliderSize, undefined);\n }\n _updateSlider(sliderSize, sliderPosition) {\n this.slider.setHeight(sliderSize);\n this.slider.setTop(sliderPosition);\n }\n _renderDomNode(largeSize, smallSize) {\n this.domNode.setWidth(smallSize);\n this.domNode.setHeight(largeSize);\n this.domNode.setRight(0);\n this.domNode.setTop(0);\n }\n onDidScroll(e) {\n this._shouldRender = this._onElementScrollSize(e.scrollHeight) || this._shouldRender;\n this._shouldRender = this._onElementScrollPosition(e.scrollTop) || this._shouldRender;\n this._shouldRender = this._onElementSize(e.height) || this._shouldRender;\n return this._shouldRender;\n }\n _pointerDownRelativePosition(offsetX, offsetY) {\n return offsetY;\n }\n _sliderPointerPosition(e) {\n return e.pageY;\n }\n _sliderOrthogonalPointerPosition(e) {\n return e.pageX;\n }\n _updateScrollbarSize(size) {\n this.slider.setWidth(size);\n }\n writeScrollPosition(target, scrollPosition) {\n target.scrollTop = scrollPosition;\n }\n updateOptions(options) {\n this.updateScrollbarSize(options.vertical === 2 /* ScrollbarVisibility.Hidden */ ? 0 : options.verticalScrollbarSize);\n // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom\n this._scrollbarState.setOppositeScrollbarSize(0);\n this._visibilityController.setVisibility(options.vertical);\n this._scrollByPage = options.scrollByPage;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SelectBox: () => (/* binding */ SelectBox)\n/* harmony export */ });\n/* harmony import */ var _selectBoxCustom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selectBoxCustom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js\");\n/* harmony import */ var _selectBoxNative_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectBoxNative.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxNative.js\");\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _selectBox_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./selectBox.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nclass SelectBox extends _widget_js__WEBPACK_IMPORTED_MODULE_2__.Widget {\n constructor(options, selected, contextViewProvider, styles, selectBoxOptions) {\n super();\n // Default to native SelectBox for OSX unless overridden\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_3__.isMacintosh && !(selectBoxOptions === null || selectBoxOptions === void 0 ? void 0 : selectBoxOptions.useCustomDrawn)) {\n this.selectBoxDelegate = new _selectBoxNative_js__WEBPACK_IMPORTED_MODULE_1__.SelectBoxNative(options, selected, styles, selectBoxOptions);\n }\n else {\n this.selectBoxDelegate = new _selectBoxCustom_js__WEBPACK_IMPORTED_MODULE_0__.SelectBoxList(options, selected, contextViewProvider, styles, selectBoxOptions);\n }\n this._register(this.selectBoxDelegate);\n }\n // Public SelectBox Methods - routed through delegate interface\n get onDidSelect() {\n return this.selectBoxDelegate.onDidSelect;\n }\n setOptions(options, selected) {\n this.selectBoxDelegate.setOptions(options, selected);\n }\n select(index) {\n this.selectBoxDelegate.select(index);\n }\n focus() {\n this.selectBoxDelegate.focus();\n }\n blur() {\n this.selectBoxDelegate.blur();\n }\n setFocusable(focusable) {\n this.selectBoxDelegate.setFocusable(focusable);\n }\n render(container) {\n this.selectBoxDelegate.render(container);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SelectBoxList: () => (/* binding */ SelectBoxList)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../event.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/event.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _markdownRenderer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../markdownRenderer.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/markdownRenderer.js\");\n/* harmony import */ var _list_listWidget_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../list/listWidget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_keyCodes_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/keyCodes.js */ \"./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _selectBoxCustom_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./selectBoxCustom.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\n\nconst $ = _dom_js__WEBPACK_IMPORTED_MODULE_0__.$;\nconst SELECT_OPTION_ENTRY_TEMPLATE_ID = 'selectOption.entry.template';\nclass SelectListRenderer {\n get templateId() { return SELECT_OPTION_ENTRY_TEMPLATE_ID; }\n renderTemplate(container) {\n const data = Object.create(null);\n data.root = container;\n data.text = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, $('.option-text'));\n data.detail = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, $('.option-detail'));\n data.decoratorRight = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(container, $('.option-decorator-right'));\n return data;\n }\n renderElement(element, index, templateData) {\n const data = templateData;\n const text = element.text;\n const detail = element.detail;\n const decoratorRight = element.decoratorRight;\n const isDisabled = element.isDisabled;\n data.text.textContent = text;\n data.detail.textContent = !!detail ? detail : '';\n data.decoratorRight.innerText = !!decoratorRight ? decoratorRight : '';\n // pseudo-select disabled option\n if (isDisabled) {\n data.root.classList.add('option-disabled');\n }\n else {\n // Make sure we do class removal from prior template rendering\n data.root.classList.remove('option-disabled');\n }\n }\n disposeTemplate(_templateData) {\n // noop\n }\n}\nclass SelectBoxList extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_8__.Disposable {\n constructor(options, selected, contextViewProvider, styles, selectBoxOptions) {\n super();\n this.options = [];\n this._currentSelection = 0;\n this._hasDetails = false;\n this._skipLayout = false;\n this._sticky = false; // for dev purposes only\n this._isVisible = false;\n this.styles = styles;\n this.selectBoxOptions = selectBoxOptions || Object.create(null);\n if (typeof this.selectBoxOptions.minBottomMargin !== 'number') {\n this.selectBoxOptions.minBottomMargin = SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN;\n }\n else if (this.selectBoxOptions.minBottomMargin < 0) {\n this.selectBoxOptions.minBottomMargin = 0;\n }\n this.selectElement = document.createElement('select');\n // Use custom CSS vars for padding calculation\n this.selectElement.className = 'monaco-select-box monaco-select-box-dropdown-padding';\n if (typeof this.selectBoxOptions.ariaLabel === 'string') {\n this.selectElement.setAttribute('aria-label', this.selectBoxOptions.ariaLabel);\n }\n if (typeof this.selectBoxOptions.ariaDescription === 'string') {\n this.selectElement.setAttribute('aria-description', this.selectBoxOptions.ariaDescription);\n }\n this._onDidSelect = new _common_event_js__WEBPACK_IMPORTED_MODULE_6__.Emitter();\n this._register(this._onDidSelect);\n this.registerListeners();\n this.constructSelectDropDown(contextViewProvider);\n this.selected = selected || 0;\n if (options) {\n this.setOptions(options, selected);\n }\n this.initStyleSheet();\n }\n // IDelegate - List renderer\n getHeight() {\n return 22;\n }\n getTemplateId() {\n return SELECT_OPTION_ENTRY_TEMPLATE_ID;\n }\n constructSelectDropDown(contextViewProvider) {\n // SetUp ContextView container to hold select Dropdown\n this.contextViewProvider = contextViewProvider;\n this.selectDropDownContainer = _dom_js__WEBPACK_IMPORTED_MODULE_0__.$('.monaco-select-box-dropdown-container');\n // Use custom CSS vars for padding calculation (shared with parent select)\n this.selectDropDownContainer.classList.add('monaco-select-box-dropdown-padding');\n // Setup container for select option details\n this.selectionDetailsPane = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(this.selectDropDownContainer, $('.select-box-details-pane'));\n // Create span flex box item/div we can measure and control\n const widthControlOuterDiv = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(this.selectDropDownContainer, $('.select-box-dropdown-container-width-control'));\n const widthControlInnerDiv = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(widthControlOuterDiv, $('.width-control-div'));\n this.widthControlElement = document.createElement('span');\n this.widthControlElement.className = 'option-text-width-control';\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(widthControlInnerDiv, this.widthControlElement);\n // Always default to below position\n this._dropDownPosition = 0 /* AnchorPosition.BELOW */;\n // Inline stylesheet for themes\n this.styleElement = _dom_js__WEBPACK_IMPORTED_MODULE_0__.createStyleSheet(this.selectDropDownContainer);\n // Prevent dragging of dropdown #114329\n this.selectDropDownContainer.setAttribute('draggable', 'true');\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectDropDownContainer, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.DRAG_START, (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true);\n }));\n }\n registerListeners() {\n // Parent native select keyboard listeners\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addStandardDisposableListener(this.selectElement, 'change', (e) => {\n this.selected = e.target.selectedIndex;\n this._onDidSelect.fire({\n index: e.target.selectedIndex,\n selected: e.target.value\n });\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.selectElement.title = this.options[this.selected].text;\n }\n }));\n // Have to implement both keyboard and mouse controllers to handle disabled options\n // Intercept mouse events to override normal select actions on parents\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.CLICK, (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n if (this._isVisible) {\n this.hideSelectDropDown(true);\n }\n else {\n this.showSelectDropDown();\n }\n }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_DOWN, (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n }));\n // Intercept touch events\n // The following implementation is slightly different from the mouse event handlers above.\n // Use the following helper variable, otherwise the list flickers.\n let listIsVisibleOnTouchStart;\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectElement, 'touchstart', (e) => {\n listIsVisibleOnTouchStart = this._isVisible;\n }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectElement, 'touchend', (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n if (listIsVisibleOnTouchStart) {\n this.hideSelectDropDown(true);\n }\n else {\n this.showSelectDropDown();\n }\n }));\n // Intercept keyboard handling\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectElement, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_DOWN, (e) => {\n const event = new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e);\n let showDropDown = false;\n // Create and drop down select list on keyboard select\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_9__.isMacintosh) {\n if (event.keyCode === 18 /* KeyCode.DownArrow */ || event.keyCode === 16 /* KeyCode.UpArrow */ || event.keyCode === 10 /* KeyCode.Space */ || event.keyCode === 3 /* KeyCode.Enter */) {\n showDropDown = true;\n }\n }\n else {\n if (event.keyCode === 18 /* KeyCode.DownArrow */ && event.altKey || event.keyCode === 16 /* KeyCode.UpArrow */ && event.altKey || event.keyCode === 10 /* KeyCode.Space */ || event.keyCode === 3 /* KeyCode.Enter */) {\n showDropDown = true;\n }\n }\n if (showDropDown) {\n this.showSelectDropDown();\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true);\n }\n }));\n }\n get onDidSelect() {\n return this._onDidSelect.event;\n }\n setOptions(options, selected) {\n if (!_common_arrays_js__WEBPACK_IMPORTED_MODULE_5__.equals(this.options, options)) {\n this.options = options;\n this.selectElement.options.length = 0;\n this._hasDetails = false;\n this._cachedMaxDetailsHeight = undefined;\n this.options.forEach((option, index) => {\n this.selectElement.add(this.createOption(option.text, index, option.isDisabled));\n if (typeof option.description === 'string') {\n this._hasDetails = true;\n }\n });\n }\n if (selected !== undefined) {\n this.select(selected);\n // Set current = selected since this is not necessarily a user exit\n this._currentSelection = this.selected;\n }\n }\n setOptionsList() {\n var _a;\n // Mirror options in drop-down\n // Populate select list for non-native select mode\n (_a = this.selectList) === null || _a === void 0 ? void 0 : _a.splice(0, this.selectList.length, this.options);\n }\n select(index) {\n if (index >= 0 && index < this.options.length) {\n this.selected = index;\n }\n else if (index > this.options.length - 1) {\n // Adjust index to end of list\n // This could make client out of sync with the select\n this.select(this.options.length - 1);\n }\n else if (this.selected < 0) {\n this.selected = 0;\n }\n this.selectElement.selectedIndex = this.selected;\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.selectElement.title = this.options[this.selected].text;\n }\n }\n focus() {\n if (this.selectElement) {\n this.selectElement.tabIndex = 0;\n this.selectElement.focus();\n }\n }\n blur() {\n if (this.selectElement) {\n this.selectElement.tabIndex = -1;\n this.selectElement.blur();\n }\n }\n setFocusable(focusable) {\n this.selectElement.tabIndex = focusable ? 0 : -1;\n }\n render(container) {\n this.container = container;\n container.classList.add('select-container');\n container.appendChild(this.selectElement);\n this.styleSelectElement();\n }\n initStyleSheet() {\n const content = [];\n // Style non-native select mode\n if (this.styles.listFocusBackground) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`);\n }\n if (this.styles.listFocusForeground) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`);\n }\n if (this.styles.decoratorRightForeground) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`);\n }\n if (this.styles.selectBackground && this.styles.selectBorder && this.styles.selectBorder !== this.styles.selectBackground) {\n content.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `);\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `);\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `);\n }\n else if (this.styles.selectListBorder) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `);\n content.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `);\n }\n // Hover foreground - ignore for disabled options\n if (this.styles.listHoverForeground) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`);\n }\n // Hover background - ignore for disabled options\n if (this.styles.listHoverBackground) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`);\n }\n // Match quick input outline styles - ignore for disabled options\n if (this.styles.listFocusOutline) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`);\n }\n if (this.styles.listHoverOutline) {\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`);\n }\n // Clear list styles on focus and on hover for disabled options\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }`);\n content.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }`);\n this.styleElement.textContent = content.join('\\n');\n }\n styleSelectElement() {\n var _a, _b, _c;\n const background = (_a = this.styles.selectBackground) !== null && _a !== void 0 ? _a : '';\n const foreground = (_b = this.styles.selectForeground) !== null && _b !== void 0 ? _b : '';\n const border = (_c = this.styles.selectBorder) !== null && _c !== void 0 ? _c : '';\n this.selectElement.style.backgroundColor = background;\n this.selectElement.style.color = foreground;\n this.selectElement.style.borderColor = border;\n }\n styleList() {\n var _a, _b;\n const background = (_a = this.styles.selectBackground) !== null && _a !== void 0 ? _a : '';\n const listBackground = _dom_js__WEBPACK_IMPORTED_MODULE_0__.asCssValueWithDefault(this.styles.selectListBackground, background);\n this.selectDropDownListContainer.style.backgroundColor = listBackground;\n this.selectionDetailsPane.style.backgroundColor = listBackground;\n const optionsBorder = (_b = this.styles.focusBorder) !== null && _b !== void 0 ? _b : '';\n this.selectDropDownContainer.style.outlineColor = optionsBorder;\n this.selectDropDownContainer.style.outlineOffset = '-1px';\n this.selectList.style(this.styles);\n }\n createOption(value, index, disabled) {\n const option = document.createElement('option');\n option.value = value;\n option.text = value;\n option.disabled = !!disabled;\n return option;\n }\n // ContextView dropdown methods\n showSelectDropDown() {\n this.selectionDetailsPane.innerText = '';\n if (!this.contextViewProvider || this._isVisible) {\n return;\n }\n // Lazily create and populate list only at open, moved from constructor\n this.createSelectList(this.selectDropDownContainer);\n this.setOptionsList();\n // This allows us to flip the position based on measurement\n // Set drop-down position above/below from required height and margins\n // If pre-layout cannot fit at least one option do not show drop-down\n this.contextViewProvider.showContextView({\n getAnchor: () => this.selectElement,\n render: (container) => this.renderSelectDropDown(container, true),\n layout: () => {\n this.layoutSelectDropDown();\n },\n onHide: () => {\n this.selectDropDownContainer.classList.remove('visible');\n this.selectElement.classList.remove('synthetic-focus');\n },\n anchorPosition: this._dropDownPosition\n }, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n // Hide so we can relay out\n this._isVisible = true;\n this.hideSelectDropDown(false);\n this.contextViewProvider.showContextView({\n getAnchor: () => this.selectElement,\n render: (container) => this.renderSelectDropDown(container),\n layout: () => this.layoutSelectDropDown(),\n onHide: () => {\n this.selectDropDownContainer.classList.remove('visible');\n this.selectElement.classList.remove('synthetic-focus');\n },\n anchorPosition: this._dropDownPosition\n }, this.selectBoxOptions.optionsAsChildren ? this.container : undefined);\n // Track initial selection the case user escape, blur\n this._currentSelection = this.selected;\n this._isVisible = true;\n this.selectElement.setAttribute('aria-expanded', 'true');\n }\n hideSelectDropDown(focusSelect) {\n if (!this.contextViewProvider || !this._isVisible) {\n return;\n }\n this._isVisible = false;\n this.selectElement.setAttribute('aria-expanded', 'false');\n if (focusSelect) {\n this.selectElement.focus();\n }\n this.contextViewProvider.hideContextView();\n }\n renderSelectDropDown(container, preLayoutPosition) {\n container.appendChild(this.selectDropDownContainer);\n // Pre-Layout allows us to change position\n this.layoutSelectDropDown(preLayoutPosition);\n return {\n dispose: () => {\n // contextView will dispose itself if moving from one View to another\n try {\n container.removeChild(this.selectDropDownContainer); // remove to take out the CSS rules we add\n }\n catch (error) {\n // Ignore, removed already by change of focus\n }\n }\n };\n }\n // Iterate over detailed descriptions, find max height\n measureMaxDetailsHeight() {\n let maxDetailsPaneHeight = 0;\n this.options.forEach((_option, index) => {\n this.updateDetail(index);\n if (this.selectionDetailsPane.offsetHeight > maxDetailsPaneHeight) {\n maxDetailsPaneHeight = this.selectionDetailsPane.offsetHeight;\n }\n });\n return maxDetailsPaneHeight;\n }\n layoutSelectDropDown(preLayoutPosition) {\n // Avoid recursion from layout called in onListFocus\n if (this._skipLayout) {\n return false;\n }\n // Layout ContextView drop down select list and container\n // Have to manage our vertical overflow, sizing, position below or above\n // Position has to be determined and set prior to contextView instantiation\n if (this.selectList) {\n // Make visible to enable measurements\n this.selectDropDownContainer.classList.add('visible');\n const selectPosition = _dom_js__WEBPACK_IMPORTED_MODULE_0__.getDomNodePagePosition(this.selectElement);\n const styles = getComputedStyle(this.selectElement);\n const verticalPadding = parseFloat(styles.getPropertyValue('--dropdown-padding-top')) + parseFloat(styles.getPropertyValue('--dropdown-padding-bottom'));\n const maxSelectDropDownHeightBelow = (window.innerHeight - selectPosition.top - selectPosition.height - (this.selectBoxOptions.minBottomMargin || 0));\n const maxSelectDropDownHeightAbove = (selectPosition.top - SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN);\n // Determine optimal width - min(longest option), opt(parent select, excluding margins), max(ContextView controlled)\n const selectWidth = this.selectElement.offsetWidth;\n const selectMinWidth = this.setWidthControlElement(this.widthControlElement);\n const selectOptimalWidth = Math.max(selectMinWidth, Math.round(selectWidth)).toString() + 'px';\n this.selectDropDownContainer.style.width = selectOptimalWidth;\n // Get initial list height and determine space above and below\n this.selectList.getHTMLElement().style.height = '';\n this.selectList.layout();\n let listHeight = this.selectList.contentHeight;\n if (this._hasDetails && this._cachedMaxDetailsHeight === undefined) {\n this._cachedMaxDetailsHeight = this.measureMaxDetailsHeight();\n }\n const maxDetailsPaneHeight = this._hasDetails ? this._cachedMaxDetailsHeight : 0;\n const minRequiredDropDownHeight = listHeight + verticalPadding + maxDetailsPaneHeight;\n const maxVisibleOptionsBelow = ((Math.floor((maxSelectDropDownHeightBelow - verticalPadding - maxDetailsPaneHeight) / this.getHeight())));\n const maxVisibleOptionsAbove = ((Math.floor((maxSelectDropDownHeightAbove - verticalPadding - maxDetailsPaneHeight) / this.getHeight())));\n // If we are only doing pre-layout check/adjust position only\n // Calculate vertical space available, flip up if insufficient\n // Use reflected padding on parent select, ContextView style\n // properties not available before DOM attachment\n if (preLayoutPosition) {\n // Check if select moved out of viewport , do not open\n // If at least one option cannot be shown, don't open the drop-down or hide/remove if open\n if ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n || selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n || ((maxVisibleOptionsBelow < 1) && (maxVisibleOptionsAbove < 1))) {\n // Indicate we cannot open\n return false;\n }\n // Determine if we have to flip up\n // Always show complete list items - never more than Max available vertical height\n if (maxVisibleOptionsBelow < SelectBoxList.DEFAULT_MINIMUM_VISIBLE_OPTIONS\n && maxVisibleOptionsAbove > maxVisibleOptionsBelow\n && this.options.length > maxVisibleOptionsBelow) {\n this._dropDownPosition = 1 /* AnchorPosition.ABOVE */;\n this.selectDropDownContainer.removeChild(this.selectDropDownListContainer);\n this.selectDropDownContainer.removeChild(this.selectionDetailsPane);\n this.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n this.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n this.selectionDetailsPane.classList.remove('border-top');\n this.selectionDetailsPane.classList.add('border-bottom');\n }\n else {\n this._dropDownPosition = 0 /* AnchorPosition.BELOW */;\n this.selectDropDownContainer.removeChild(this.selectDropDownListContainer);\n this.selectDropDownContainer.removeChild(this.selectionDetailsPane);\n this.selectDropDownContainer.appendChild(this.selectDropDownListContainer);\n this.selectDropDownContainer.appendChild(this.selectionDetailsPane);\n this.selectionDetailsPane.classList.remove('border-bottom');\n this.selectionDetailsPane.classList.add('border-top');\n }\n // Do full layout on showSelectDropDown only\n return true;\n }\n // Check if select out of viewport or cutting into status bar\n if ((selectPosition.top + selectPosition.height) > (window.innerHeight - 22)\n || selectPosition.top < SelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN\n || (this._dropDownPosition === 0 /* AnchorPosition.BELOW */ && maxVisibleOptionsBelow < 1)\n || (this._dropDownPosition === 1 /* AnchorPosition.ABOVE */ && maxVisibleOptionsAbove < 1)) {\n // Cannot properly layout, close and hide\n this.hideSelectDropDown(true);\n return false;\n }\n // SetUp list dimensions and layout - account for container padding\n // Use position to check above or below available space\n if (this._dropDownPosition === 0 /* AnchorPosition.BELOW */) {\n if (this._isVisible && maxVisibleOptionsBelow + maxVisibleOptionsAbove < 1) {\n // If drop-down is visible, must be doing a DOM re-layout, hide since we don't fit\n // Hide drop-down, hide contextview, focus on parent select\n this.hideSelectDropDown(true);\n return false;\n }\n // Adjust list height to max from select bottom to margin (default/minBottomMargin)\n if (minRequiredDropDownHeight > maxSelectDropDownHeightBelow) {\n listHeight = (maxVisibleOptionsBelow * this.getHeight());\n }\n }\n else {\n if (minRequiredDropDownHeight > maxSelectDropDownHeightAbove) {\n listHeight = (maxVisibleOptionsAbove * this.getHeight());\n }\n }\n // Set adjusted list height and relayout\n this.selectList.layout(listHeight);\n this.selectList.domFocus();\n // Finally set focus on selected item\n if (this.selectList.length > 0) {\n this.selectList.setFocus([this.selected || 0]);\n this.selectList.reveal(this.selectList.getFocus()[0] || 0);\n }\n if (this._hasDetails) {\n // Leave the selectDropDownContainer to size itself according to children (list + details) - #57447\n this.selectList.getHTMLElement().style.height = (listHeight + verticalPadding) + 'px';\n this.selectDropDownContainer.style.height = '';\n }\n else {\n this.selectDropDownContainer.style.height = (listHeight + verticalPadding) + 'px';\n }\n this.updateDetail(this.selected);\n this.selectDropDownContainer.style.width = selectOptimalWidth;\n // Maintain focus outline on parent select as well as list container - tabindex for focus\n this.selectDropDownListContainer.setAttribute('tabindex', '0');\n this.selectElement.classList.add('synthetic-focus');\n this.selectDropDownContainer.classList.add('synthetic-focus');\n return true;\n }\n else {\n return false;\n }\n }\n setWidthControlElement(container) {\n let elementWidth = 0;\n if (container) {\n let longest = 0;\n let longestLength = 0;\n this.options.forEach((option, index) => {\n const detailLength = !!option.detail ? option.detail.length : 0;\n const rightDecoratorLength = !!option.decoratorRight ? option.decoratorRight.length : 0;\n const len = option.text.length + detailLength + rightDecoratorLength;\n if (len > longestLength) {\n longest = index;\n longestLength = len;\n }\n });\n container.textContent = this.options[longest].text + (!!this.options[longest].decoratorRight ? (this.options[longest].decoratorRight + ' ') : '');\n elementWidth = _dom_js__WEBPACK_IMPORTED_MODULE_0__.getTotalWidth(container);\n }\n return elementWidth;\n }\n createSelectList(parent) {\n // If we have already constructive list on open, skip\n if (this.selectList) {\n return;\n }\n // SetUp container for list\n this.selectDropDownListContainer = _dom_js__WEBPACK_IMPORTED_MODULE_0__.append(parent, $('.select-box-dropdown-list-container'));\n this.listRenderer = new SelectListRenderer();\n this.selectList = new _list_listWidget_js__WEBPACK_IMPORTED_MODULE_4__.List('SelectBoxCustom', this.selectDropDownListContainer, this, [this.listRenderer], {\n useShadows: false,\n verticalScrollMode: 3 /* ScrollbarVisibility.Visible */,\n keyboardSupport: false,\n mouseSupport: false,\n accessibilityProvider: {\n getAriaLabel: element => {\n let label = element.text;\n if (element.detail) {\n label += `. ${element.detail}`;\n }\n if (element.decoratorRight) {\n label += `. ${element.decoratorRight}`;\n }\n if (element.description) {\n label += `. ${element.description}`;\n }\n return label;\n },\n getWidgetAriaLabel: () => (0,_nls_js__WEBPACK_IMPORTED_MODULE_11__.localize)({ key: 'selectBox', comment: ['Behave like native select dropdown element.'] }, \"Select Box\"),\n getRole: () => _common_platform_js__WEBPACK_IMPORTED_MODULE_9__.isMacintosh ? '' : 'option',\n getWidgetRole: () => 'listbox'\n }\n });\n if (this.selectBoxOptions.ariaLabel) {\n this.selectList.ariaLabel = this.selectBoxOptions.ariaLabel;\n }\n // SetUp list keyboard controller - control navigation, disabled items, focus\n const onKeyDown = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.selectDropDownListContainer, 'keydown'));\n const onSelectDropDownKeyDown = _common_event_js__WEBPACK_IMPORTED_MODULE_6__.Event.chain(onKeyDown.event)\n .filter(() => this.selectList.length > 0)\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 3 /* KeyCode.Enter */).on(e => this.onEnter(e), this));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 2 /* KeyCode.Tab */).on(e => this.onEnter(e), this)); // Tab should behave the same as enter, #79339\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 9 /* KeyCode.Escape */).on(e => this.onEscape(e), this));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 16 /* KeyCode.UpArrow */).on(e => this.onUpArrow(e), this));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 18 /* KeyCode.DownArrow */).on(e => this.onDownArrow(e), this));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 12 /* KeyCode.PageDown */).on(this.onPageDown, this));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 11 /* KeyCode.PageUp */).on(this.onPageUp, this));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 14 /* KeyCode.Home */).on(this.onHome, this));\n this._register(onSelectDropDownKeyDown.filter(e => e.keyCode === 13 /* KeyCode.End */).on(this.onEnd, this));\n this._register(onSelectDropDownKeyDown.filter(e => (e.keyCode >= 21 /* KeyCode.Digit0 */ && e.keyCode <= 56 /* KeyCode.KeyZ */) || (e.keyCode >= 85 /* KeyCode.Semicolon */ && e.keyCode <= 113 /* KeyCode.NumpadDivide */)).on(this.onCharacter, this));\n // SetUp list mouse controller - control navigation, disabled items, focus\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectList.getHTMLElement(), _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.POINTER_UP, e => this.onPointerUp(e)));\n this._register(this.selectList.onMouseOver(e => typeof e.index !== 'undefined' && this.selectList.setFocus([e.index])));\n this._register(this.selectList.onDidChangeFocus(e => this.onListFocus(e)));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectDropDownContainer, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.FOCUS_OUT, e => {\n if (!this._isVisible || _dom_js__WEBPACK_IMPORTED_MODULE_0__.isAncestor(e.relatedTarget, this.selectDropDownContainer)) {\n return;\n }\n this.onListBlur();\n }));\n this.selectList.getHTMLElement().setAttribute('aria-label', this.selectBoxOptions.ariaLabel || '');\n this.selectList.getHTMLElement().setAttribute('aria-expanded', 'true');\n this.styleList();\n }\n // List methods\n // List mouse controller - active exit, select option, fire onDidSelect if change, return focus to parent select\n // Also takes in touchend events\n onPointerUp(e) {\n if (!this.selectList.length) {\n return;\n }\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n const target = e.target;\n if (!target) {\n return;\n }\n // Check our mouse event is on an option (not scrollbar)\n if (target.classList.contains('slider')) {\n return;\n }\n const listRowElement = target.closest('.monaco-list-row');\n if (!listRowElement) {\n return;\n }\n const index = Number(listRowElement.getAttribute('data-index'));\n const disabled = listRowElement.classList.contains('option-disabled');\n // Ignore mouse selection of disabled options\n if (index >= 0 && index < this.options.length && !disabled) {\n this.selected = index;\n this.select(this.selected);\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n // Only fire if selection change\n if (this.selected !== this._currentSelection) {\n // Set current = selected\n this._currentSelection = this.selected;\n this._onDidSelect.fire({\n index: this.selectElement.selectedIndex,\n selected: this.options[this.selected].text\n });\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.selectElement.title = this.options[this.selected].text;\n }\n }\n this.hideSelectDropDown(true);\n }\n }\n // List Exit - passive - implicit no selection change, hide drop-down\n onListBlur() {\n if (this._sticky) {\n return;\n }\n if (this.selected !== this._currentSelection) {\n // Reset selected to current if no change\n this.select(this._currentSelection);\n }\n this.hideSelectDropDown(false);\n }\n renderDescriptionMarkdown(text, actionHandler) {\n const cleanRenderedMarkdown = (element) => {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes.item(i);\n const tagName = child.tagName && child.tagName.toLowerCase();\n if (tagName === 'img') {\n element.removeChild(child);\n }\n else {\n cleanRenderedMarkdown(child);\n }\n }\n };\n const rendered = (0,_markdownRenderer_js__WEBPACK_IMPORTED_MODULE_3__.renderMarkdown)({ value: text, supportThemeIcons: true }, { actionHandler });\n rendered.element.classList.add('select-box-description-markdown');\n cleanRenderedMarkdown(rendered.element);\n return rendered.element;\n }\n // List Focus Change - passive - update details pane with newly focused element's data\n onListFocus(e) {\n // Skip during initial layout\n if (!this._isVisible || !this._hasDetails) {\n return;\n }\n this.updateDetail(e.indexes[0]);\n }\n updateDetail(selectedIndex) {\n var _a, _b;\n this.selectionDetailsPane.innerText = '';\n const option = this.options[selectedIndex];\n const description = (_a = option === null || option === void 0 ? void 0 : option.description) !== null && _a !== void 0 ? _a : '';\n const descriptionIsMarkdown = (_b = option === null || option === void 0 ? void 0 : option.descriptionIsMarkdown) !== null && _b !== void 0 ? _b : false;\n if (description) {\n if (descriptionIsMarkdown) {\n const actionHandler = option.descriptionMarkdownActionHandler;\n this.selectionDetailsPane.appendChild(this.renderDescriptionMarkdown(description, actionHandler));\n }\n else {\n this.selectionDetailsPane.innerText = description;\n }\n this.selectionDetailsPane.style.display = 'block';\n }\n else {\n this.selectionDetailsPane.style.display = 'none';\n }\n // Avoid recursion\n this._skipLayout = true;\n this.contextViewProvider.layout();\n this._skipLayout = false;\n }\n // List keyboard controller\n // List exit - active - hide ContextView dropdown, reset selection, return focus to parent select\n onEscape(e) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n // Reset selection to value when opened\n this.select(this._currentSelection);\n this.hideSelectDropDown(true);\n }\n // List exit - active - hide ContextView dropdown, return focus to parent select, fire onDidSelect if change\n onEnter(e) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n // Only fire if selection change\n if (this.selected !== this._currentSelection) {\n this._currentSelection = this.selected;\n this._onDidSelect.fire({\n index: this.selectElement.selectedIndex,\n selected: this.options[this.selected].text\n });\n if (!!this.options[this.selected] && !!this.options[this.selected].text) {\n this.selectElement.title = this.options[this.selected].text;\n }\n }\n this.hideSelectDropDown(true);\n }\n // List navigation - have to handle a disabled option (jump over)\n onDownArrow(e) {\n if (this.selected < this.options.length - 1) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true);\n // Skip disabled options\n const nextOptionDisabled = this.options[this.selected + 1].isDisabled;\n if (nextOptionDisabled && this.options.length > this.selected + 2) {\n this.selected += 2;\n }\n else if (nextOptionDisabled) {\n return;\n }\n else {\n this.selected++;\n }\n // Set focus/selection - only fire event when closing drop-down or on blur\n this.select(this.selected);\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n }\n }\n onUpArrow(e) {\n if (this.selected > 0) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true);\n // Skip disabled options\n const previousOptionDisabled = this.options[this.selected - 1].isDisabled;\n if (previousOptionDisabled && this.selected > 1) {\n this.selected -= 2;\n }\n else {\n this.selected--;\n }\n // Set focus/selection - only fire event when closing drop-down or on blur\n this.select(this.selected);\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n }\n }\n onPageUp(e) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n this.selectList.focusPreviousPage();\n // Allow scrolling to settle\n setTimeout(() => {\n this.selected = this.selectList.getFocus()[0];\n // Shift selection down if we land on a disabled option\n if (this.options[this.selected].isDisabled && this.selected < this.options.length - 1) {\n this.selected++;\n this.selectList.setFocus([this.selected]);\n }\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }, 1);\n }\n onPageDown(e) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n this.selectList.focusNextPage();\n // Allow scrolling to settle\n setTimeout(() => {\n this.selected = this.selectList.getFocus()[0];\n // Shift selection up if we land on a disabled option\n if (this.options[this.selected].isDisabled && this.selected > 0) {\n this.selected--;\n this.selectList.setFocus([this.selected]);\n }\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }, 1);\n }\n onHome(e) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n if (this.options.length < 2) {\n return;\n }\n this.selected = 0;\n if (this.options[this.selected].isDisabled && this.selected > 1) {\n this.selected++;\n }\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }\n onEnd(e) {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n if (this.options.length < 2) {\n return;\n }\n this.selected = this.options.length - 1;\n if (this.options[this.selected].isDisabled && this.selected > 1) {\n this.selected--;\n }\n this.selectList.setFocus([this.selected]);\n this.selectList.reveal(this.selected);\n this.select(this.selected);\n }\n // Mimic option first character navigation of native select\n onCharacter(e) {\n const ch = _common_keyCodes_js__WEBPACK_IMPORTED_MODULE_7__.KeyCodeUtils.toString(e.keyCode);\n let optionIndex = -1;\n for (let i = 0; i < this.options.length - 1; i++) {\n optionIndex = (i + this.selected + 1) % this.options.length;\n if (this.options[optionIndex].text.charAt(0).toUpperCase() === ch && !this.options[optionIndex].isDisabled) {\n this.select(optionIndex);\n this.selectList.setFocus([optionIndex]);\n this.selectList.reveal(this.selectList.getFocus()[0]);\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e);\n break;\n }\n }\n }\n dispose() {\n this.hideSelectDropDown(false);\n super.dispose();\n }\n}\nSelectBoxList.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN = 32;\nSelectBoxList.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN = 2;\nSelectBoxList.DEFAULT_MINIMUM_VISIBLE_OPTIONS = 3;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxNative.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxNative.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SelectBoxNative: () => (/* binding */ SelectBoxNative)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_platform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nclass SelectBoxNative extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__.Disposable {\n constructor(options, selected, styles, selectBoxOptions) {\n super();\n this.selected = 0;\n this.selectBoxOptions = selectBoxOptions || Object.create(null);\n this.options = [];\n this.selectElement = document.createElement('select');\n this.selectElement.className = 'monaco-select-box';\n if (typeof this.selectBoxOptions.ariaLabel === 'string') {\n this.selectElement.setAttribute('aria-label', this.selectBoxOptions.ariaLabel);\n }\n if (typeof this.selectBoxOptions.ariaDescription === 'string') {\n this.selectElement.setAttribute('aria-description', this.selectBoxOptions.ariaDescription);\n }\n this._onDidSelect = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_3__.Emitter());\n this.styles = styles;\n this.registerListeners();\n this.setOptions(options, selected);\n }\n registerListeners() {\n this._register(_touch_js__WEBPACK_IMPORTED_MODULE_1__.Gesture.addTarget(this.selectElement));\n [_touch_js__WEBPACK_IMPORTED_MODULE_1__.EventType.Tap].forEach(eventType => {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.selectElement, eventType, (e) => {\n this.selectElement.focus();\n }));\n });\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addStandardDisposableListener(this.selectElement, 'click', (e) => {\n _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventHelper.stop(e, true);\n }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addStandardDisposableListener(this.selectElement, 'change', (e) => {\n this.selectElement.title = e.target.value;\n this._onDidSelect.fire({\n index: e.target.selectedIndex,\n selected: e.target.value\n });\n }));\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addStandardDisposableListener(this.selectElement, 'keydown', (e) => {\n let showSelect = false;\n if (_common_platform_js__WEBPACK_IMPORTED_MODULE_5__.isMacintosh) {\n if (e.keyCode === 18 /* KeyCode.DownArrow */ || e.keyCode === 16 /* KeyCode.UpArrow */ || e.keyCode === 10 /* KeyCode.Space */) {\n showSelect = true;\n }\n }\n else {\n if (e.keyCode === 18 /* KeyCode.DownArrow */ && e.altKey || e.keyCode === 10 /* KeyCode.Space */ || e.keyCode === 3 /* KeyCode.Enter */) {\n showSelect = true;\n }\n }\n if (showSelect) {\n // Space, Enter, is used to expand select box, do not propagate it (prevent action bar action run)\n e.stopPropagation();\n }\n }));\n }\n get onDidSelect() {\n return this._onDidSelect.event;\n }\n setOptions(options, selected) {\n if (!this.options || !_common_arrays_js__WEBPACK_IMPORTED_MODULE_2__.equals(this.options, options)) {\n this.options = options;\n this.selectElement.options.length = 0;\n this.options.forEach((option, index) => {\n this.selectElement.add(this.createOption(option.text, index, option.isDisabled));\n });\n }\n if (selected !== undefined) {\n this.select(selected);\n }\n }\n select(index) {\n if (this.options.length === 0) {\n this.selected = 0;\n }\n else if (index >= 0 && index < this.options.length) {\n this.selected = index;\n }\n else if (index > this.options.length - 1) {\n // Adjust index to end of list\n // This could make client out of sync with the select\n this.select(this.options.length - 1);\n }\n else if (this.selected < 0) {\n this.selected = 0;\n }\n this.selectElement.selectedIndex = this.selected;\n if ((this.selected < this.options.length) && typeof this.options[this.selected].text === 'string') {\n this.selectElement.title = this.options[this.selected].text;\n }\n else {\n this.selectElement.title = '';\n }\n }\n focus() {\n if (this.selectElement) {\n this.selectElement.tabIndex = 0;\n this.selectElement.focus();\n }\n }\n blur() {\n if (this.selectElement) {\n this.selectElement.tabIndex = -1;\n this.selectElement.blur();\n }\n }\n setFocusable(focusable) {\n this.selectElement.tabIndex = focusable ? 0 : -1;\n }\n render(container) {\n container.classList.add('select-container');\n container.appendChild(this.selectElement);\n this.setOptions(this.options, this.selected);\n this.applyStyles();\n }\n applyStyles() {\n var _a, _b, _c;\n // Style native select\n if (this.selectElement) {\n this.selectElement.style.backgroundColor = (_a = this.styles.selectBackground) !== null && _a !== void 0 ? _a : '';\n this.selectElement.style.color = (_b = this.styles.selectForeground) !== null && _b !== void 0 ? _b : '';\n this.selectElement.style.borderColor = (_c = this.styles.selectBorder) !== null && _c !== void 0 ? _c : '';\n }\n }\n createOption(value, index, disabled) {\n const option = document.createElement('option');\n option.value = value;\n option.text = value;\n option.disabled = !!disabled;\n return option;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxNative.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Sizing: () => (/* binding */ Sizing),\n/* harmony export */ SplitView: () => (/* binding */ SplitView)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../event.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/event.js\");\n/* harmony import */ var _sash_sash_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../sash/sash.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js\");\n/* harmony import */ var _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scrollbar/scrollableElement.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_color_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/color.js */ \"./node_modules/monaco-editor/esm/vs/base/common/color.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_numbers_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/numbers.js */ \"./node_modules/monaco-editor/esm/vs/base/common/numbers.js\");\n/* harmony import */ var _common_scrollable_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/scrollable.js */ \"./node_modules/monaco-editor/esm/vs/base/common/scrollable.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _splitview_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./splitview.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\n\nconst defaultStyles = {\n separatorBorder: _common_color_js__WEBPACK_IMPORTED_MODULE_5__.Color.transparent\n};\nclass ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n setVisible(visible, size) {\n var _a, _b;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(this._cachedVisibleSize, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize = typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n (_b = (_a = this.view).setVisible) === null || _b === void 0 ? void 0 : _b.call(_a, visible);\n }\n get minimumSize() { return this.visible ? this.view.minimumSize : 0; }\n get viewMinimumSize() { return this.view.minimumSize; }\n get maximumSize() { return this.visible ? this.view.maximumSize : 0; }\n get viewMaximumSize() { return this.view.maximumSize; }\n get priority() { return this.view.priority; }\n get proportionalLayout() { var _a; return (_a = this.view.proportionalLayout) !== null && _a !== void 0 ? _a : true; }\n get snap() { return !!this.view.snap; }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n layout(offset, layoutContext) {\n this.layoutContainer(offset);\n this.view.layout(this.size, offset, layoutContext);\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\nclass VerticalViewItem extends ViewItem {\n layoutContainer(offset) {\n this.container.style.top = `${offset}px`;\n this.container.style.height = `${this.size}px`;\n }\n}\nclass HorizontalViewItem extends ViewItem {\n layoutContainer(offset) {\n this.container.style.left = `${offset}px`;\n this.container.style.width = `${this.size}px`;\n }\n}\nvar State;\n(function (State) {\n State[State[\"Idle\"] = 0] = \"Idle\";\n State[State[\"Busy\"] = 1] = \"Busy\";\n})(State || (State = {}));\nvar Sizing;\n(function (Sizing) {\n /**\n * When adding or removing views, distribute the delta space among\n * all other views.\n */\n Sizing.Distribute = { type: 'distribute' };\n /**\n * When adding or removing views, split the delta space with another\n * specific view, indexed by the provided `index`.\n */\n function Split(index) { return { type: 'split', index }; }\n Sizing.Split = Split;\n /**\n * When adding a view, use DistributeSizing when all pre-existing views are\n * distributed evenly, otherwise use SplitSizing.\n */\n function Auto(index) { return { type: 'auto', index }; }\n Sizing.Auto = Auto;\n /**\n * When adding or removing views, assume the view is invisible.\n */\n function Invisible(cachedVisibleSize) { return { type: 'invisible', cachedVisibleSize }; }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\n/**\n * The {@link SplitView} is the UI component which implements a one dimensional\n * flex-like layout algorithm for a collection of {@link IView} instances, which\n * are essentially HTMLElement instances with the following size constraints:\n *\n * - {@link IView.minimumSize}\n * - {@link IView.maximumSize}\n * - {@link IView.priority}\n * - {@link IView.snap}\n *\n * In case the SplitView doesn't have enough size to fit all views, it will overflow\n * its content with a scrollbar.\n *\n * In between each pair of views there will be a {@link Sash} allowing the user\n * to resize the views, making sure the constraints are respected.\n *\n * An optional {@link TLayoutContext layout context type} may be used in order to\n * pass along layout contextual data from the {@link SplitView.layout} method down\n * to each view's {@link IView.layout} calls.\n *\n * Features:\n * - Flex-like layout algorithm\n * - Snap support\n * - Orthogonal sash support, for corner sashes\n * - View hide/show support\n * - View swap/move support\n * - Alt key modifier behavior, macOS style\n */\nclass SplitView extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.Disposable {\n get orthogonalStartSash() { return this._orthogonalStartSash; }\n get orthogonalEndSash() { return this._orthogonalEndSash; }\n get startSnappingEnabled() { return this._startSnappingEnabled; }\n get endSnappingEnabled() { return this._endSnappingEnabled; }\n /**\n * A reference to a sash, perpendicular to all sashes in this {@link SplitView},\n * located at the left- or top-most side of the SplitView.\n * Corner sashes will be created automatically at the intersections.\n */\n set orthogonalStartSash(sash) {\n for (const sashItem of this.sashItems) {\n sashItem.sash.orthogonalStartSash = sash;\n }\n this._orthogonalStartSash = sash;\n }\n /**\n * A reference to a sash, perpendicular to all sashes in this {@link SplitView},\n * located at the right- or bottom-most side of the SplitView.\n * Corner sashes will be created automatically at the intersections.\n */\n set orthogonalEndSash(sash) {\n for (const sashItem of this.sashItems) {\n sashItem.sash.orthogonalEndSash = sash;\n }\n this._orthogonalEndSash = sash;\n }\n /**\n * Enable/disable snapping at the beginning of this {@link SplitView}.\n */\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n /**\n * Enable/disable snapping at the end of this {@link SplitView}.\n */\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n /**\n * Create a new {@link SplitView} instance.\n */\n constructor(container, options = {}) {\n var _a, _b, _c, _d, _e;\n super();\n this.size = 0;\n this.contentSize = 0;\n this.proportions = undefined;\n this.viewItems = [];\n this.sashItems = []; // used in tests\n this.state = State.Idle;\n this._onDidSashChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_6__.Emitter());\n this._onDidSashReset = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_6__.Emitter());\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n /**\n * Fires whenever the user resizes a {@link Sash sash}.\n */\n this.onDidSashChange = this._onDidSashChange.event;\n /**\n * Fires whenever the user double clicks a {@link Sash sash}.\n */\n this.onDidSashReset = this._onDidSashReset.event;\n this.orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : 0 /* Orientation.VERTICAL */;\n this.inverseAltBehavior = (_b = options.inverseAltBehavior) !== null && _b !== void 0 ? _b : false;\n this.proportionalLayout = (_c = options.proportionalLayout) !== null && _c !== void 0 ? _c : true;\n this.getSashOrthogonalSize = options.getSashOrthogonalSize;\n this.el = document.createElement('div');\n this.el.classList.add('monaco-split-view2');\n this.el.classList.add(this.orientation === 0 /* Orientation.VERTICAL */ ? 'vertical' : 'horizontal');\n container.appendChild(this.el);\n this.sashContainer = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(this.el, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.sash-container'));\n this.viewContainer = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.split-view-container');\n this.scrollable = new _common_scrollable_js__WEBPACK_IMPORTED_MODULE_9__.Scrollable({\n forceIntegerValues: true,\n smoothScrollDuration: 125,\n scheduleAtNextAnimationFrame: _dom_js__WEBPACK_IMPORTED_MODULE_0__.scheduleAtNextAnimationFrame\n });\n this.scrollableElement = this._register(new _scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_3__.SmoothScrollableElement(this.viewContainer, {\n vertical: this.orientation === 0 /* Orientation.VERTICAL */ ? ((_d = options.scrollbarVisibility) !== null && _d !== void 0 ? _d : 1 /* ScrollbarVisibility.Auto */) : 2 /* ScrollbarVisibility.Hidden */,\n horizontal: this.orientation === 1 /* Orientation.HORIZONTAL */ ? ((_e = options.scrollbarVisibility) !== null && _e !== void 0 ? _e : 1 /* ScrollbarVisibility.Auto */) : 2 /* ScrollbarVisibility.Hidden */\n }, this.scrollable));\n // https://github.com/microsoft/vscode/issues/157737\n const onDidScrollViewContainer = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.viewContainer, 'scroll')).event;\n this._register(onDidScrollViewContainer(_ => {\n const position = this.scrollableElement.getScrollPosition();\n const scrollLeft = Math.abs(this.viewContainer.scrollLeft - position.scrollLeft) <= 1 ? undefined : this.viewContainer.scrollLeft;\n const scrollTop = Math.abs(this.viewContainer.scrollTop - position.scrollTop) <= 1 ? undefined : this.viewContainer.scrollTop;\n if (scrollLeft !== undefined || scrollTop !== undefined) {\n this.scrollableElement.setScrollPosition({ scrollLeft, scrollTop });\n }\n }));\n this.onDidScroll = this.scrollableElement.onScroll;\n this._register(this.onDidScroll(e => {\n if (e.scrollTopChanged) {\n this.viewContainer.scrollTop = e.scrollTop;\n }\n if (e.scrollLeftChanged) {\n this.viewContainer.scrollLeft = e.scrollLeft;\n }\n }));\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(this.el, this.scrollableElement.getDomNode());\n this.style(options.styles || defaultStyles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this.size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = _common_types_js__WEBPACK_IMPORTED_MODULE_10__.isUndefined(viewDescriptor.visible) || viewDescriptor.visible ? viewDescriptor.size : { type: 'invisible', cachedVisibleSize: viewDescriptor.size };\n const view = viewDescriptor.view;\n this.doAddView(view, sizing, index, true);\n });\n // Initialize content size and proportions for first layout\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if (styles.separatorBorder.isTransparent()) {\n this.el.classList.remove('separator-border');\n this.el.style.removeProperty('--separator-border');\n }\n else {\n this.el.classList.add('separator-border');\n this.el.style.setProperty('--separator-border', styles.separatorBorder.toString());\n }\n }\n /**\n * Add a {@link IView view} to this {@link SplitView}.\n *\n * @param view The view to add.\n * @param size Either a fixed size, or a dynamic {@link Sizing} strategy.\n * @param index The index to insert the view on.\n * @param skipLayout Whether layout should be skipped.\n */\n addView(view, size, index = this.viewItems.length, skipLayout) {\n this.doAddView(view, size, index, skipLayout);\n }\n /**\n * Layout the {@link SplitView}.\n *\n * @param size The entire size of the {@link SplitView}.\n * @param layoutContext An optional layout context to pass along to {@link IView views}.\n */\n layout(size, layoutContext) {\n const previousSize = Math.max(this.size, this.contentSize);\n this.size = size;\n this.layoutContext = layoutContext;\n if (!this.proportions) {\n const indexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */);\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n item.size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(Math.round(proportion * size / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n saveProportions() {\n if (this.proportionalLayout && this.contentSize > 0) {\n this.proportions = this.viewItems.map(i => i.proportionalLayout ? i.size / this.contentSize : undefined);\n }\n }\n onSashStart({ sash, start, alt }) {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const index = this.sashItems.findIndex(item => item.sash === sash);\n // This way, we can press Alt while we resize a sash, macOS style!\n const disposable = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.combinedDisposable)((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(document.body, 'keydown', e => resetSashDragState(this.sashDragState.current, e.altKey)), (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener)(document.body, 'keyup', () => resetSashDragState(this.sashDragState.current, false)));\n const resetSashDragState = (start, alt) => {\n const sizes = this.viewItems.map(i => i.size);\n let minDelta = Number.NEGATIVE_INFINITY;\n let maxDelta = Number.POSITIVE_INFINITY;\n if (this.inverseAltBehavior) {\n alt = !alt;\n }\n if (alt) {\n // When we're using the last sash with Alt, we're resizing\n // the view to the left/up, instead of right/down as usual\n // Thus, we must do the inverse of the usual\n const isLastSash = index === this.sashItems.length - 1;\n if (isLastSash) {\n const viewItem = this.viewItems[index];\n minDelta = (viewItem.minimumSize - viewItem.size) / 2;\n maxDelta = (viewItem.maximumSize - viewItem.size) / 2;\n }\n else {\n const viewItem = this.viewItems[index + 1];\n minDelta = (viewItem.size - viewItem.maximumSize) / 2;\n maxDelta = (viewItem.size - viewItem.minimumSize) / 2;\n }\n }\n let snapBefore;\n let snapAfter;\n if (!alt) {\n const upIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index, -1);\n const downIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const viewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: viewItem.visible ? minDelta - halfSize : minDelta + halfSize,\n size: viewItem.size\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const viewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: viewItem.visible ? maxDelta + halfSize : maxDelta - halfSize,\n size: viewItem.size\n };\n }\n }\n this.sashDragState = { start, current: start, index, sizes, minDelta, maxDelta, alt, snapBefore, snapAfter, disposable };\n };\n resetSashDragState(start, alt);\n }\n onSashChange({ current }) {\n const { index, start, sizes, alt, minDelta, maxDelta, snapBefore, snapAfter } = this.sashDragState;\n this.sashDragState.current = current;\n const delta = current - start;\n const newDelta = this.resize(index, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n if (alt) {\n const isLastSash = index === this.sashItems.length - 1;\n const newSizes = this.viewItems.map(i => i.size);\n const viewItemIndex = isLastSash ? index : index + 1;\n const viewItem = this.viewItems[viewItemIndex];\n const newMinDelta = viewItem.size - viewItem.maximumSize;\n const newMaxDelta = viewItem.size - viewItem.minimumSize;\n const resizeIndex = isLastSash ? index - 1 : index + 1;\n this.resize(resizeIndex, -newDelta, newSizes, undefined, undefined, newMinDelta, newMaxDelta);\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n onSashEnd(index) {\n this._onDidSashChange.fire(index);\n this.sashDragState.disposable.dispose();\n this.saveProportions();\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n }\n onViewChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(size, item.minimumSize, item.maximumSize);\n if (this.inverseAltBehavior && index > 0) {\n // In this case, we want the view to grow or shrink both sides equally\n // so we just resize the \"left\" side by half and let `resize` do the clamping magic\n this.resize(index - 1, Math.floor((item.size - size) / 2));\n this.distributeEmptySpace();\n this.layoutViews();\n }\n else {\n item.size = size;\n this.relayout([index], undefined);\n }\n }\n /**\n * Resize a {@link IView view} within the {@link SplitView}.\n *\n * @param index The {@link IView view} index.\n * @param size The {@link IView view} size.\n */\n resizeView(index, size) {\n if (this.state !== State.Idle) {\n throw new Error('Cant modify splitview');\n }\n this.state = State.Busy;\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(this.viewItems.length).filter(i => i !== index);\n const lowPriorityIndexes = [...indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */), index];\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(size, item.minimumSize, Math.min(item.maximumSize, this.size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n this.state = State.Idle;\n }\n /**\n * Distribute the entire {@link SplitView} size among all {@link IView views}.\n */\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(size, item.minimumSize, item.maximumSize);\n }\n const indexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */);\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n /**\n * Returns the size of a {@link IView view}.\n */\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n doAddView(view, size, index = this.viewItems.length, skipLayout) {\n if (this.state !== State.Idle) {\n throw new Error('Cant modify splitview');\n }\n this.state = State.Busy;\n // Add view\n const container = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.split-view-view');\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n const onChangeDisposable = view.onDidChange(size => this.onViewChange(item, size));\n const containerDisposable = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.toDisposable)(() => this.viewContainer.removeChild(container));\n const disposable = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.combinedDisposable)(onChangeDisposable, containerDisposable);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else {\n if (size.type === 'auto') {\n if (this.areViewsDistributed()) {\n size = { type: 'distribute' };\n }\n else {\n size = { type: 'split', index: size.index };\n }\n }\n if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n }\n const item = this.orientation === 0 /* Orientation.VERTICAL */\n ? new VerticalViewItem(container, view, viewSize, disposable)\n : new HorizontalViewItem(container, view, viewSize, disposable);\n this.viewItems.splice(index, 0, item);\n // Add sash\n if (this.viewItems.length > 1) {\n const opts = { orthogonalStartSash: this.orthogonalStartSash, orthogonalEndSash: this.orthogonalEndSash };\n const sash = this.orientation === 0 /* Orientation.VERTICAL */\n ? new _sash_sash_js__WEBPACK_IMPORTED_MODULE_2__.Sash(this.sashContainer, { getHorizontalSashTop: s => this.getSashPosition(s), getHorizontalSashWidth: this.getSashOrthogonalSize }, Object.assign(Object.assign({}, opts), { orientation: 1 /* Orientation.HORIZONTAL */ }))\n : new _sash_sash_js__WEBPACK_IMPORTED_MODULE_2__.Sash(this.sashContainer, { getVerticalSashLeft: s => this.getSashPosition(s), getVerticalSashHeight: this.getSashOrthogonalSize }, Object.assign(Object.assign({}, opts), { orientation: 0 /* Orientation.VERTICAL */ }));\n const sashEventMapper = this.orientation === 0 /* Orientation.VERTICAL */\n ? (e) => ({ sash, start: e.startY, current: e.currentY, alt: e.altKey })\n : (e) => ({ sash, start: e.startX, current: e.currentX, alt: e.altKey });\n const onStart = _common_event_js__WEBPACK_IMPORTED_MODULE_6__.Event.map(sash.onDidStart, sashEventMapper);\n const onStartDisposable = onStart(this.onSashStart, this);\n const onChange = _common_event_js__WEBPACK_IMPORTED_MODULE_6__.Event.map(sash.onDidChange, sashEventMapper);\n const onChangeDisposable = onChange(this.onSashChange, this);\n const onEnd = _common_event_js__WEBPACK_IMPORTED_MODULE_6__.Event.map(sash.onDidEnd, () => this.sashItems.findIndex(item => item.sash === sash));\n const onEndDisposable = onEnd(this.onSashEnd, this);\n const onDidResetDisposable = sash.onDidReset(() => {\n const index = this.sashItems.findIndex(item => item.sash === sash);\n const upIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index, -1);\n const downIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible) {\n return;\n }\n if (typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible) {\n return;\n }\n this._onDidSashReset.fire(index);\n });\n const disposable = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.combinedDisposable)(onStartDisposable, onChangeDisposable, onEndDisposable, onDidResetDisposable, sash);\n const sashItem = { sash, disposable };\n this.sashItems.splice(index - 1, 0, sashItem);\n }\n container.appendChild(view.element);\n let highPriorityIndexes;\n if (typeof size !== 'number' && size.type === 'split') {\n highPriorityIndexes = [size.index];\n }\n if (!skipLayout) {\n this.relayout([index], highPriorityIndexes);\n }\n this.state = State.Idle;\n if (!skipLayout && typeof size !== 'number' && size.type === 'distribute') {\n this.distributeViewSizes();\n }\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this.size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n resize(index, delta, sizes = this.viewItems.map(i => i.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) {\n if (index < 0 || index >= this.viewItems.length) {\n return 0;\n }\n const upIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index, -1);\n const downIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index + 1, this.viewItems.length);\n if (highPriorityIndexes) {\n for (const index of highPriorityIndexes) {\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.pushToStart)(upIndexes, index);\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.pushToStart)(downIndexes, index);\n }\n }\n if (lowPriorityIndexes) {\n for (const index of lowPriorityIndexes) {\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.pushToEnd)(upIndexes, index);\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.pushToEnd)(downIndexes, index);\n }\n }\n const upItems = upIndexes.map(i => this.viewItems[i]);\n const upSizes = upIndexes.map(i => sizes[i]);\n const downItems = downIndexes.map(i => this.viewItems[i]);\n const downSizes = downIndexes.map(i => sizes[i]);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].maximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].maximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown, overloadMinDelta);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp, overloadMaxDelta);\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n delta = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(delta, minDelta, maxDelta);\n for (let i = 0, deltaUp = delta; i < upItems.length; i++) {\n const item = upItems[i];\n const size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n deltaUp -= viewDelta;\n item.size = size;\n }\n for (let i = 0, deltaDown = delta; i < downItems.length; i++) {\n const item = downItems[i];\n const size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n return delta;\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* LayoutPriority.Low */);\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* LayoutPriority.High */);\n for (const index of highPriorityIndexes) {\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.pushToStart)(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.pushToEnd)(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.pushToEnd)(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_8__.clamp)(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n layoutViews() {\n // Save new content size\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n // Layout views\n let offset = 0;\n for (const viewItem of this.viewItems) {\n viewItem.layout(offset, this.layoutContext);\n offset += viewItem.size;\n }\n // Layout sashes\n this.sashItems.forEach(item => item.sash.layout());\n this.updateSashEnablement();\n this.updateScrollableElement();\n }\n updateScrollableElement() {\n if (this.orientation === 0 /* Orientation.VERTICAL */) {\n this.scrollableElement.setScrollDimensions({\n height: this.size,\n scrollHeight: this.contentSize\n });\n }\n else {\n this.scrollableElement.setScrollDimensions({\n width: this.size,\n scrollWidth: this.contentSize\n });\n }\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map(i => previous = (i.size - i.minimumSize > 0) || previous);\n previous = false;\n const expandsDown = this.viewItems.map(i => previous = (i.maximumSize - i.size > 0) || previous);\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews.map(i => previous = (i.size - i.minimumSize > 0) || previous).reverse();\n previous = false;\n const expandsUp = reverseViews.map(i => previous = (i.maximumSize - i.size > 0) || previous).reverse();\n let position = 0;\n for (let index = 0; index < this.sashItems.length; index++) {\n const { sash } = this.sashItems[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index, -1);\n const downIndexes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_4__.range)(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore && collapsesUp[index] && (position > 0 || this.startSnappingEnabled)) {\n sash.state = 1 /* SashState.AtMinimum */;\n }\n else if (snappedAfter && collapsesDown[index] && (position < this.contentSize || this.endSnappingEnabled)) {\n sash.state = 2 /* SashState.AtMaximum */;\n }\n else {\n sash.state = 0 /* SashState.Disabled */;\n }\n }\n else if (min && !max) {\n sash.state = 1 /* SashState.AtMinimum */;\n }\n else if (!min && max) {\n sash.state = 2 /* SashState.AtMaximum */;\n }\n else {\n sash.state = 3 /* SashState.Enabled */;\n }\n }\n }\n getSashPosition(sash) {\n let position = 0;\n for (let i = 0; i < this.sashItems.length; i++) {\n position += this.viewItems[i].size;\n if (this.sashItems[i].sash === sash) {\n return position;\n }\n }\n return 0;\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible && viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n areViewsDistributed() {\n let min = undefined, max = undefined;\n for (const view of this.viewItems) {\n min = min === undefined ? view.size : Math.min(min, view.size);\n max = max === undefined ? view.size : Math.max(max, view.size);\n if (max - min > 2) {\n return false;\n }\n }\n return true;\n }\n dispose() {\n var _a;\n (_a = this.sashDragState) === null || _a === void 0 ? void 0 : _a.disposable.dispose();\n (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_7__.dispose)(this.viewItems);\n this.viewItems = [];\n this.sashItems.forEach(i => i.disposable.dispose());\n this.sashItems = [];\n super.dispose();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/table/tableWidget.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/table/tableWidget.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Table: () => (/* binding */ Table)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _list_listWidget_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../list/listWidget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js\");\n/* harmony import */ var _splitview_splitview_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../splitview/splitview.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _table_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./table.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nclass TableListRenderer {\n constructor(columns, renderers, getColumnSize) {\n this.columns = columns;\n this.getColumnSize = getColumnSize;\n this.templateId = TableListRenderer.TemplateId;\n this.renderedTemplates = new Set();\n const rendererMap = new Map(renderers.map(r => [r.templateId, r]));\n this.renderers = [];\n for (const column of columns) {\n const renderer = rendererMap.get(column.templateId);\n if (!renderer) {\n throw new Error(`Table cell renderer for template id ${column.templateId} not found.`);\n }\n this.renderers.push(renderer);\n }\n }\n renderTemplate(container) {\n const rowContainer = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(container, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-table-tr'));\n const cellContainers = [];\n const cellTemplateData = [];\n for (let i = 0; i < this.columns.length; i++) {\n const renderer = this.renderers[i];\n const cellContainer = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(rowContainer, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-table-td', { 'data-col-index': i }));\n cellContainer.style.width = `${this.getColumnSize(i)}px`;\n cellContainers.push(cellContainer);\n cellTemplateData.push(renderer.renderTemplate(cellContainer));\n }\n const result = { container, cellContainers, cellTemplateData };\n this.renderedTemplates.add(result);\n return result;\n }\n renderElement(element, index, templateData, height) {\n for (let i = 0; i < this.columns.length; i++) {\n const column = this.columns[i];\n const cell = column.project(element);\n const renderer = this.renderers[i];\n renderer.renderElement(cell, index, templateData.cellTemplateData[i], height);\n }\n }\n disposeElement(element, index, templateData, height) {\n for (let i = 0; i < this.columns.length; i++) {\n const renderer = this.renderers[i];\n if (renderer.disposeElement) {\n const column = this.columns[i];\n const cell = column.project(element);\n renderer.disposeElement(cell, index, templateData.cellTemplateData[i], height);\n }\n }\n }\n disposeTemplate(templateData) {\n for (let i = 0; i < this.columns.length; i++) {\n const renderer = this.renderers[i];\n renderer.disposeTemplate(templateData.cellTemplateData[i]);\n }\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode)(templateData.container);\n this.renderedTemplates.delete(templateData);\n }\n layoutColumn(index, size) {\n for (const { cellContainers } of this.renderedTemplates) {\n cellContainers[index].style.width = `${size}px`;\n }\n }\n}\nTableListRenderer.TemplateId = 'row';\nfunction asListVirtualDelegate(delegate) {\n return {\n getHeight(row) { return delegate.getHeight(row); },\n getTemplateId() { return TableListRenderer.TemplateId; },\n };\n}\nclass ColumnHeader {\n get minimumSize() { var _a; return (_a = this.column.minimumWidth) !== null && _a !== void 0 ? _a : 120; }\n get maximumSize() { var _a; return (_a = this.column.maximumWidth) !== null && _a !== void 0 ? _a : Number.POSITIVE_INFINITY; }\n get onDidChange() { var _a; return (_a = this.column.onDidChangeWidthConstraints) !== null && _a !== void 0 ? _a : _common_event_js__WEBPACK_IMPORTED_MODULE_3__.Event.None; }\n constructor(column, index) {\n this.column = column;\n this.index = index;\n this._onDidLayout = new _common_event_js__WEBPACK_IMPORTED_MODULE_3__.Emitter();\n this.onDidLayout = this._onDidLayout.event;\n this.element = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-table-th', { 'data-col-index': index, title: column.tooltip }, column.label);\n }\n layout(size) {\n this._onDidLayout.fire([this.index, size]);\n }\n}\nclass Table {\n get onDidChangeFocus() { return this.list.onDidChangeFocus; }\n get onDidChangeSelection() { return this.list.onDidChangeSelection; }\n get onMouseDblClick() { return this.list.onMouseDblClick; }\n get onPointer() { return this.list.onPointer; }\n get onDidFocus() { return this.list.onDidFocus; }\n get onDidDispose() { return this.list.onDidDispose; }\n constructor(user, container, virtualDelegate, columns, renderers, _options) {\n this.virtualDelegate = virtualDelegate;\n this.domId = `table_id_${++Table.InstanceCount}`;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__.DisposableStore();\n this.cachedWidth = 0;\n this.cachedHeight = 0;\n this.domNode = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(container, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)(`.monaco-table.${this.domId}`));\n const headers = columns.map((c, i) => new ColumnHeader(c, i));\n const descriptor = {\n size: headers.reduce((a, b) => a + b.column.weight, 0),\n views: headers.map(view => ({ size: view.column.weight, view }))\n };\n this.splitview = this.disposables.add(new _splitview_splitview_js__WEBPACK_IMPORTED_MODULE_2__.SplitView(this.domNode, {\n orientation: 1 /* Orientation.HORIZONTAL */,\n scrollbarVisibility: 2 /* ScrollbarVisibility.Hidden */,\n getSashOrthogonalSize: () => this.cachedHeight,\n descriptor\n }));\n this.splitview.el.style.height = `${virtualDelegate.headerRowHeight}px`;\n this.splitview.el.style.lineHeight = `${virtualDelegate.headerRowHeight}px`;\n const renderer = new TableListRenderer(columns, renderers, i => this.splitview.getViewSize(i));\n this.list = this.disposables.add(new _list_listWidget_js__WEBPACK_IMPORTED_MODULE_1__.List(user, this.domNode, asListVirtualDelegate(virtualDelegate), [renderer], _options));\n _common_event_js__WEBPACK_IMPORTED_MODULE_3__.Event.any(...headers.map(h => h.onDidLayout))(([index, size]) => renderer.layoutColumn(index, size), null, this.disposables);\n this.splitview.onDidSashReset(index => {\n const totalWeight = columns.reduce((r, c) => r + c.weight, 0);\n const size = columns[index].weight / totalWeight * this.cachedWidth;\n this.splitview.resizeView(index, size);\n }, null, this.disposables);\n this.styleElement = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.createStyleSheet)(this.domNode);\n this.style(_list_listWidget_js__WEBPACK_IMPORTED_MODULE_1__.unthemedListStyles);\n }\n updateOptions(options) {\n this.list.updateOptions(options);\n }\n splice(start, deleteCount, elements = []) {\n this.list.splice(start, deleteCount, elements);\n }\n getHTMLElement() {\n return this.domNode;\n }\n style(styles) {\n const content = [];\n content.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\ttop: ${this.virtualDelegate.headerRowHeight + 1}px;\n\t\t\theight: calc(100% - ${this.virtualDelegate.headerRowHeight}px);\n\t\t}`);\n this.styleElement.textContent = content.join('\\n');\n this.list.style(styles);\n }\n getSelectedElements() {\n return this.list.getSelectedElements();\n }\n getSelection() {\n return this.list.getSelection();\n }\n getFocus() {\n return this.list.getFocus();\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nTable.InstanceCount = 0;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/table/tableWidget.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js": +/*!****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Toggle: () => (/* binding */ Toggle),\n/* harmony export */ unthemedToggleStyles: () => (/* binding */ unthemedToggleStyles)\n/* harmony export */ });\n/* harmony import */ var _widget_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../widget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js\");\n/* harmony import */ var _common_themables_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _toggle_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toggle.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.css\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\nconst unthemedToggleStyles = {\n inputActiveOptionBorder: '#007ACC00',\n inputActiveOptionForeground: '#FFFFFF',\n inputActiveOptionBackground: '#0E639C50'\n};\nclass Toggle extends _widget_js__WEBPACK_IMPORTED_MODULE_0__.Widget {\n constructor(opts) {\n super();\n this._onChange = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Emitter());\n this.onChange = this._onChange.event;\n this._onKeyDown = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Emitter());\n this.onKeyDown = this._onKeyDown.event;\n this._opts = opts;\n this._checked = this._opts.isChecked;\n const classes = ['monaco-custom-toggle'];\n if (this._opts.icon) {\n this._icon = this._opts.icon;\n classes.push(..._common_themables_js__WEBPACK_IMPORTED_MODULE_1__.ThemeIcon.asClassNameArray(this._icon));\n }\n if (this._opts.actionClassName) {\n classes.push(...this._opts.actionClassName.split(' '));\n }\n if (this._checked) {\n classes.push('checked');\n }\n this.domNode = document.createElement('div');\n this.domNode.title = this._opts.title;\n this.domNode.classList.add(...classes);\n if (!this._opts.notFocusable) {\n this.domNode.tabIndex = 0;\n }\n this.domNode.setAttribute('role', 'checkbox');\n this.domNode.setAttribute('aria-checked', String(this._checked));\n this.domNode.setAttribute('aria-label', this._opts.title);\n this.applyStyles();\n this.onclick(this.domNode, (ev) => {\n if (this.enabled) {\n this.checked = !this._checked;\n this._onChange.fire(false);\n ev.preventDefault();\n }\n });\n this._register(this.ignoreGesture(this.domNode));\n this.onkeydown(this.domNode, (keyboardEvent) => {\n if (keyboardEvent.keyCode === 10 /* KeyCode.Space */ || keyboardEvent.keyCode === 3 /* KeyCode.Enter */) {\n this.checked = !this._checked;\n this._onChange.fire(true);\n keyboardEvent.preventDefault();\n keyboardEvent.stopPropagation();\n return;\n }\n this._onKeyDown.fire(keyboardEvent);\n });\n }\n get enabled() {\n return this.domNode.getAttribute('aria-disabled') !== 'true';\n }\n focus() {\n this.domNode.focus();\n }\n get checked() {\n return this._checked;\n }\n set checked(newIsChecked) {\n this._checked = newIsChecked;\n this.domNode.setAttribute('aria-checked', String(this._checked));\n this.domNode.classList.toggle('checked', this._checked);\n this.applyStyles();\n }\n width() {\n return 2 /*margin left*/ + 2 /*border*/ + 2 /*padding*/ + 16 /* icon width */;\n }\n applyStyles() {\n if (this.domNode) {\n this.domNode.style.borderColor = (this._checked && this._opts.inputActiveOptionBorder) || '';\n this.domNode.style.color = (this._checked && this._opts.inputActiveOptionForeground) || 'inherit';\n this.domNode.style.backgroundColor = (this._checked && this._opts.inputActiveOptionBackground) || '';\n }\n }\n enable() {\n this.domNode.setAttribute('aria-disabled', String(false));\n }\n disable() {\n this.domNode.setAttribute('aria-disabled', String(true));\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.js": +/*!******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ToggleMenuAction: () => (/* binding */ ToggleMenuAction),\n/* harmony export */ ToolBar: () => (/* binding */ ToolBar)\n/* harmony export */ });\n/* harmony import */ var _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actionbar/actionbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js\");\n/* harmony import */ var _dropdown_dropdownActionViewItem_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dropdown/dropdownActionViewItem.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js\");\n/* harmony import */ var _common_actions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/actions.js */ \"./node_modules/monaco-editor/esm/vs/base/common/actions.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/* harmony import */ var _common_themables_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _toolbar_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./toolbar.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n/**\n * A widget that combines an action bar for primary actions and a dropdown for secondary actions.\n */\nclass ToolBar extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.Disposable {\n constructor(container, contextMenuProvider, options = { orientation: 0 /* ActionsOrientation.HORIZONTAL */ }) {\n super();\n this.submenuActionViewItems = [];\n this.hasSecondaryActions = false;\n this._onDidChangeDropdownVisibility = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.EventMultiplexer());\n this.onDidChangeDropdownVisibility = this._onDidChangeDropdownVisibility.event;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.DisposableStore();\n this.options = options;\n this.lookupKeybindings = typeof this.options.getKeyBinding === 'function';\n this.toggleMenuAction = this._register(new ToggleMenuAction(() => { var _a; return (_a = this.toggleMenuActionViewItem) === null || _a === void 0 ? void 0 : _a.show(); }, options.toggleMenuTitle));\n this.element = document.createElement('div');\n this.element.className = 'monaco-toolbar';\n container.appendChild(this.element);\n this.actionBar = this._register(new _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_0__.ActionBar(this.element, {\n orientation: options.orientation,\n ariaLabel: options.ariaLabel,\n actionRunner: options.actionRunner,\n allowContextMenu: options.allowContextMenu,\n actionViewItemProvider: (action, viewItemOptions) => {\n var _a;\n if (action.id === ToggleMenuAction.ID) {\n this.toggleMenuActionViewItem = new _dropdown_dropdownActionViewItem_js__WEBPACK_IMPORTED_MODULE_1__.DropdownMenuActionViewItem(action, action.menuActions, contextMenuProvider, {\n actionViewItemProvider: this.options.actionViewItemProvider,\n actionRunner: this.actionRunner,\n keybindingProvider: this.options.getKeyBinding,\n classNames: _common_themables_js__WEBPACK_IMPORTED_MODULE_4__.ThemeIcon.asClassNameArray((_a = options.moreIcon) !== null && _a !== void 0 ? _a : _common_codicons_js__WEBPACK_IMPORTED_MODULE_3__.Codicon.toolBarMore),\n anchorAlignmentProvider: this.options.anchorAlignmentProvider,\n menuAsChild: !!this.options.renderDropdownAsChildElement,\n skipTelemetry: this.options.skipTelemetry\n });\n this.toggleMenuActionViewItem.setActionContext(this.actionBar.context);\n this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility));\n return this.toggleMenuActionViewItem;\n }\n if (options.actionViewItemProvider) {\n const result = options.actionViewItemProvider(action, viewItemOptions);\n if (result) {\n return result;\n }\n }\n if (action instanceof _common_actions_js__WEBPACK_IMPORTED_MODULE_2__.SubmenuAction) {\n const result = new _dropdown_dropdownActionViewItem_js__WEBPACK_IMPORTED_MODULE_1__.DropdownMenuActionViewItem(action, action.actions, contextMenuProvider, {\n actionViewItemProvider: this.options.actionViewItemProvider,\n actionRunner: this.actionRunner,\n keybindingProvider: this.options.getKeyBinding,\n classNames: action.class,\n anchorAlignmentProvider: this.options.anchorAlignmentProvider,\n menuAsChild: !!this.options.renderDropdownAsChildElement,\n skipTelemetry: this.options.skipTelemetry\n });\n result.setActionContext(this.actionBar.context);\n this.submenuActionViewItems.push(result);\n this.disposables.add(this._onDidChangeDropdownVisibility.add(result.onDidChangeVisibility));\n return result;\n }\n return undefined;\n }\n }));\n }\n set actionRunner(actionRunner) {\n this.actionBar.actionRunner = actionRunner;\n }\n get actionRunner() {\n return this.actionBar.actionRunner;\n }\n getElement() {\n return this.element;\n }\n getItemAction(indexOrElement) {\n return this.actionBar.getAction(indexOrElement);\n }\n setActions(primaryActions, secondaryActions) {\n this.clear();\n const primaryActionsToSet = primaryActions ? primaryActions.slice(0) : [];\n // Inject additional action to open secondary actions if present\n this.hasSecondaryActions = !!(secondaryActions && secondaryActions.length > 0);\n if (this.hasSecondaryActions && secondaryActions) {\n this.toggleMenuAction.menuActions = secondaryActions.slice(0);\n primaryActionsToSet.push(this.toggleMenuAction);\n }\n primaryActionsToSet.forEach(action => {\n this.actionBar.push(action, { icon: true, label: false, keybinding: this.getKeybindingLabel(action) });\n });\n }\n getKeybindingLabel(action) {\n var _a, _b;\n const key = this.lookupKeybindings ? (_b = (_a = this.options).getKeyBinding) === null || _b === void 0 ? void 0 : _b.call(_a, action) : undefined;\n return (0,_common_types_js__WEBPACK_IMPORTED_MODULE_7__.withNullAsUndefined)(key === null || key === void 0 ? void 0 : key.getLabel());\n }\n clear() {\n this.submenuActionViewItems = [];\n this.disposables.clear();\n this.actionBar.clear();\n }\n dispose() {\n this.clear();\n super.dispose();\n }\n}\nclass ToggleMenuAction extends _common_actions_js__WEBPACK_IMPORTED_MODULE_2__.Action {\n constructor(toggleDropdownMenu, title) {\n title = title || _nls_js__WEBPACK_IMPORTED_MODULE_9__.localize('moreActions', \"More Actions...\");\n super(ToggleMenuAction.ID, title, undefined, true);\n this._menuActions = [];\n this.toggleDropdownMenu = toggleDropdownMenu;\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () {\n this.toggleDropdownMenu();\n });\n }\n get menuActions() {\n return this._menuActions;\n }\n set menuActions(actions) {\n this._menuActions = actions;\n }\n}\nToggleMenuAction.ID = 'toolbar.toggle.more';\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbstractTree: () => (/* binding */ AbstractTree),\n/* harmony export */ ComposedTreeDelegate: () => (/* binding */ ComposedTreeDelegate),\n/* harmony export */ FuzzyToggle: () => (/* binding */ FuzzyToggle),\n/* harmony export */ ModeToggle: () => (/* binding */ ModeToggle),\n/* harmony export */ RenderIndentGuides: () => (/* binding */ RenderIndentGuides),\n/* harmony export */ TreeFindMatchType: () => (/* binding */ TreeFindMatchType),\n/* harmony export */ TreeFindMode: () => (/* binding */ TreeFindMode)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../event.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/event.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../actionbar/actionbar.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js\");\n/* harmony import */ var _findinput_findInput_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../findinput/findInput.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.js\");\n/* harmony import */ var _inputbox_inputBox_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../inputbox/inputBox.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js\");\n/* harmony import */ var _list_listView_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../list/listView.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js\");\n/* harmony import */ var _list_listWidget_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../list/listWidget.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js\");\n/* harmony import */ var _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../toggle/toggle.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js\");\n/* harmony import */ var _indexTreeModel_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./indexTreeModel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js\");\n/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./tree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js\");\n/* harmony import */ var _common_actions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/actions.js */ \"./node_modules/monaco-editor/esm/vs/base/common/actions.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/* harmony import */ var _common_themables_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../common/themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/* harmony import */ var _common_collections_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../common/collections.js */ \"./node_modules/monaco-editor/esm/vs/base/common/collections.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_filters_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../common/filters.js */ \"./node_modules/monaco-editor/esm/vs/base/common/filters.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_numbers_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../../common/numbers.js */ \"./node_modules/monaco-editor/esm/vs/base/common/numbers.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _media_tree_css__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./media/tree.css */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass TreeElementsDragAndDropData extends _list_listView_js__WEBPACK_IMPORTED_MODULE_6__.ElementsDragAndDropData {\n constructor(data) {\n super(data.elements.map(node => node.element));\n this.data = data;\n }\n}\nfunction asTreeDragAndDropData(data) {\n if (data instanceof _list_listView_js__WEBPACK_IMPORTED_MODULE_6__.ElementsDragAndDropData) {\n return new TreeElementsDragAndDropData(data);\n }\n return data;\n}\nclass TreeNodeListDragAndDrop {\n constructor(modelProvider, dnd) {\n this.modelProvider = modelProvider;\n this.dnd = dnd;\n this.autoExpandDisposable = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.Disposable.None;\n }\n getDragURI(node) {\n return this.dnd.getDragURI(node.element);\n }\n getDragLabel(nodes, originalEvent) {\n if (this.dnd.getDragLabel) {\n return this.dnd.getDragLabel(nodes.map(node => node.element), originalEvent);\n }\n return undefined;\n }\n onDragStart(data, originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, asTreeDragAndDropData(data), originalEvent);\n }\n onDragOver(data, targetNode, targetIndex, originalEvent, raw = true) {\n const result = this.dnd.onDragOver(asTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n const didChangeAutoExpandNode = this.autoExpandNode !== targetNode;\n if (didChangeAutoExpandNode) {\n this.autoExpandDisposable.dispose();\n this.autoExpandNode = targetNode;\n }\n if (typeof targetNode === 'undefined') {\n return result;\n }\n if (didChangeAutoExpandNode && typeof result !== 'boolean' && result.autoExpand) {\n this.autoExpandDisposable = (0,_common_async_js__WEBPACK_IMPORTED_MODULE_13__.disposableTimeout)(() => {\n const model = this.modelProvider();\n const ref = model.getNodeLocation(targetNode);\n if (model.isCollapsed(ref)) {\n model.setCollapsed(ref, false);\n }\n this.autoExpandNode = undefined;\n }, 500);\n }\n if (typeof result === 'boolean' || !result.accept || typeof result.bubble === 'undefined' || result.feedback) {\n if (!raw) {\n const accept = typeof result === 'boolean' ? result : result.accept;\n const effect = typeof result === 'boolean' ? undefined : result.effect;\n return { accept, effect, feedback: [targetIndex] };\n }\n return result;\n }\n if (result.bubble === 1 /* TreeDragOverBubble.Up */) {\n const model = this.modelProvider();\n const ref = model.getNodeLocation(targetNode);\n const parentRef = model.getParentNodeLocation(ref);\n const parentNode = model.getNode(parentRef);\n const parentIndex = parentRef && model.getListIndex(parentRef);\n return this.onDragOver(data, parentNode, parentIndex, originalEvent, false);\n }\n const model = this.modelProvider();\n const ref = model.getNodeLocation(targetNode);\n const start = model.getListIndex(ref);\n const length = model.getListRenderCount(ref);\n return Object.assign(Object.assign({}, result), { feedback: (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_12__.range)(start, start + length) });\n }\n drop(data, targetNode, targetIndex, originalEvent) {\n this.autoExpandDisposable.dispose();\n this.autoExpandNode = undefined;\n this.dnd.drop(asTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n }\n onDragEnd(originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, originalEvent);\n }\n}\nfunction asListOptions(modelProvider, options) {\n return options && Object.assign(Object.assign({}, options), { identityProvider: options.identityProvider && {\n getId(el) {\n return options.identityProvider.getId(el.element);\n }\n }, dnd: options.dnd && new TreeNodeListDragAndDrop(modelProvider, options.dnd), multipleSelectionController: options.multipleSelectionController && {\n isSelectionSingleChangeEvent(e) {\n return options.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n },\n isSelectionRangeChangeEvent(e) {\n return options.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n }\n }, accessibilityProvider: options.accessibilityProvider && Object.assign(Object.assign({}, options.accessibilityProvider), { getSetSize(node) {\n const model = modelProvider();\n const ref = model.getNodeLocation(node);\n const parentRef = model.getParentNodeLocation(ref);\n const parentNode = model.getNode(parentRef);\n return parentNode.visibleChildrenCount;\n },\n getPosInSet(node) {\n return node.visibleChildIndex + 1;\n }, isChecked: options.accessibilityProvider && options.accessibilityProvider.isChecked ? (node) => {\n return options.accessibilityProvider.isChecked(node.element);\n } : undefined, getRole: options.accessibilityProvider && options.accessibilityProvider.getRole ? (node) => {\n return options.accessibilityProvider.getRole(node.element);\n } : () => 'treeitem', getAriaLabel(e) {\n return options.accessibilityProvider.getAriaLabel(e.element);\n },\n getWidgetAriaLabel() {\n return options.accessibilityProvider.getWidgetAriaLabel();\n }, getWidgetRole: options.accessibilityProvider && options.accessibilityProvider.getWidgetRole ? () => options.accessibilityProvider.getWidgetRole() : () => 'tree', getAriaLevel: options.accessibilityProvider && options.accessibilityProvider.getAriaLevel ? (node) => options.accessibilityProvider.getAriaLevel(node.element) : (node) => {\n return node.depth;\n }, getActiveDescendantId: options.accessibilityProvider.getActiveDescendantId && (node => {\n return options.accessibilityProvider.getActiveDescendantId(node.element);\n }) }), keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, options.keyboardNavigationLabelProvider), { getKeyboardNavigationLabel(node) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(node.element);\n } }) });\n}\nclass ComposedTreeDelegate {\n constructor(delegate) {\n this.delegate = delegate;\n }\n getHeight(element) {\n return this.delegate.getHeight(element.element);\n }\n getTemplateId(element) {\n return this.delegate.getTemplateId(element.element);\n }\n hasDynamicHeight(element) {\n return !!this.delegate.hasDynamicHeight && this.delegate.hasDynamicHeight(element.element);\n }\n setDynamicHeight(element, height) {\n var _a, _b;\n (_b = (_a = this.delegate).setDynamicHeight) === null || _b === void 0 ? void 0 : _b.call(_a, element.element, height);\n }\n}\nvar RenderIndentGuides;\n(function (RenderIndentGuides) {\n RenderIndentGuides[\"None\"] = \"none\";\n RenderIndentGuides[\"OnHover\"] = \"onHover\";\n RenderIndentGuides[\"Always\"] = \"always\";\n})(RenderIndentGuides || (RenderIndentGuides = {}));\nclass EventCollection {\n get elements() {\n return this._elements;\n }\n constructor(onDidChange, _elements = []) {\n this._elements = _elements;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n this.onDidChange = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.forEach(onDidChange, elements => this._elements = elements, this.disposables);\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nclass TreeRenderer {\n constructor(renderer, modelProvider, onDidChangeCollapseState, activeNodes, renderedIndentGuides, options = {}) {\n var _a;\n this.renderer = renderer;\n this.modelProvider = modelProvider;\n this.activeNodes = activeNodes;\n this.renderedIndentGuides = renderedIndentGuides;\n this.renderedElements = new Map();\n this.renderedNodes = new Map();\n this.indent = TreeRenderer.DefaultIndent;\n this.hideTwistiesOfChildlessElements = false;\n this.shouldRenderIndentGuides = false;\n this.activeIndentNodes = new Set();\n this.indentGuidesDisposable = _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.Disposable.None;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n this.templateId = renderer.templateId;\n this.updateOptions(options);\n _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.map(onDidChangeCollapseState, e => e.node)(this.onDidChangeNodeTwistieState, this, this.disposables);\n (_a = renderer.onDidChangeTwistieState) === null || _a === void 0 ? void 0 : _a.call(renderer, this.onDidChangeTwistieState, this, this.disposables);\n }\n updateOptions(options = {}) {\n if (typeof options.indent !== 'undefined') {\n const indent = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_20__.clamp)(options.indent, 0, 40);\n if (indent !== this.indent) {\n this.indent = indent;\n for (const [node, templateData] of this.renderedNodes) {\n this.renderTreeElement(node, templateData);\n }\n }\n }\n if (typeof options.renderIndentGuides !== 'undefined') {\n const shouldRenderIndentGuides = options.renderIndentGuides !== RenderIndentGuides.None;\n if (shouldRenderIndentGuides !== this.shouldRenderIndentGuides) {\n this.shouldRenderIndentGuides = shouldRenderIndentGuides;\n for (const [node, templateData] of this.renderedNodes) {\n this._renderIndentGuides(node, templateData);\n }\n this.indentGuidesDisposable.dispose();\n if (shouldRenderIndentGuides) {\n const disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n this.activeNodes.onDidChange(this._onDidChangeActiveNodes, this, disposables);\n this.indentGuidesDisposable = disposables;\n this._onDidChangeActiveNodes(this.activeNodes.elements);\n }\n }\n }\n if (typeof options.hideTwistiesOfChildlessElements !== 'undefined') {\n this.hideTwistiesOfChildlessElements = options.hideTwistiesOfChildlessElements;\n }\n }\n renderTemplate(container) {\n const el = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(container, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-tl-row'));\n const indent = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(el, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-tl-indent'));\n const twistie = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(el, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-tl-twistie'));\n const contents = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.append)(el, (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.monaco-tl-contents'));\n const templateData = this.renderer.renderTemplate(contents);\n return { container, indent, twistie, indentGuidesDisposable: _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.Disposable.None, templateData };\n }\n renderElement(node, index, templateData, height) {\n this.renderedNodes.set(node, templateData);\n this.renderedElements.set(node.element, node);\n this.renderTreeElement(node, templateData);\n this.renderer.renderElement(node, index, templateData.templateData, height);\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b;\n templateData.indentGuidesDisposable.dispose();\n (_b = (_a = this.renderer).disposeElement) === null || _b === void 0 ? void 0 : _b.call(_a, node, index, templateData.templateData, height);\n if (typeof height === 'number') {\n this.renderedNodes.delete(node);\n this.renderedElements.delete(node.element);\n }\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.templateData);\n }\n onDidChangeTwistieState(element) {\n const node = this.renderedElements.get(element);\n if (!node) {\n return;\n }\n this.onDidChangeNodeTwistieState(node);\n }\n onDidChangeNodeTwistieState(node) {\n const templateData = this.renderedNodes.get(node);\n if (!templateData) {\n return;\n }\n this._onDidChangeActiveNodes(this.activeNodes.elements);\n this.renderTreeElement(node, templateData);\n }\n renderTreeElement(node, templateData) {\n const indent = TreeRenderer.DefaultIndent + (node.depth - 1) * this.indent;\n templateData.twistie.style.paddingLeft = `${indent}px`;\n templateData.indent.style.width = `${indent + this.indent - 16}px`;\n if (node.collapsible) {\n templateData.container.setAttribute('aria-expanded', String(!node.collapsed));\n }\n else {\n templateData.container.removeAttribute('aria-expanded');\n }\n templateData.twistie.classList.remove(..._common_themables_js__WEBPACK_IMPORTED_MODULE_15__.ThemeIcon.asClassNameArray(_common_codicons_js__WEBPACK_IMPORTED_MODULE_14__.Codicon.treeItemExpanded));\n let twistieRendered = false;\n if (this.renderer.renderTwistie) {\n twistieRendered = this.renderer.renderTwistie(node.element, templateData.twistie);\n }\n if (node.collapsible && (!this.hideTwistiesOfChildlessElements || node.visibleChildrenCount > 0)) {\n if (!twistieRendered) {\n templateData.twistie.classList.add(..._common_themables_js__WEBPACK_IMPORTED_MODULE_15__.ThemeIcon.asClassNameArray(_common_codicons_js__WEBPACK_IMPORTED_MODULE_14__.Codicon.treeItemExpanded));\n }\n templateData.twistie.classList.add('collapsible');\n templateData.twistie.classList.toggle('collapsed', node.collapsed);\n }\n else {\n templateData.twistie.classList.remove('collapsible', 'collapsed');\n }\n this._renderIndentGuides(node, templateData);\n }\n _renderIndentGuides(node, templateData) {\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.clearNode)(templateData.indent);\n templateData.indentGuidesDisposable.dispose();\n if (!this.shouldRenderIndentGuides) {\n return;\n }\n const disposableStore = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n const model = this.modelProvider();\n while (true) {\n const ref = model.getNodeLocation(node);\n const parentRef = model.getParentNodeLocation(ref);\n if (!parentRef) {\n break;\n }\n const parent = model.getNode(parentRef);\n const guide = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.$)('.indent-guide', { style: `width: ${this.indent}px` });\n if (this.activeIndentNodes.has(parent)) {\n guide.classList.add('active');\n }\n if (templateData.indent.childElementCount === 0) {\n templateData.indent.appendChild(guide);\n }\n else {\n templateData.indent.insertBefore(guide, templateData.indent.firstElementChild);\n }\n this.renderedIndentGuides.add(parent, guide);\n disposableStore.add((0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.toDisposable)(() => this.renderedIndentGuides.delete(parent, guide)));\n node = parent;\n }\n templateData.indentGuidesDisposable = disposableStore;\n }\n _onDidChangeActiveNodes(nodes) {\n if (!this.shouldRenderIndentGuides) {\n return;\n }\n const set = new Set();\n const model = this.modelProvider();\n nodes.forEach(node => {\n const ref = model.getNodeLocation(node);\n try {\n const parentRef = model.getParentNodeLocation(ref);\n if (node.collapsible && node.children.length > 0 && !node.collapsed) {\n set.add(node);\n }\n else if (parentRef) {\n set.add(model.getNode(parentRef));\n }\n }\n catch (_a) {\n // noop\n }\n });\n this.activeIndentNodes.forEach(node => {\n if (!set.has(node)) {\n this.renderedIndentGuides.forEach(node, line => line.classList.remove('active'));\n }\n });\n set.forEach(node => {\n if (!this.activeIndentNodes.has(node)) {\n this.renderedIndentGuides.forEach(node, line => line.classList.add('active'));\n }\n });\n this.activeIndentNodes = set;\n }\n dispose() {\n this.renderedNodes.clear();\n this.renderedElements.clear();\n this.indentGuidesDisposable.dispose();\n (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.dispose)(this.disposables);\n }\n}\nTreeRenderer.DefaultIndent = 8;\nclass FindFilter {\n get totalCount() { return this._totalCount; }\n get matchCount() { return this._matchCount; }\n constructor(tree, keyboardNavigationLabelProvider, _filter) {\n this.tree = tree;\n this.keyboardNavigationLabelProvider = keyboardNavigationLabelProvider;\n this._filter = _filter;\n this._totalCount = 0;\n this._matchCount = 0;\n this._pattern = '';\n this._lowercasePattern = '';\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n tree.onWillRefilter(this.reset, this, this.disposables);\n }\n filter(element, parentVisibility) {\n let visibility = 1 /* TreeVisibility.Visible */;\n if (this._filter) {\n const result = this._filter.filter(element, parentVisibility);\n if (typeof result === 'boolean') {\n visibility = result ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */;\n }\n else if ((0,_indexTreeModel_js__WEBPACK_IMPORTED_MODULE_9__.isFilterResult)(result)) {\n visibility = (0,_indexTreeModel_js__WEBPACK_IMPORTED_MODULE_9__.getVisibleState)(result.visibility);\n }\n else {\n visibility = result;\n }\n if (visibility === 0 /* TreeVisibility.Hidden */) {\n return false;\n }\n }\n this._totalCount++;\n if (!this._pattern) {\n this._matchCount++;\n return { data: _common_filters_js__WEBPACK_IMPORTED_MODULE_18__.FuzzyScore.Default, visibility };\n }\n const label = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(element);\n const labels = Array.isArray(label) ? label : [label];\n for (const l of labels) {\n const labelStr = l && l.toString();\n if (typeof labelStr === 'undefined') {\n return { data: _common_filters_js__WEBPACK_IMPORTED_MODULE_18__.FuzzyScore.Default, visibility };\n }\n let score;\n if (this.tree.findMatchType === TreeFindMatchType.Contiguous) {\n const index = labelStr.toLowerCase().indexOf(this._lowercasePattern);\n if (index > -1) {\n score = [Number.MAX_SAFE_INTEGER, 0];\n for (let i = this._lowercasePattern.length; i > 0; i--) {\n score.push(index + i - 1);\n }\n }\n }\n else {\n score = (0,_common_filters_js__WEBPACK_IMPORTED_MODULE_18__.fuzzyScore)(this._pattern, this._lowercasePattern, 0, labelStr, labelStr.toLowerCase(), 0, { firstMatchCanBeWeak: true, boostFullMatch: true });\n }\n if (score) {\n this._matchCount++;\n return labels.length === 1 ?\n { data: score, visibility } :\n { data: { label: labelStr, score: score }, visibility };\n }\n }\n if (this.tree.findMode === TreeFindMode.Filter) {\n if (typeof this.tree.options.defaultFindVisibility === 'number') {\n return this.tree.options.defaultFindVisibility;\n }\n else if (this.tree.options.defaultFindVisibility) {\n return this.tree.options.defaultFindVisibility(element);\n }\n else {\n return 2 /* TreeVisibility.Recurse */;\n }\n }\n else {\n return { data: _common_filters_js__WEBPACK_IMPORTED_MODULE_18__.FuzzyScore.Default, visibility };\n }\n }\n reset() {\n this._totalCount = 0;\n this._matchCount = 0;\n }\n dispose() {\n (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.dispose)(this.disposables);\n }\n}\nclass ModeToggle extends _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_8__.Toggle {\n constructor(opts) {\n var _a;\n super({\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_14__.Codicon.listFilter,\n title: (0,_nls_js__WEBPACK_IMPORTED_MODULE_23__.localize)('filter', \"Filter\"),\n isChecked: (_a = opts.isChecked) !== null && _a !== void 0 ? _a : false,\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts.inputActiveOptionBackground\n });\n }\n}\nclass FuzzyToggle extends _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_8__.Toggle {\n constructor(opts) {\n var _a;\n super({\n icon: _common_codicons_js__WEBPACK_IMPORTED_MODULE_14__.Codicon.searchFuzzy,\n title: (0,_nls_js__WEBPACK_IMPORTED_MODULE_23__.localize)('fuzzySearch', \"Fuzzy Match\"),\n isChecked: (_a = opts.isChecked) !== null && _a !== void 0 ? _a : false,\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts.inputActiveOptionBackground\n });\n }\n}\nconst unthemedFindWidgetStyles = {\n inputBoxStyles: _inputbox_inputBox_js__WEBPACK_IMPORTED_MODULE_5__.unthemedInboxStyles,\n toggleStyles: _toggle_toggle_js__WEBPACK_IMPORTED_MODULE_8__.unthemedToggleStyles,\n listFilterWidgetBackground: undefined,\n listFilterWidgetNoMatchesOutline: undefined,\n listFilterWidgetOutline: undefined,\n listFilterWidgetShadow: undefined\n};\nvar TreeFindMode;\n(function (TreeFindMode) {\n TreeFindMode[TreeFindMode[\"Highlight\"] = 0] = \"Highlight\";\n TreeFindMode[TreeFindMode[\"Filter\"] = 1] = \"Filter\";\n})(TreeFindMode || (TreeFindMode = {}));\nvar TreeFindMatchType;\n(function (TreeFindMatchType) {\n TreeFindMatchType[TreeFindMatchType[\"Fuzzy\"] = 0] = \"Fuzzy\";\n TreeFindMatchType[TreeFindMatchType[\"Contiguous\"] = 1] = \"Contiguous\";\n})(TreeFindMatchType || (TreeFindMatchType = {}));\nclass FindWidget extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.Disposable {\n set mode(mode) {\n this.modeToggle.checked = mode === TreeFindMode.Filter;\n this.findInput.inputBox.setPlaceHolder(mode === TreeFindMode.Filter ? (0,_nls_js__WEBPACK_IMPORTED_MODULE_23__.localize)('type to filter', \"Type to filter\") : (0,_nls_js__WEBPACK_IMPORTED_MODULE_23__.localize)('type to search', \"Type to search\"));\n }\n set matchType(matchType) {\n this.matchTypeToggle.checked = matchType === TreeFindMatchType.Fuzzy;\n }\n constructor(container, tree, contextViewProvider, mode, matchType, options) {\n var _a;\n super();\n this.tree = tree;\n this.elements = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.h)('.monaco-tree-type-filter', [\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.h)('.monaco-tree-type-filter-grab.codicon.codicon-debug-gripper@grab', { tabIndex: 0 }),\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.h)('.monaco-tree-type-filter-input@findInput'),\n (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.h)('.monaco-tree-type-filter-actionbar@actionbar'),\n ]);\n this.width = 0;\n this.right = 0;\n this.top = 0;\n this._onDidDisable = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n container.appendChild(this.elements.root);\n this._register((0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.toDisposable)(() => container.removeChild(this.elements.root)));\n const styles = (_a = options === null || options === void 0 ? void 0 : options.styles) !== null && _a !== void 0 ? _a : unthemedFindWidgetStyles;\n if (styles.listFilterWidgetBackground) {\n this.elements.root.style.backgroundColor = styles.listFilterWidgetBackground;\n }\n if (styles.listFilterWidgetShadow) {\n this.elements.root.style.boxShadow = `0 0 8px 2px ${styles.listFilterWidgetShadow}`;\n }\n this.modeToggle = this._register(new ModeToggle(Object.assign(Object.assign({}, styles.toggleStyles), { isChecked: mode === TreeFindMode.Filter })));\n this.matchTypeToggle = this._register(new FuzzyToggle(Object.assign(Object.assign({}, styles.toggleStyles), { isChecked: matchType === TreeFindMatchType.Fuzzy })));\n this.onDidChangeMode = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.map(this.modeToggle.onChange, () => this.modeToggle.checked ? TreeFindMode.Filter : TreeFindMode.Highlight, this._store);\n this.onDidChangeMatchType = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.map(this.matchTypeToggle.onChange, () => this.matchTypeToggle.checked ? TreeFindMatchType.Fuzzy : TreeFindMatchType.Contiguous, this._store);\n this.findInput = this._register(new _findinput_findInput_js__WEBPACK_IMPORTED_MODULE_4__.FindInput(this.elements.findInput, contextViewProvider, {\n label: (0,_nls_js__WEBPACK_IMPORTED_MODULE_23__.localize)('type to search', \"Type to search\"),\n additionalToggles: [this.modeToggle, this.matchTypeToggle],\n showCommonFindToggles: false,\n inputBoxStyles: styles.inputBoxStyles,\n toggleStyles: styles.toggleStyles,\n history: options === null || options === void 0 ? void 0 : options.history\n }));\n this.actionbar = this._register(new _actionbar_actionbar_js__WEBPACK_IMPORTED_MODULE_3__.ActionBar(this.elements.actionbar));\n this.mode = mode;\n const emitter = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.findInput.inputBox.inputElement, 'keydown'));\n const onKeyDown = this._register(_common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.chain(emitter.event))\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e))\n .event;\n this._register(onKeyDown((e) => {\n // Using equals() so we reserve modified keys for future use\n if (e.equals(3 /* KeyCode.Enter */)) {\n // This is the only keyboard way to return to the tree from a history item that isn't the last one\n e.preventDefault();\n e.stopPropagation();\n this.findInput.inputBox.addToHistory();\n this.tree.domFocus();\n return;\n }\n if (e.equals(18 /* KeyCode.DownArrow */)) {\n e.preventDefault();\n e.stopPropagation();\n if (this.findInput.inputBox.isAtLastInHistory() || this.findInput.inputBox.isNowhereInHistory()) {\n // Retain original pre-history DownArrow behavior\n this.findInput.inputBox.addToHistory();\n this.tree.domFocus();\n }\n else {\n // Downward through history\n this.findInput.inputBox.showNextValue();\n }\n return;\n }\n if (e.equals(16 /* KeyCode.UpArrow */)) {\n e.preventDefault();\n e.stopPropagation();\n // Upward through history\n this.findInput.inputBox.showPreviousValue();\n return;\n }\n }));\n const closeAction = this._register(new _common_actions_js__WEBPACK_IMPORTED_MODULE_11__.Action('close', (0,_nls_js__WEBPACK_IMPORTED_MODULE_23__.localize)('close', \"Close\"), 'codicon codicon-close', true, () => this.dispose()));\n this.actionbar.push(closeAction, { icon: true, label: false });\n const onGrabMouseDown = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.elements.grab, 'mousedown'));\n this._register(onGrabMouseDown.event(e => {\n const disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n const onWindowMouseMove = disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(window, 'mousemove'));\n const onWindowMouseUp = disposables.add(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(window, 'mouseup'));\n const startRight = this.right;\n const startX = e.pageX;\n const startTop = this.top;\n const startY = e.pageY;\n this.elements.grab.classList.add('grabbing');\n const transition = this.elements.root.style.transition;\n this.elements.root.style.transition = 'unset';\n const update = (e) => {\n const deltaX = e.pageX - startX;\n this.right = startRight - deltaX;\n const deltaY = e.pageY - startY;\n this.top = startTop + deltaY;\n this.layout();\n };\n disposables.add(onWindowMouseMove.event(update));\n disposables.add(onWindowMouseUp.event(e => {\n update(e);\n this.elements.grab.classList.remove('grabbing');\n this.elements.root.style.transition = transition;\n disposables.dispose();\n }));\n }));\n const onGrabKeyDown = this._register(_common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.chain(this._register(new _event_js__WEBPACK_IMPORTED_MODULE_1__.DomEmitter(this.elements.grab, 'keydown')).event))\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e))\n .event;\n this._register(onGrabKeyDown((e) => {\n let right;\n let top;\n if (e.keyCode === 15 /* KeyCode.LeftArrow */) {\n right = Number.POSITIVE_INFINITY;\n }\n else if (e.keyCode === 17 /* KeyCode.RightArrow */) {\n right = 0;\n }\n else if (e.keyCode === 10 /* KeyCode.Space */) {\n right = this.right === 0 ? Number.POSITIVE_INFINITY : 0;\n }\n if (e.keyCode === 16 /* KeyCode.UpArrow */) {\n top = 0;\n }\n else if (e.keyCode === 18 /* KeyCode.DownArrow */) {\n top = Number.POSITIVE_INFINITY;\n }\n if (right !== undefined) {\n e.preventDefault();\n e.stopPropagation();\n this.right = right;\n this.layout();\n }\n if (top !== undefined) {\n e.preventDefault();\n e.stopPropagation();\n this.top = top;\n const transition = this.elements.root.style.transition;\n this.elements.root.style.transition = 'unset';\n this.layout();\n setTimeout(() => {\n this.elements.root.style.transition = transition;\n }, 0);\n }\n }));\n this.onDidChangeValue = this.findInput.onDidChange;\n }\n layout(width = this.width) {\n this.width = width;\n this.right = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_20__.clamp)(this.right, 0, Math.max(0, width - 212));\n this.elements.root.style.right = `${this.right}px`;\n this.top = (0,_common_numbers_js__WEBPACK_IMPORTED_MODULE_20__.clamp)(this.top, 0, 24);\n this.elements.root.style.top = `${this.top}px`;\n }\n showMessage(message) {\n this.findInput.showMessage(message);\n }\n clearMessage() {\n this.findInput.clearMessage();\n }\n dispose() {\n const _super = Object.create(null, {\n dispose: { get: () => super.dispose }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this._onDidDisable.fire();\n this.elements.root.classList.add('disabled');\n yield (0,_common_async_js__WEBPACK_IMPORTED_MODULE_13__.timeout)(300);\n _super.dispose.call(this);\n });\n }\n}\nclass FindController {\n get pattern() { return this._pattern; }\n get mode() { return this._mode; }\n set mode(mode) {\n if (mode === this._mode) {\n return;\n }\n this._mode = mode;\n if (this.widget) {\n this.widget.mode = this._mode;\n }\n this.tree.refilter();\n this.render();\n this._onDidChangeMode.fire(mode);\n }\n get matchType() { return this._matchType; }\n set matchType(matchType) {\n if (matchType === this._matchType) {\n return;\n }\n this._matchType = matchType;\n if (this.widget) {\n this.widget.matchType = this._matchType;\n }\n this.tree.refilter();\n this.render();\n this._onDidChangeMatchType.fire(matchType);\n }\n constructor(tree, model, view, filter, contextViewProvider, options = {}) {\n var _a, _b;\n this.tree = tree;\n this.view = view;\n this.filter = filter;\n this.contextViewProvider = contextViewProvider;\n this.options = options;\n this._pattern = '';\n this.width = 0;\n this._onDidChangeMode = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n this.onDidChangeMode = this._onDidChangeMode.event;\n this._onDidChangeMatchType = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n this.onDidChangeMatchType = this._onDidChangeMatchType.event;\n this._onDidChangePattern = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n this._onDidChangeOpenState = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n this.onDidChangeOpenState = this._onDidChangeOpenState.event;\n this.enabledDisposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n this._mode = (_a = tree.options.defaultFindMode) !== null && _a !== void 0 ? _a : TreeFindMode.Highlight;\n this._matchType = (_b = tree.options.defaultFindMatchType) !== null && _b !== void 0 ? _b : TreeFindMatchType.Fuzzy;\n model.onDidSplice(this.onDidSpliceModel, this, this.disposables);\n }\n updateOptions(optionsUpdate = {}) {\n if (optionsUpdate.defaultFindMode !== undefined) {\n this.mode = optionsUpdate.defaultFindMode;\n }\n if (optionsUpdate.defaultFindMatchType !== undefined) {\n this.matchType = optionsUpdate.defaultFindMatchType;\n }\n }\n onDidSpliceModel() {\n if (!this.widget || this.pattern.length === 0) {\n return;\n }\n this.tree.refilter();\n this.render();\n }\n render() {\n var _a, _b, _c, _d;\n const noMatches = this.filter.totalCount > 0 && this.filter.matchCount === 0;\n if (this.pattern && noMatches) {\n if ((_a = this.tree.options.showNotFoundMessage) !== null && _a !== void 0 ? _a : true) {\n (_b = this.widget) === null || _b === void 0 ? void 0 : _b.showMessage({ type: 2 /* MessageType.WARNING */, content: (0,_nls_js__WEBPACK_IMPORTED_MODULE_23__.localize)('not found', \"No elements found.\") });\n }\n else {\n (_c = this.widget) === null || _c === void 0 ? void 0 : _c.showMessage({ type: 2 /* MessageType.WARNING */ });\n }\n }\n else {\n (_d = this.widget) === null || _d === void 0 ? void 0 : _d.clearMessage();\n }\n }\n shouldAllowFocus(node) {\n if (!this.widget || !this.pattern || this._mode === TreeFindMode.Filter) {\n return true;\n }\n if (this.filter.totalCount > 0 && this.filter.matchCount <= 1) {\n return true;\n }\n return !_common_filters_js__WEBPACK_IMPORTED_MODULE_18__.FuzzyScore.isDefault(node.filterData);\n }\n layout(width) {\n var _a;\n this.width = width;\n (_a = this.widget) === null || _a === void 0 ? void 0 : _a.layout(width);\n }\n dispose() {\n this._history = undefined;\n this._onDidChangePattern.dispose();\n this.enabledDisposables.dispose();\n this.disposables.dispose();\n }\n}\nfunction asTreeMouseEvent(event) {\n let target = _tree_js__WEBPACK_IMPORTED_MODULE_10__.TreeMouseEventTarget.Unknown;\n if ((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.hasParentWithClass)(event.browserEvent.target, 'monaco-tl-twistie', 'monaco-tl-row')) {\n target = _tree_js__WEBPACK_IMPORTED_MODULE_10__.TreeMouseEventTarget.Twistie;\n }\n else if ((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.hasParentWithClass)(event.browserEvent.target, 'monaco-tl-contents', 'monaco-tl-row')) {\n target = _tree_js__WEBPACK_IMPORTED_MODULE_10__.TreeMouseEventTarget.Element;\n }\n else if ((0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.hasParentWithClass)(event.browserEvent.target, 'monaco-tree-type-filter', 'monaco-list')) {\n target = _tree_js__WEBPACK_IMPORTED_MODULE_10__.TreeMouseEventTarget.Filter;\n }\n return {\n browserEvent: event.browserEvent,\n element: event.element ? event.element.element : null,\n target\n };\n}\nfunction dfs(node, fn) {\n fn(node);\n node.children.forEach(child => dfs(child, fn));\n}\n/**\n * The trait concept needs to exist at the tree level, because collapsed\n * tree nodes will not be known by the list.\n */\nclass Trait {\n get nodeSet() {\n if (!this._nodeSet) {\n this._nodeSet = this.createNodeSet();\n }\n return this._nodeSet;\n }\n constructor(getFirstViewElementWithTrait, identityProvider) {\n this.getFirstViewElementWithTrait = getFirstViewElementWithTrait;\n this.identityProvider = identityProvider;\n this.nodes = [];\n this._onDidChange = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n this.onDidChange = this._onDidChange.event;\n }\n set(nodes, browserEvent) {\n if (!(browserEvent === null || browserEvent === void 0 ? void 0 : browserEvent.__forceEvent) && (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_12__.equals)(this.nodes, nodes)) {\n return;\n }\n this._set(nodes, false, browserEvent);\n }\n _set(nodes, silent, browserEvent) {\n this.nodes = [...nodes];\n this.elements = undefined;\n this._nodeSet = undefined;\n if (!silent) {\n const that = this;\n this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent });\n }\n }\n get() {\n if (!this.elements) {\n this.elements = this.nodes.map(node => node.element);\n }\n return [...this.elements];\n }\n getNodes() {\n return this.nodes;\n }\n has(node) {\n return this.nodeSet.has(node);\n }\n onDidModelSplice({ insertedNodes, deletedNodes }) {\n if (!this.identityProvider) {\n const set = this.createNodeSet();\n const visit = (node) => set.delete(node);\n deletedNodes.forEach(node => dfs(node, visit));\n this.set([...set.values()]);\n return;\n }\n const deletedNodesIdSet = new Set();\n const deletedNodesVisitor = (node) => deletedNodesIdSet.add(this.identityProvider.getId(node.element).toString());\n deletedNodes.forEach(node => dfs(node, deletedNodesVisitor));\n const insertedNodesMap = new Map();\n const insertedNodesVisitor = (node) => insertedNodesMap.set(this.identityProvider.getId(node.element).toString(), node);\n insertedNodes.forEach(node => dfs(node, insertedNodesVisitor));\n const nodes = [];\n for (const node of this.nodes) {\n const id = this.identityProvider.getId(node.element).toString();\n const wasDeleted = deletedNodesIdSet.has(id);\n if (!wasDeleted) {\n nodes.push(node);\n }\n else {\n const insertedNode = insertedNodesMap.get(id);\n if (insertedNode && insertedNode.visible) {\n nodes.push(insertedNode);\n }\n }\n }\n if (this.nodes.length > 0 && nodes.length === 0) {\n const node = this.getFirstViewElementWithTrait();\n if (node) {\n nodes.push(node);\n }\n }\n this._set(nodes, true);\n }\n createNodeSet() {\n const set = new Set();\n for (const node of this.nodes) {\n set.add(node);\n }\n return set;\n }\n}\nclass TreeNodeListMouseController extends _list_listWidget_js__WEBPACK_IMPORTED_MODULE_7__.MouseController {\n constructor(list, tree) {\n super(list);\n this.tree = tree;\n }\n onViewPointer(e) {\n if ((0,_list_listWidget_js__WEBPACK_IMPORTED_MODULE_7__.isButton)(e.browserEvent.target) ||\n (0,_list_listWidget_js__WEBPACK_IMPORTED_MODULE_7__.isInputElement)(e.browserEvent.target) ||\n (0,_list_listWidget_js__WEBPACK_IMPORTED_MODULE_7__.isMonacoEditor)(e.browserEvent.target)) {\n return;\n }\n if (e.browserEvent.isHandledByList) {\n return;\n }\n const node = e.element;\n if (!node) {\n return super.onViewPointer(e);\n }\n if (this.isSelectionRangeChangeEvent(e) || this.isSelectionSingleChangeEvent(e)) {\n return super.onViewPointer(e);\n }\n const target = e.browserEvent.target;\n const onTwistie = target.classList.contains('monaco-tl-twistie')\n || (target.classList.contains('monaco-icon-label') && target.classList.contains('folder-icon') && e.browserEvent.offsetX < 16);\n let expandOnlyOnTwistieClick = false;\n if (typeof this.tree.expandOnlyOnTwistieClick === 'function') {\n expandOnlyOnTwistieClick = this.tree.expandOnlyOnTwistieClick(node.element);\n }\n else {\n expandOnlyOnTwistieClick = !!this.tree.expandOnlyOnTwistieClick;\n }\n if (expandOnlyOnTwistieClick && !onTwistie && e.browserEvent.detail !== 2) {\n return super.onViewPointer(e);\n }\n if (!this.tree.expandOnDoubleClick && e.browserEvent.detail === 2) {\n return super.onViewPointer(e);\n }\n if (node.collapsible) {\n const location = this.tree.getNodeLocation(node);\n const recursive = e.browserEvent.altKey;\n this.tree.setFocus([location]);\n this.tree.toggleCollapsed(location, recursive);\n if (expandOnlyOnTwistieClick && onTwistie) {\n // Do not set this before calling a handler on the super class, because it will reject it as handled\n e.browserEvent.isHandledByList = true;\n return;\n }\n }\n super.onViewPointer(e);\n }\n onDoubleClick(e) {\n const onTwistie = e.browserEvent.target.classList.contains('monaco-tl-twistie');\n if (onTwistie || !this.tree.expandOnDoubleClick) {\n return;\n }\n if (e.browserEvent.isHandledByList) {\n return;\n }\n super.onDoubleClick(e);\n }\n}\n/**\n * We use this List subclass to restore selection and focus as nodes\n * get rendered in the list, possibly due to a node expand() call.\n */\nclass TreeNodeList extends _list_listWidget_js__WEBPACK_IMPORTED_MODULE_7__.List {\n constructor(user, container, virtualDelegate, renderers, focusTrait, selectionTrait, anchorTrait, options) {\n super(user, container, virtualDelegate, renderers, options);\n this.focusTrait = focusTrait;\n this.selectionTrait = selectionTrait;\n this.anchorTrait = anchorTrait;\n }\n createMouseController(options) {\n return new TreeNodeListMouseController(this, options.tree);\n }\n splice(start, deleteCount, elements = []) {\n super.splice(start, deleteCount, elements);\n if (elements.length === 0) {\n return;\n }\n const additionalFocus = [];\n const additionalSelection = [];\n let anchor;\n elements.forEach((node, index) => {\n if (this.focusTrait.has(node)) {\n additionalFocus.push(start + index);\n }\n if (this.selectionTrait.has(node)) {\n additionalSelection.push(start + index);\n }\n if (this.anchorTrait.has(node)) {\n anchor = start + index;\n }\n });\n if (additionalFocus.length > 0) {\n super.setFocus((0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_12__.distinct)([...super.getFocus(), ...additionalFocus]));\n }\n if (additionalSelection.length > 0) {\n super.setSelection((0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_12__.distinct)([...super.getSelection(), ...additionalSelection]));\n }\n if (typeof anchor === 'number') {\n super.setAnchor(anchor);\n }\n }\n setFocus(indexes, browserEvent, fromAPI = false) {\n super.setFocus(indexes, browserEvent);\n if (!fromAPI) {\n this.focusTrait.set(indexes.map(i => this.element(i)), browserEvent);\n }\n }\n setSelection(indexes, browserEvent, fromAPI = false) {\n super.setSelection(indexes, browserEvent);\n if (!fromAPI) {\n this.selectionTrait.set(indexes.map(i => this.element(i)), browserEvent);\n }\n }\n setAnchor(index, fromAPI = false) {\n super.setAnchor(index);\n if (!fromAPI) {\n if (typeof index === 'undefined') {\n this.anchorTrait.set([]);\n }\n else {\n this.anchorTrait.set([this.element(index)]);\n }\n }\n }\n}\nclass AbstractTree {\n get onDidChangeFocus() { return this.eventBufferer.wrapEvent(this.focus.onDidChange); }\n get onDidChangeSelection() { return this.eventBufferer.wrapEvent(this.selection.onDidChange); }\n get onMouseDblClick() { return _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.filter(_common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.map(this.view.onMouseDblClick, asTreeMouseEvent), e => e.target !== _tree_js__WEBPACK_IMPORTED_MODULE_10__.TreeMouseEventTarget.Filter); }\n get onPointer() { return _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.map(this.view.onPointer, asTreeMouseEvent); }\n get onDidFocus() { return this.view.onDidFocus; }\n get onDidChangeModel() { return _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.signal(this.model.onDidSplice); }\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\n get findMode() { var _a, _b; return (_b = (_a = this.findController) === null || _a === void 0 ? void 0 : _a.mode) !== null && _b !== void 0 ? _b : TreeFindMode.Highlight; }\n set findMode(findMode) { if (this.findController) {\n this.findController.mode = findMode;\n } }\n get findMatchType() { var _a, _b; return (_b = (_a = this.findController) === null || _a === void 0 ? void 0 : _a.matchType) !== null && _b !== void 0 ? _b : TreeFindMatchType.Fuzzy; }\n set findMatchType(findFuzzy) { if (this.findController) {\n this.findController.matchType = findFuzzy;\n } }\n get expandOnDoubleClick() { return typeof this._options.expandOnDoubleClick === 'undefined' ? true : this._options.expandOnDoubleClick; }\n get expandOnlyOnTwistieClick() { return typeof this._options.expandOnlyOnTwistieClick === 'undefined' ? true : this._options.expandOnlyOnTwistieClick; }\n get onDidDispose() { return this.view.onDidDispose; }\n constructor(_user, container, delegate, renderers, _options = {}) {\n var _a;\n this._user = _user;\n this._options = _options;\n this.eventBufferer = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.EventBufferer();\n this.onDidChangeFindOpenState = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.None;\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.DisposableStore();\n this._onWillRefilter = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n this.onWillRefilter = this._onWillRefilter.event;\n this._onDidUpdateOptions = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Emitter();\n const treeDelegate = new ComposedTreeDelegate(delegate);\n const onDidChangeCollapseStateRelay = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Relay();\n const onDidChangeActiveNodes = new _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Relay();\n const activeNodes = this.disposables.add(new EventCollection(onDidChangeActiveNodes.event));\n const renderedIndentGuides = new _common_collections_js__WEBPACK_IMPORTED_MODULE_16__.SetMap();\n this.renderers = renderers.map(r => new TreeRenderer(r, () => this.model, onDidChangeCollapseStateRelay.event, activeNodes, renderedIndentGuides, _options));\n for (const r of this.renderers) {\n this.disposables.add(r);\n }\n let filter;\n if (_options.keyboardNavigationLabelProvider) {\n filter = new FindFilter(this, _options.keyboardNavigationLabelProvider, _options.filter);\n _options = Object.assign(Object.assign({}, _options), { filter: filter }); // TODO need typescript help here\n this.disposables.add(filter);\n }\n this.focus = new Trait(() => this.view.getFocusedElements()[0], _options.identityProvider);\n this.selection = new Trait(() => this.view.getSelectedElements()[0], _options.identityProvider);\n this.anchor = new Trait(() => this.view.getAnchorElement(), _options.identityProvider);\n this.view = new TreeNodeList(_user, container, treeDelegate, this.renderers, this.focus, this.selection, this.anchor, Object.assign(Object.assign({}, asListOptions(() => this.model, _options)), { tree: this }));\n this.model = this.createModel(_user, this.view, _options);\n onDidChangeCollapseStateRelay.input = this.model.onDidChangeCollapseState;\n const onDidModelSplice = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.forEach(this.model.onDidSplice, e => {\n this.eventBufferer.bufferEvents(() => {\n this.focus.onDidModelSplice(e);\n this.selection.onDidModelSplice(e);\n });\n }, this.disposables);\n // Make sure the `forEach` always runs\n onDidModelSplice(() => null, null, this.disposables);\n // Active nodes can change when the model changes or when focus or selection change.\n // We debounce it with 0 delay since these events may fire in the same stack and we only\n // want to run this once. It also doesn't matter if it runs on the next tick since it's only\n // a nice to have UI feature.\n onDidChangeActiveNodes.input = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.chain(_common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.any(onDidModelSplice, this.focus.onDidChange, this.selection.onDidChange))\n .debounce(() => null, 0)\n .map(() => {\n const set = new Set();\n for (const node of this.focus.getNodes()) {\n set.add(node);\n }\n for (const node of this.selection.getNodes()) {\n set.add(node);\n }\n return [...set.values()];\n }).event;\n if (_options.keyboardSupport !== false) {\n const onKeyDown = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.chain(this.view.onKeyDown)\n .filter(e => !(0,_list_listWidget_js__WEBPACK_IMPORTED_MODULE_7__.isInputElement)(e.target))\n .map(e => new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardKeyboardEvent(e));\n onKeyDown.filter(e => e.keyCode === 15 /* KeyCode.LeftArrow */).on(this.onLeftArrow, this, this.disposables);\n onKeyDown.filter(e => e.keyCode === 17 /* KeyCode.RightArrow */).on(this.onRightArrow, this, this.disposables);\n onKeyDown.filter(e => e.keyCode === 10 /* KeyCode.Space */).on(this.onSpace, this, this.disposables);\n }\n if (((_a = _options.findWidgetEnabled) !== null && _a !== void 0 ? _a : true) && _options.keyboardNavigationLabelProvider && _options.contextViewProvider) {\n const opts = this.options.findWidgetStyles ? { styles: this.options.findWidgetStyles } : undefined;\n this.findController = new FindController(this, this.model, this.view, filter, _options.contextViewProvider, opts);\n this.focusNavigationFilter = node => this.findController.shouldAllowFocus(node);\n this.onDidChangeFindOpenState = this.findController.onDidChangeOpenState;\n this.disposables.add(this.findController);\n this.onDidChangeFindMode = this.findController.onDidChangeMode;\n this.onDidChangeFindMatchType = this.findController.onDidChangeMatchType;\n }\n else {\n this.onDidChangeFindMode = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.None;\n this.onDidChangeFindMatchType = _common_event_js__WEBPACK_IMPORTED_MODULE_17__.Event.None;\n }\n this.styleElement = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__.createStyleSheet)(this.view.getHTMLElement());\n this.getHTMLElement().classList.toggle('always', this._options.renderIndentGuides === RenderIndentGuides.Always);\n }\n updateOptions(optionsUpdate = {}) {\n var _a;\n this._options = Object.assign(Object.assign({}, this._options), optionsUpdate);\n for (const renderer of this.renderers) {\n renderer.updateOptions(optionsUpdate);\n }\n this.view.updateOptions(this._options);\n (_a = this.findController) === null || _a === void 0 ? void 0 : _a.updateOptions(optionsUpdate);\n this._onDidUpdateOptions.fire(this._options);\n this.getHTMLElement().classList.toggle('always', this._options.renderIndentGuides === RenderIndentGuides.Always);\n }\n get options() {\n return this._options;\n }\n // Widget\n getHTMLElement() {\n return this.view.getHTMLElement();\n }\n get scrollTop() {\n return this.view.scrollTop;\n }\n set scrollTop(scrollTop) {\n this.view.scrollTop = scrollTop;\n }\n domFocus() {\n this.view.domFocus();\n }\n layout(height, width) {\n var _a;\n this.view.layout(height, width);\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_21__.isNumber)(width)) {\n (_a = this.findController) === null || _a === void 0 ? void 0 : _a.layout(width);\n }\n }\n style(styles) {\n const suffix = `.${this.view.domId}`;\n const content = [];\n if (styles.treeIndentGuidesStroke) {\n content.push(`.monaco-list${suffix}:hover .monaco-tl-indent > .indent-guide, .monaco-list${suffix}.always .monaco-tl-indent > .indent-guide { border-color: ${styles.treeInactiveIndentGuidesStroke}; }`);\n content.push(`.monaco-list${suffix} .monaco-tl-indent > .indent-guide.active { border-color: ${styles.treeIndentGuidesStroke}; }`);\n }\n this.styleElement.textContent = content.join('\\n');\n this.view.style(styles);\n }\n // Tree navigation\n getParentElement(location) {\n const parentRef = this.model.getParentNodeLocation(location);\n const parentNode = this.model.getNode(parentRef);\n return parentNode.element;\n }\n getFirstElementChild(location) {\n return this.model.getFirstElementChild(location);\n }\n // Tree\n getNode(location) {\n return this.model.getNode(location);\n }\n getNodeLocation(node) {\n return this.model.getNodeLocation(node);\n }\n collapse(location, recursive = false) {\n return this.model.setCollapsed(location, true, recursive);\n }\n expand(location, recursive = false) {\n return this.model.setCollapsed(location, false, recursive);\n }\n toggleCollapsed(location, recursive = false) {\n return this.model.setCollapsed(location, undefined, recursive);\n }\n isCollapsible(location) {\n return this.model.isCollapsible(location);\n }\n setCollapsible(location, collapsible) {\n return this.model.setCollapsible(location, collapsible);\n }\n isCollapsed(location) {\n return this.model.isCollapsed(location);\n }\n refilter() {\n this._onWillRefilter.fire(undefined);\n this.model.refilter();\n }\n setSelection(elements, browserEvent) {\n const nodes = elements.map(e => this.model.getNode(e));\n this.selection.set(nodes, browserEvent);\n const indexes = elements.map(e => this.model.getListIndex(e)).filter(i => i > -1);\n this.view.setSelection(indexes, browserEvent, true);\n }\n getSelection() {\n return this.selection.get();\n }\n setFocus(elements, browserEvent) {\n const nodes = elements.map(e => this.model.getNode(e));\n this.focus.set(nodes, browserEvent);\n const indexes = elements.map(e => this.model.getListIndex(e)).filter(i => i > -1);\n this.view.setFocus(indexes, browserEvent, true);\n }\n getFocus() {\n return this.focus.get();\n }\n reveal(location, relativeTop) {\n this.model.expandTo(location);\n const index = this.model.getListIndex(location);\n if (index === -1) {\n return;\n }\n this.view.reveal(index, relativeTop);\n }\n // List\n onLeftArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n const nodes = this.view.getFocusedElements();\n if (nodes.length === 0) {\n return;\n }\n const node = nodes[0];\n const location = this.model.getNodeLocation(node);\n const didChange = this.model.setCollapsed(location, true);\n if (!didChange) {\n const parentLocation = this.model.getParentNodeLocation(location);\n if (!parentLocation) {\n return;\n }\n const parentListIndex = this.model.getListIndex(parentLocation);\n this.view.reveal(parentListIndex);\n this.view.setFocus([parentListIndex]);\n }\n }\n onRightArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n const nodes = this.view.getFocusedElements();\n if (nodes.length === 0) {\n return;\n }\n const node = nodes[0];\n const location = this.model.getNodeLocation(node);\n const didChange = this.model.setCollapsed(location, false);\n if (!didChange) {\n if (!node.children.some(child => child.visible)) {\n return;\n }\n const [focusedIndex] = this.view.getFocus();\n const firstChildIndex = focusedIndex + 1;\n this.view.reveal(firstChildIndex);\n this.view.setFocus([firstChildIndex]);\n }\n }\n onSpace(e) {\n e.preventDefault();\n e.stopPropagation();\n const nodes = this.view.getFocusedElements();\n if (nodes.length === 0) {\n return;\n }\n const node = nodes[0];\n const location = this.model.getNodeLocation(node);\n const recursive = e.browserEvent.altKey;\n this.model.setCollapsed(location, undefined, recursive);\n }\n dispose() {\n (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_19__.dispose)(this.disposables);\n this.view.dispose();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/asyncDataTree.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/asyncDataTree.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AsyncDataTree: () => (/* binding */ AsyncDataTree),\n/* harmony export */ CompressibleAsyncDataTree: () => (/* binding */ CompressibleAsyncDataTree)\n/* harmony export */ });\n/* harmony import */ var _list_listView_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../list/listView.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js\");\n/* harmony import */ var _abstractTree_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstractTree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js\");\n/* harmony import */ var _indexTreeModel_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./indexTreeModel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js\");\n/* harmony import */ var _objectTree_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./objectTree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js\");\n/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_codicons_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/* harmony import */ var _common_themables_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../common/themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/* harmony import */ var _common_errors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../common/errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../common/iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction createAsyncDataTreeNode(props) {\n return Object.assign(Object.assign({}, props), { children: [], refreshPromise: undefined, stale: true, slow: false, collapsedByDefault: undefined });\n}\nfunction isAncestor(ancestor, descendant) {\n if (!descendant.parent) {\n return false;\n }\n else if (descendant.parent === ancestor) {\n return true;\n }\n else {\n return isAncestor(ancestor, descendant.parent);\n }\n}\nfunction intersects(node, other) {\n return node === other || isAncestor(node, other) || isAncestor(other, node);\n}\nclass AsyncDataTreeNodeWrapper {\n get element() { return this.node.element.element; }\n get children() { return this.node.children.map(node => new AsyncDataTreeNodeWrapper(node)); }\n get depth() { return this.node.depth; }\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\n get visibleChildIndex() { return this.node.visibleChildIndex; }\n get collapsible() { return this.node.collapsible; }\n get collapsed() { return this.node.collapsed; }\n get visible() { return this.node.visible; }\n get filterData() { return this.node.filterData; }\n constructor(node) {\n this.node = node;\n }\n}\nclass AsyncDataTreeRenderer {\n constructor(renderer, nodeMapper, onDidChangeTwistieState) {\n this.renderer = renderer;\n this.nodeMapper = nodeMapper;\n this.onDidChangeTwistieState = onDidChangeTwistieState;\n this.renderedNodes = new Map();\n this.templateId = renderer.templateId;\n }\n renderTemplate(container) {\n const templateData = this.renderer.renderTemplate(container);\n return { templateData };\n }\n renderElement(node, index, templateData, height) {\n this.renderer.renderElement(this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n renderTwistie(element, twistieElement) {\n if (element.slow) {\n twistieElement.classList.add(..._common_themables_js__WEBPACK_IMPORTED_MODULE_7__.ThemeIcon.asClassNameArray(_common_codicons_js__WEBPACK_IMPORTED_MODULE_6__.Codicon.treeItemLoading));\n return true;\n }\n else {\n twistieElement.classList.remove(..._common_themables_js__WEBPACK_IMPORTED_MODULE_7__.ThemeIcon.asClassNameArray(_common_codicons_js__WEBPACK_IMPORTED_MODULE_6__.Codicon.treeItemLoading));\n return false;\n }\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b;\n (_b = (_a = this.renderer).disposeElement) === null || _b === void 0 ? void 0 : _b.call(_a, this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.templateData);\n }\n dispose() {\n this.renderedNodes.clear();\n }\n}\nfunction asTreeEvent(e) {\n return {\n browserEvent: e.browserEvent,\n elements: e.elements.map(e => e.element)\n };\n}\nfunction asTreeMouseEvent(e) {\n return {\n browserEvent: e.browserEvent,\n element: e.element && e.element.element,\n target: e.target\n };\n}\nclass AsyncDataTreeElementsDragAndDropData extends _list_listView_js__WEBPACK_IMPORTED_MODULE_0__.ElementsDragAndDropData {\n constructor(data) {\n super(data.elements.map(node => node.element));\n this.data = data;\n }\n}\nfunction asAsyncDataTreeDragAndDropData(data) {\n if (data instanceof _list_listView_js__WEBPACK_IMPORTED_MODULE_0__.ElementsDragAndDropData) {\n return new AsyncDataTreeElementsDragAndDropData(data);\n }\n return data;\n}\nclass AsyncDataTreeNodeListDragAndDrop {\n constructor(dnd) {\n this.dnd = dnd;\n }\n getDragURI(node) {\n return this.dnd.getDragURI(node.element);\n }\n getDragLabel(nodes, originalEvent) {\n if (this.dnd.getDragLabel) {\n return this.dnd.getDragLabel(nodes.map(node => node.element), originalEvent);\n }\n return undefined;\n }\n onDragStart(data, originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, asAsyncDataTreeDragAndDropData(data), originalEvent);\n }\n onDragOver(data, targetNode, targetIndex, originalEvent, raw = true) {\n return this.dnd.onDragOver(asAsyncDataTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n }\n drop(data, targetNode, targetIndex, originalEvent) {\n this.dnd.drop(asAsyncDataTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n }\n onDragEnd(originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, originalEvent);\n }\n}\nfunction asObjectTreeOptions(options) {\n return options && Object.assign(Object.assign({}, options), { collapseByDefault: true, identityProvider: options.identityProvider && {\n getId(el) {\n return options.identityProvider.getId(el.element);\n }\n }, dnd: options.dnd && new AsyncDataTreeNodeListDragAndDrop(options.dnd), multipleSelectionController: options.multipleSelectionController && {\n isSelectionSingleChangeEvent(e) {\n return options.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n },\n isSelectionRangeChangeEvent(e) {\n return options.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n }\n }, accessibilityProvider: options.accessibilityProvider && Object.assign(Object.assign({}, options.accessibilityProvider), { getPosInSet: undefined, getSetSize: undefined, getRole: options.accessibilityProvider.getRole ? (el) => {\n return options.accessibilityProvider.getRole(el.element);\n } : () => 'treeitem', isChecked: options.accessibilityProvider.isChecked ? (e) => {\n var _a;\n return !!((_a = options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.isChecked(e.element));\n } : undefined, getAriaLabel(e) {\n return options.accessibilityProvider.getAriaLabel(e.element);\n },\n getWidgetAriaLabel() {\n return options.accessibilityProvider.getWidgetAriaLabel();\n }, getWidgetRole: options.accessibilityProvider.getWidgetRole ? () => options.accessibilityProvider.getWidgetRole() : () => 'tree', getAriaLevel: options.accessibilityProvider.getAriaLevel && (node => {\n return options.accessibilityProvider.getAriaLevel(node.element);\n }), getActiveDescendantId: options.accessibilityProvider.getActiveDescendantId && (node => {\n return options.accessibilityProvider.getActiveDescendantId(node.element);\n }) }), filter: options.filter && {\n filter(e, parentVisibility) {\n return options.filter.filter(e.element, parentVisibility);\n }\n }, keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, options.keyboardNavigationLabelProvider), { getKeyboardNavigationLabel(e) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element);\n } }), sorter: undefined, expandOnlyOnTwistieClick: typeof options.expandOnlyOnTwistieClick === 'undefined' ? undefined : (typeof options.expandOnlyOnTwistieClick !== 'function' ? options.expandOnlyOnTwistieClick : (e => options.expandOnlyOnTwistieClick(e.element))), defaultFindVisibility: e => {\n if (e.hasChildren && e.stale) {\n return 1 /* TreeVisibility.Visible */;\n }\n else if (typeof options.defaultFindVisibility === 'number') {\n return options.defaultFindVisibility;\n }\n else if (typeof options.defaultFindVisibility === 'undefined') {\n return 2 /* TreeVisibility.Recurse */;\n }\n else {\n return options.defaultFindVisibility(e.element);\n }\n } });\n}\nfunction dfs(node, fn) {\n fn(node);\n node.children.forEach(child => dfs(child, fn));\n}\nclass AsyncDataTree {\n get onDidChangeFocus() { return _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.map(this.tree.onDidChangeFocus, asTreeEvent); }\n get onDidChangeSelection() { return _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.map(this.tree.onDidChangeSelection, asTreeEvent); }\n get onMouseDblClick() { return _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.map(this.tree.onMouseDblClick, asTreeMouseEvent); }\n get onPointer() { return _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.map(this.tree.onPointer, asTreeMouseEvent); }\n get onDidFocus() { return this.tree.onDidFocus; }\n /**\n * To be used internally only!\n * @deprecated\n */\n get onDidChangeModel() { return this.tree.onDidChangeModel; }\n get onDidChangeCollapseState() { return this.tree.onDidChangeCollapseState; }\n get onDidChangeFindOpenState() { return this.tree.onDidChangeFindOpenState; }\n get onDidDispose() { return this.tree.onDidDispose; }\n constructor(user, container, delegate, renderers, dataSource, options = {}) {\n this.user = user;\n this.dataSource = dataSource;\n this.nodes = new Map();\n this.subTreeRefreshPromises = new Map();\n this.refreshPromises = new Map();\n this._onDidRender = new _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Emitter();\n this._onDidChangeNodeSlowState = new _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Emitter();\n this.nodeMapper = new _tree_js__WEBPACK_IMPORTED_MODULE_4__.WeakMapper(node => new AsyncDataTreeNodeWrapper(node));\n this.disposables = new _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_11__.DisposableStore();\n this.identityProvider = options.identityProvider;\n this.autoExpandSingleChildren = typeof options.autoExpandSingleChildren === 'undefined' ? false : options.autoExpandSingleChildren;\n this.sorter = options.sorter;\n this.collapseByDefault = options.collapseByDefault;\n this.tree = this.createTree(user, container, delegate, renderers, options);\n this.onDidChangeFindMode = this.tree.onDidChangeFindMode;\n this.root = createAsyncDataTreeNode({\n element: undefined,\n parent: null,\n hasChildren: true\n });\n if (this.identityProvider) {\n this.root = Object.assign(Object.assign({}, this.root), { id: null });\n }\n this.nodes.set(null, this.root);\n this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState, this, this.disposables);\n }\n createTree(user, container, delegate, renderers, options) {\n const objectTreeDelegate = new _abstractTree_js__WEBPACK_IMPORTED_MODULE_1__.ComposedTreeDelegate(delegate);\n const objectTreeRenderers = renderers.map(r => new AsyncDataTreeRenderer(r, this.nodeMapper, this._onDidChangeNodeSlowState.event));\n const objectTreeOptions = asObjectTreeOptions(options) || {};\n return new _objectTree_js__WEBPACK_IMPORTED_MODULE_3__.ObjectTree(user, container, objectTreeDelegate, objectTreeRenderers, objectTreeOptions);\n }\n updateOptions(options = {}) {\n this.tree.updateOptions(options);\n }\n // Widget\n getHTMLElement() {\n return this.tree.getHTMLElement();\n }\n get scrollTop() {\n return this.tree.scrollTop;\n }\n set scrollTop(scrollTop) {\n this.tree.scrollTop = scrollTop;\n }\n domFocus() {\n this.tree.domFocus();\n }\n layout(height, width) {\n this.tree.layout(height, width);\n }\n style(styles) {\n this.tree.style(styles);\n }\n // Model\n getInput() {\n return this.root.element;\n }\n setInput(input, viewState) {\n return __awaiter(this, void 0, void 0, function* () {\n this.refreshPromises.forEach(promise => promise.cancel());\n this.refreshPromises.clear();\n this.root.element = input;\n const viewStateContext = viewState && { viewState, focus: [], selection: [] };\n yield this._updateChildren(input, true, false, viewStateContext);\n if (viewStateContext) {\n this.tree.setFocus(viewStateContext.focus);\n this.tree.setSelection(viewStateContext.selection);\n }\n if (viewState && typeof viewState.scrollTop === 'number') {\n this.scrollTop = viewState.scrollTop;\n }\n });\n }\n _updateChildren(element = this.root.element, recursive = true, rerender = false, viewStateContext, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof this.root.element === 'undefined') {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_4__.TreeError(this.user, 'Tree input not set');\n }\n if (this.root.refreshPromise) {\n yield this.root.refreshPromise;\n yield _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.toPromise(this._onDidRender.event);\n }\n const node = this.getDataNode(element);\n yield this.refreshAndRenderNode(node, recursive, viewStateContext, options);\n if (rerender) {\n try {\n this.tree.rerender(node);\n }\n catch (_a) {\n // missing nodes are fine, this could've resulted from\n // parallel refresh calls, removing `node` altogether\n }\n }\n });\n }\n // View\n rerender(element) {\n if (element === undefined || element === this.root.element) {\n this.tree.rerender();\n return;\n }\n const node = this.getDataNode(element);\n this.tree.rerender(node);\n }\n // Tree\n getNode(element = this.root.element) {\n const dataNode = this.getDataNode(element);\n const node = this.tree.getNode(dataNode === this.root ? null : dataNode);\n return this.nodeMapper.map(node);\n }\n collapse(element, recursive = false) {\n const node = this.getDataNode(element);\n return this.tree.collapse(node === this.root ? null : node, recursive);\n }\n expand(element, recursive = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof this.root.element === 'undefined') {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_4__.TreeError(this.user, 'Tree input not set');\n }\n if (this.root.refreshPromise) {\n yield this.root.refreshPromise;\n yield _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.toPromise(this._onDidRender.event);\n }\n const node = this.getDataNode(element);\n if (this.tree.hasElement(node) && !this.tree.isCollapsible(node)) {\n return false;\n }\n if (node.refreshPromise) {\n yield this.root.refreshPromise;\n yield _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.toPromise(this._onDidRender.event);\n }\n if (node !== this.root && !node.refreshPromise && !this.tree.isCollapsed(node)) {\n return false;\n }\n const result = this.tree.expand(node === this.root ? null : node, recursive);\n if (node.refreshPromise) {\n yield this.root.refreshPromise;\n yield _common_event_js__WEBPACK_IMPORTED_MODULE_9__.Event.toPromise(this._onDidRender.event);\n }\n return result;\n });\n }\n setSelection(elements, browserEvent) {\n const nodes = elements.map(e => this.getDataNode(e));\n this.tree.setSelection(nodes, browserEvent);\n }\n getSelection() {\n const nodes = this.tree.getSelection();\n return nodes.map(n => n.element);\n }\n setFocus(elements, browserEvent) {\n const nodes = elements.map(e => this.getDataNode(e));\n this.tree.setFocus(nodes, browserEvent);\n }\n getFocus() {\n const nodes = this.tree.getFocus();\n return nodes.map(n => n.element);\n }\n reveal(element, relativeTop) {\n this.tree.reveal(this.getDataNode(element), relativeTop);\n }\n // Tree navigation\n getParentElement(element) {\n const node = this.tree.getParentElement(this.getDataNode(element));\n return (node && node.element);\n }\n getFirstElementChild(element = this.root.element) {\n const dataNode = this.getDataNode(element);\n const node = this.tree.getFirstElementChild(dataNode === this.root ? null : dataNode);\n return (node && node.element);\n }\n // Implementation\n getDataNode(element) {\n const node = this.nodes.get((element === this.root.element ? null : element));\n if (!node) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_4__.TreeError(this.user, `Data tree node not found: ${element}`);\n }\n return node;\n }\n refreshAndRenderNode(node, recursive, viewStateContext, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.refreshNode(node, recursive, viewStateContext);\n this.render(node, viewStateContext, options);\n });\n }\n refreshNode(node, recursive, viewStateContext) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n this.subTreeRefreshPromises.forEach((refreshPromise, refreshNode) => {\n if (!result && intersects(refreshNode, node)) {\n result = refreshPromise.then(() => this.refreshNode(node, recursive, viewStateContext));\n }\n });\n if (result) {\n return result;\n }\n if (node !== this.root) {\n const treeNode = this.tree.getNode(node);\n if (treeNode.collapsed) {\n node.hasChildren = !!this.dataSource.hasChildren(node.element);\n node.stale = true;\n return;\n }\n }\n return this.doRefreshSubTree(node, recursive, viewStateContext);\n });\n }\n doRefreshSubTree(node, recursive, viewStateContext) {\n return __awaiter(this, void 0, void 0, function* () {\n let done;\n node.refreshPromise = new Promise(c => done = c);\n this.subTreeRefreshPromises.set(node, node.refreshPromise);\n node.refreshPromise.finally(() => {\n node.refreshPromise = undefined;\n this.subTreeRefreshPromises.delete(node);\n });\n try {\n const childrenToRefresh = yield this.doRefreshNode(node, recursive, viewStateContext);\n node.stale = false;\n yield _common_async_js__WEBPACK_IMPORTED_MODULE_5__.Promises.settled(childrenToRefresh.map(child => this.doRefreshSubTree(child, recursive, viewStateContext)));\n }\n finally {\n done();\n }\n });\n }\n doRefreshNode(node, recursive, viewStateContext) {\n return __awaiter(this, void 0, void 0, function* () {\n node.hasChildren = !!this.dataSource.hasChildren(node.element);\n let childrenPromise;\n if (!node.hasChildren) {\n childrenPromise = Promise.resolve(_common_iterator_js__WEBPACK_IMPORTED_MODULE_10__.Iterable.empty());\n }\n else {\n const children = this.doGetChildren(node);\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_12__.isIterable)(children)) {\n childrenPromise = Promise.resolve(children);\n }\n else {\n const slowTimeout = (0,_common_async_js__WEBPACK_IMPORTED_MODULE_5__.timeout)(800);\n slowTimeout.then(() => {\n node.slow = true;\n this._onDidChangeNodeSlowState.fire(node);\n }, _ => null);\n childrenPromise = children.finally(() => slowTimeout.cancel());\n }\n }\n try {\n const children = yield childrenPromise;\n return this.setChildren(node, children, recursive, viewStateContext);\n }\n catch (err) {\n if (node !== this.root && this.tree.hasElement(node)) {\n this.tree.collapse(node);\n }\n if ((0,_common_errors_js__WEBPACK_IMPORTED_MODULE_8__.isCancellationError)(err)) {\n return [];\n }\n throw err;\n }\n finally {\n if (node.slow) {\n node.slow = false;\n this._onDidChangeNodeSlowState.fire(node);\n }\n }\n });\n }\n doGetChildren(node) {\n let result = this.refreshPromises.get(node);\n if (result) {\n return result;\n }\n const children = this.dataSource.getChildren(node.element);\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_12__.isIterable)(children)) {\n return this.processChildren(children);\n }\n else {\n result = (0,_common_async_js__WEBPACK_IMPORTED_MODULE_5__.createCancelablePromise)(() => __awaiter(this, void 0, void 0, function* () { return this.processChildren(yield children); }));\n this.refreshPromises.set(node, result);\n return result.finally(() => { this.refreshPromises.delete(node); });\n }\n }\n _onDidChangeCollapseState({ node, deep }) {\n if (node.element === null) {\n return;\n }\n if (!node.collapsed && node.element.stale) {\n if (deep) {\n this.collapse(node.element.element);\n }\n else {\n this.refreshAndRenderNode(node.element, false)\n .catch(_common_errors_js__WEBPACK_IMPORTED_MODULE_8__.onUnexpectedError);\n }\n }\n }\n setChildren(node, childrenElementsIterable, recursive, viewStateContext) {\n const childrenElements = [...childrenElementsIterable];\n // perf: if the node was and still is a leaf, avoid all this hassle\n if (node.children.length === 0 && childrenElements.length === 0) {\n return [];\n }\n const nodesToForget = new Map();\n const childrenTreeNodesById = new Map();\n for (const child of node.children) {\n nodesToForget.set(child.element, child);\n if (this.identityProvider) {\n const collapsed = this.tree.isCollapsed(child);\n childrenTreeNodesById.set(child.id, { node: child, collapsed });\n }\n }\n const childrenToRefresh = [];\n const children = childrenElements.map(element => {\n const hasChildren = !!this.dataSource.hasChildren(element);\n if (!this.identityProvider) {\n const asyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, hasChildren });\n if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\n asyncDataTreeNode.collapsedByDefault = false;\n childrenToRefresh.push(asyncDataTreeNode);\n }\n return asyncDataTreeNode;\n }\n const id = this.identityProvider.getId(element).toString();\n const result = childrenTreeNodesById.get(id);\n if (result) {\n const asyncDataTreeNode = result.node;\n nodesToForget.delete(asyncDataTreeNode.element);\n this.nodes.delete(asyncDataTreeNode.element);\n this.nodes.set(element, asyncDataTreeNode);\n asyncDataTreeNode.element = element;\n asyncDataTreeNode.hasChildren = hasChildren;\n if (recursive) {\n if (result.collapsed) {\n asyncDataTreeNode.children.forEach(node => dfs(node, node => this.nodes.delete(node.element)));\n asyncDataTreeNode.children.splice(0, asyncDataTreeNode.children.length);\n asyncDataTreeNode.stale = true;\n }\n else {\n childrenToRefresh.push(asyncDataTreeNode);\n }\n }\n else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\n asyncDataTreeNode.collapsedByDefault = false;\n childrenToRefresh.push(asyncDataTreeNode);\n }\n return asyncDataTreeNode;\n }\n const childAsyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, id, hasChildren });\n if (viewStateContext && viewStateContext.viewState.focus && viewStateContext.viewState.focus.indexOf(id) > -1) {\n viewStateContext.focus.push(childAsyncDataTreeNode);\n }\n if (viewStateContext && viewStateContext.viewState.selection && viewStateContext.viewState.selection.indexOf(id) > -1) {\n viewStateContext.selection.push(childAsyncDataTreeNode);\n }\n if (viewStateContext && viewStateContext.viewState.expanded && viewStateContext.viewState.expanded.indexOf(id) > -1) {\n childrenToRefresh.push(childAsyncDataTreeNode);\n }\n else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\n childAsyncDataTreeNode.collapsedByDefault = false;\n childrenToRefresh.push(childAsyncDataTreeNode);\n }\n return childAsyncDataTreeNode;\n });\n for (const node of nodesToForget.values()) {\n dfs(node, node => this.nodes.delete(node.element));\n }\n for (const child of children) {\n this.nodes.set(child.element, child);\n }\n node.children.splice(0, node.children.length, ...children);\n // TODO@joao this doesn't take filter into account\n if (node !== this.root && this.autoExpandSingleChildren && children.length === 1 && childrenToRefresh.length === 0) {\n children[0].collapsedByDefault = false;\n childrenToRefresh.push(children[0]);\n }\n return childrenToRefresh;\n }\n render(node, viewStateContext, options) {\n const children = node.children.map(node => this.asTreeElement(node, viewStateContext));\n const objectTreeOptions = options && Object.assign(Object.assign({}, options), { diffIdentityProvider: options.diffIdentityProvider && {\n getId(node) {\n return options.diffIdentityProvider.getId(node.element);\n }\n } });\n this.tree.setChildren(node === this.root ? null : node, children, objectTreeOptions);\n if (node !== this.root) {\n this.tree.setCollapsible(node, node.hasChildren);\n }\n this._onDidRender.fire();\n }\n asTreeElement(node, viewStateContext) {\n if (node.stale) {\n return {\n element: node,\n collapsible: node.hasChildren,\n collapsed: true\n };\n }\n let collapsed;\n if (viewStateContext && viewStateContext.viewState.expanded && node.id && viewStateContext.viewState.expanded.indexOf(node.id) > -1) {\n collapsed = false;\n }\n else {\n collapsed = node.collapsedByDefault;\n }\n node.collapsedByDefault = undefined;\n return {\n element: node,\n children: node.hasChildren ? _common_iterator_js__WEBPACK_IMPORTED_MODULE_10__.Iterable.map(node.children, child => this.asTreeElement(child, viewStateContext)) : [],\n collapsible: node.hasChildren,\n collapsed\n };\n }\n processChildren(children) {\n if (this.sorter) {\n children = [...children].sort(this.sorter.compare.bind(this.sorter));\n }\n return children;\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nclass CompressibleAsyncDataTreeNodeWrapper {\n get element() {\n return {\n elements: this.node.element.elements.map(e => e.element),\n incompressible: this.node.element.incompressible\n };\n }\n get children() { return this.node.children.map(node => new CompressibleAsyncDataTreeNodeWrapper(node)); }\n get depth() { return this.node.depth; }\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\n get visibleChildIndex() { return this.node.visibleChildIndex; }\n get collapsible() { return this.node.collapsible; }\n get collapsed() { return this.node.collapsed; }\n get visible() { return this.node.visible; }\n get filterData() { return this.node.filterData; }\n constructor(node) {\n this.node = node;\n }\n}\nclass CompressibleAsyncDataTreeRenderer {\n constructor(renderer, nodeMapper, compressibleNodeMapperProvider, onDidChangeTwistieState) {\n this.renderer = renderer;\n this.nodeMapper = nodeMapper;\n this.compressibleNodeMapperProvider = compressibleNodeMapperProvider;\n this.onDidChangeTwistieState = onDidChangeTwistieState;\n this.renderedNodes = new Map();\n this.disposables = [];\n this.templateId = renderer.templateId;\n }\n renderTemplate(container) {\n const templateData = this.renderer.renderTemplate(container);\n return { templateData };\n }\n renderElement(node, index, templateData, height) {\n this.renderer.renderElement(this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n renderCompressedElements(node, index, templateData, height) {\n this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(node), index, templateData.templateData, height);\n }\n renderTwistie(element, twistieElement) {\n if (element.slow) {\n twistieElement.classList.add(..._common_themables_js__WEBPACK_IMPORTED_MODULE_7__.ThemeIcon.asClassNameArray(_common_codicons_js__WEBPACK_IMPORTED_MODULE_6__.Codicon.treeItemLoading));\n return true;\n }\n else {\n twistieElement.classList.remove(..._common_themables_js__WEBPACK_IMPORTED_MODULE_7__.ThemeIcon.asClassNameArray(_common_codicons_js__WEBPACK_IMPORTED_MODULE_6__.Codicon.treeItemLoading));\n return false;\n }\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b;\n (_b = (_a = this.renderer).disposeElement) === null || _b === void 0 ? void 0 : _b.call(_a, this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n disposeCompressedElements(node, index, templateData, height) {\n var _a, _b;\n (_b = (_a = this.renderer).disposeCompressedElements) === null || _b === void 0 ? void 0 : _b.call(_a, this.compressibleNodeMapperProvider().map(node), index, templateData.templateData, height);\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.templateData);\n }\n dispose() {\n this.renderedNodes.clear();\n this.disposables = (0,_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_11__.dispose)(this.disposables);\n }\n}\nfunction asCompressibleObjectTreeOptions(options) {\n const objectTreeOptions = options && asObjectTreeOptions(options);\n return objectTreeOptions && Object.assign(Object.assign({}, objectTreeOptions), { keyboardNavigationLabelProvider: objectTreeOptions.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, objectTreeOptions.keyboardNavigationLabelProvider), { getCompressedNodeKeyboardNavigationLabel(els) {\n return options.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(els.map(e => e.element));\n } }) });\n}\nclass CompressibleAsyncDataTree extends AsyncDataTree {\n constructor(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, options = {}) {\n super(user, container, virtualDelegate, renderers, dataSource, options);\n this.compressionDelegate = compressionDelegate;\n this.compressibleNodeMapper = new _tree_js__WEBPACK_IMPORTED_MODULE_4__.WeakMapper(node => new CompressibleAsyncDataTreeNodeWrapper(node));\n this.filter = options.filter;\n }\n createTree(user, container, delegate, renderers, options) {\n const objectTreeDelegate = new _abstractTree_js__WEBPACK_IMPORTED_MODULE_1__.ComposedTreeDelegate(delegate);\n const objectTreeRenderers = renderers.map(r => new CompressibleAsyncDataTreeRenderer(r, this.nodeMapper, () => this.compressibleNodeMapper, this._onDidChangeNodeSlowState.event));\n const objectTreeOptions = asCompressibleObjectTreeOptions(options) || {};\n return new _objectTree_js__WEBPACK_IMPORTED_MODULE_3__.CompressibleObjectTree(user, container, objectTreeDelegate, objectTreeRenderers, objectTreeOptions);\n }\n asTreeElement(node, viewStateContext) {\n return Object.assign({ incompressible: this.compressionDelegate.isIncompressible(node.element) }, super.asTreeElement(node, viewStateContext));\n }\n updateOptions(options = {}) {\n this.tree.updateOptions(options);\n }\n render(node, viewStateContext) {\n if (!this.identityProvider) {\n return super.render(node, viewStateContext);\n }\n // Preserve traits across compressions. Hacky but does the trick.\n // This is hard to fix properly since it requires rewriting the traits\n // across trees and lists. Let's just keep it this way for now.\n const getId = (element) => this.identityProvider.getId(element).toString();\n const getUncompressedIds = (nodes) => {\n const result = new Set();\n for (const node of nodes) {\n const compressedNode = this.tree.getCompressedTreeNode(node === this.root ? null : node);\n if (!compressedNode.element) {\n continue;\n }\n for (const node of compressedNode.element.elements) {\n result.add(getId(node.element));\n }\n }\n return result;\n };\n const oldSelection = getUncompressedIds(this.tree.getSelection());\n const oldFocus = getUncompressedIds(this.tree.getFocus());\n super.render(node, viewStateContext);\n const selection = this.getSelection();\n let didChangeSelection = false;\n const focus = this.getFocus();\n let didChangeFocus = false;\n const visit = (node) => {\n const compressedNode = node.element;\n if (compressedNode) {\n for (let i = 0; i < compressedNode.elements.length; i++) {\n const id = getId(compressedNode.elements[i].element);\n const element = compressedNode.elements[compressedNode.elements.length - 1].element;\n // github.com/microsoft/vscode/issues/85938\n if (oldSelection.has(id) && selection.indexOf(element) === -1) {\n selection.push(element);\n didChangeSelection = true;\n }\n if (oldFocus.has(id) && focus.indexOf(element) === -1) {\n focus.push(element);\n didChangeFocus = true;\n }\n }\n }\n node.children.forEach(visit);\n };\n visit(this.tree.getCompressedTreeNode(node === this.root ? null : node));\n if (didChangeSelection) {\n this.setSelection(selection);\n }\n if (didChangeFocus) {\n this.setFocus(focus);\n }\n }\n // For compressed async data trees, `TreeVisibility.Recurse` doesn't currently work\n // and we have to filter everything beforehand\n // Related to #85193 and #85835\n processChildren(children) {\n if (this.filter) {\n children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_10__.Iterable.filter(children, e => {\n const result = this.filter.filter(e, 1 /* TreeVisibility.Visible */);\n const visibility = getVisibility(result);\n if (visibility === 2 /* TreeVisibility.Recurse */) {\n throw new Error('Recursive tree visibility not supported in async data compressed trees');\n }\n return visibility === 1 /* TreeVisibility.Visible */;\n });\n }\n return super.processChildren(children);\n }\n}\nfunction getVisibility(filterResult) {\n if (typeof filterResult === 'boolean') {\n return filterResult ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */;\n }\n else if ((0,_indexTreeModel_js__WEBPACK_IMPORTED_MODULE_2__.isFilterResult)(filterResult)) {\n return (0,_indexTreeModel_js__WEBPACK_IMPORTED_MODULE_2__.getVisibleState)(filterResult.visibility);\n }\n else {\n return (0,_indexTreeModel_js__WEBPACK_IMPORTED_MODULE_2__.getVisibleState)(filterResult);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/asyncDataTree.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CompressedObjectTreeModel: () => (/* binding */ CompressedObjectTreeModel),\n/* harmony export */ CompressibleObjectTreeModel: () => (/* binding */ CompressibleObjectTreeModel),\n/* harmony export */ DefaultElementMapper: () => (/* binding */ DefaultElementMapper),\n/* harmony export */ compress: () => (/* binding */ compress),\n/* harmony export */ decompress: () => (/* binding */ decompress)\n/* harmony export */ });\n/* harmony import */ var _objectTreeModel_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./objectTreeModel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js\");\n/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\nfunction noCompress(element) {\n const elements = [element.element];\n const incompressible = element.incompressible || false;\n return {\n element: { elements, incompressible },\n children: _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.map(_common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.from(element.children), noCompress),\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n}\n// Exported only for test reasons, do not use directly\nfunction compress(element) {\n const elements = [element.element];\n const incompressible = element.incompressible || false;\n let childrenIterator;\n let children;\n while (true) {\n [children, childrenIterator] = _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.consume(_common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.from(element.children), 2);\n if (children.length !== 1) {\n break;\n }\n if (children[0].incompressible) {\n break;\n }\n element = children[0];\n elements.push(element.element);\n }\n return {\n element: { elements, incompressible },\n children: _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.map(_common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.concat(children, childrenIterator), compress),\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n}\nfunction _decompress(element, index = 0) {\n let children;\n if (index < element.element.elements.length - 1) {\n children = [_decompress(element, index + 1)];\n }\n else {\n children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.map(_common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.from(element.children), el => _decompress(el, 0));\n }\n if (index === 0 && element.element.incompressible) {\n return {\n element: element.element.elements[index],\n children,\n incompressible: true,\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n }\n return {\n element: element.element.elements[index],\n children,\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n}\n// Exported only for test reasons, do not use directly\nfunction decompress(element) {\n return _decompress(element, 0);\n}\nfunction splice(treeElement, element, children) {\n if (treeElement.element === element) {\n return Object.assign(Object.assign({}, treeElement), { children });\n }\n return Object.assign(Object.assign({}, treeElement), { children: _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.map(_common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.from(treeElement.children), e => splice(e, element, children)) });\n}\nconst wrapIdentityProvider = (base) => ({\n getId(node) {\n return node.elements.map(e => base.getId(e).toString()).join('\\0');\n }\n});\n// Exported only for test reasons, do not use directly\nclass CompressedObjectTreeModel {\n get onDidSplice() { return this.model.onDidSplice; }\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\n get onDidChangeRenderNodeCount() { return this.model.onDidChangeRenderNodeCount; }\n constructor(user, list, options = {}) {\n this.user = user;\n this.rootRef = null;\n this.nodes = new Map();\n this.model = new _objectTreeModel_js__WEBPACK_IMPORTED_MODULE_0__.ObjectTreeModel(user, list, options);\n this.enabled = typeof options.compressionEnabled === 'undefined' ? true : options.compressionEnabled;\n this.identityProvider = options.identityProvider;\n }\n setChildren(element, children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.empty(), options) {\n // Diffs must be deem, since the compression can affect nested elements.\n // @see https://github.com/microsoft/vscode/pull/114237#issuecomment-759425034\n const diffIdentityProvider = options.diffIdentityProvider && wrapIdentityProvider(options.diffIdentityProvider);\n if (element === null) {\n const compressedChildren = _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.map(children, this.enabled ? compress : noCompress);\n this._setChildren(null, compressedChildren, { diffIdentityProvider, diffDepth: Infinity });\n return;\n }\n const compressedNode = this.nodes.get(element);\n if (!compressedNode) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_1__.TreeError(this.user, 'Unknown compressed tree node');\n }\n const node = this.model.getNode(compressedNode);\n const compressedParentNode = this.model.getParentNodeLocation(compressedNode);\n const parent = this.model.getNode(compressedParentNode);\n const decompressedElement = decompress(node);\n const splicedElement = splice(decompressedElement, element, children);\n const recompressedElement = (this.enabled ? compress : noCompress)(splicedElement);\n const parentChildren = parent.children\n .map(child => child === node ? recompressedElement : child);\n this._setChildren(parent.element, parentChildren, {\n diffIdentityProvider,\n diffDepth: node.depth - parent.depth,\n });\n }\n setCompressionEnabled(enabled) {\n if (enabled === this.enabled) {\n return;\n }\n this.enabled = enabled;\n const root = this.model.getNode();\n const rootChildren = root.children;\n const decompressedRootChildren = _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.map(rootChildren, decompress);\n const recompressedRootChildren = _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.map(decompressedRootChildren, enabled ? compress : noCompress);\n // it should be safe to always use deep diff mode here if an identity\n // provider is available, since we know the raw nodes are unchanged.\n this._setChildren(null, recompressedRootChildren, {\n diffIdentityProvider: this.identityProvider,\n diffDepth: Infinity,\n });\n }\n _setChildren(node, children, options) {\n const insertedElements = new Set();\n const onDidCreateNode = (node) => {\n for (const element of node.element.elements) {\n insertedElements.add(element);\n this.nodes.set(element, node.element);\n }\n };\n const onDidDeleteNode = (node) => {\n for (const element of node.element.elements) {\n if (!insertedElements.has(element)) {\n this.nodes.delete(element);\n }\n }\n };\n this.model.setChildren(node, children, Object.assign(Object.assign({}, options), { onDidCreateNode, onDidDeleteNode }));\n }\n has(element) {\n return this.nodes.has(element);\n }\n getListIndex(location) {\n const node = this.getCompressedNode(location);\n return this.model.getListIndex(node);\n }\n getListRenderCount(location) {\n const node = this.getCompressedNode(location);\n return this.model.getListRenderCount(node);\n }\n getNode(location) {\n if (typeof location === 'undefined') {\n return this.model.getNode();\n }\n const node = this.getCompressedNode(location);\n return this.model.getNode(node);\n }\n // TODO: review this\n getNodeLocation(node) {\n const compressedNode = this.model.getNodeLocation(node);\n if (compressedNode === null) {\n return null;\n }\n return compressedNode.elements[compressedNode.elements.length - 1];\n }\n // TODO: review this\n getParentNodeLocation(location) {\n const compressedNode = this.getCompressedNode(location);\n const parentNode = this.model.getParentNodeLocation(compressedNode);\n if (parentNode === null) {\n return null;\n }\n return parentNode.elements[parentNode.elements.length - 1];\n }\n getFirstElementChild(location) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.getFirstElementChild(compressedNode);\n }\n isCollapsible(location) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.isCollapsible(compressedNode);\n }\n setCollapsible(location, collapsible) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.setCollapsible(compressedNode, collapsible);\n }\n isCollapsed(location) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.isCollapsed(compressedNode);\n }\n setCollapsed(location, collapsed, recursive) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.setCollapsed(compressedNode, collapsed, recursive);\n }\n expandTo(location) {\n const compressedNode = this.getCompressedNode(location);\n this.model.expandTo(compressedNode);\n }\n rerender(location) {\n const compressedNode = this.getCompressedNode(location);\n this.model.rerender(compressedNode);\n }\n refilter() {\n this.model.refilter();\n }\n getCompressedNode(element) {\n if (element === null) {\n return null;\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_1__.TreeError(this.user, `Tree element not found: ${element}`);\n }\n return node;\n }\n}\nconst DefaultElementMapper = elements => elements[elements.length - 1];\nclass CompressedTreeNodeWrapper {\n get element() { return this.node.element === null ? null : this.unwrapper(this.node.element); }\n get children() { return this.node.children.map(node => new CompressedTreeNodeWrapper(this.unwrapper, node)); }\n get depth() { return this.node.depth; }\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\n get visibleChildIndex() { return this.node.visibleChildIndex; }\n get collapsible() { return this.node.collapsible; }\n get collapsed() { return this.node.collapsed; }\n get visible() { return this.node.visible; }\n get filterData() { return this.node.filterData; }\n constructor(unwrapper, node) {\n this.unwrapper = unwrapper;\n this.node = node;\n }\n}\nfunction mapList(nodeMapper, list) {\n return {\n splice(start, deleteCount, toInsert) {\n list.splice(start, deleteCount, toInsert.map(node => nodeMapper.map(node)));\n },\n updateElementHeight(index, height) {\n list.updateElementHeight(index, height);\n }\n };\n}\nfunction mapOptions(compressedNodeUnwrapper, options) {\n return Object.assign(Object.assign({}, options), { identityProvider: options.identityProvider && {\n getId(node) {\n return options.identityProvider.getId(compressedNodeUnwrapper(node));\n }\n }, sorter: options.sorter && {\n compare(node, otherNode) {\n return options.sorter.compare(node.elements[0], otherNode.elements[0]);\n }\n }, filter: options.filter && {\n filter(node, parentVisibility) {\n return options.filter.filter(compressedNodeUnwrapper(node), parentVisibility);\n }\n } });\n}\nclass CompressibleObjectTreeModel {\n get onDidSplice() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.map(this.model.onDidSplice, ({ insertedNodes, deletedNodes }) => ({\n insertedNodes: insertedNodes.map(node => this.nodeMapper.map(node)),\n deletedNodes: deletedNodes.map(node => this.nodeMapper.map(node)),\n }));\n }\n get onDidChangeCollapseState() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.map(this.model.onDidChangeCollapseState, ({ node, deep }) => ({\n node: this.nodeMapper.map(node),\n deep\n }));\n }\n get onDidChangeRenderNodeCount() {\n return _common_event_js__WEBPACK_IMPORTED_MODULE_2__.Event.map(this.model.onDidChangeRenderNodeCount, node => this.nodeMapper.map(node));\n }\n constructor(user, list, options = {}) {\n this.rootRef = null;\n this.elementMapper = options.elementMapper || DefaultElementMapper;\n const compressedNodeUnwrapper = node => this.elementMapper(node.elements);\n this.nodeMapper = new _tree_js__WEBPACK_IMPORTED_MODULE_1__.WeakMapper(node => new CompressedTreeNodeWrapper(compressedNodeUnwrapper, node));\n this.model = new CompressedObjectTreeModel(user, mapList(this.nodeMapper, list), mapOptions(compressedNodeUnwrapper, options));\n }\n setChildren(element, children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_3__.Iterable.empty(), options = {}) {\n this.model.setChildren(element, children, options);\n }\n setCompressionEnabled(enabled) {\n this.model.setCompressionEnabled(enabled);\n }\n has(location) {\n return this.model.has(location);\n }\n getListIndex(location) {\n return this.model.getListIndex(location);\n }\n getListRenderCount(location) {\n return this.model.getListRenderCount(location);\n }\n getNode(location) {\n return this.nodeMapper.map(this.model.getNode(location));\n }\n getNodeLocation(node) {\n return node.element;\n }\n getParentNodeLocation(location) {\n return this.model.getParentNodeLocation(location);\n }\n getFirstElementChild(location) {\n const result = this.model.getFirstElementChild(location);\n if (result === null || typeof result === 'undefined') {\n return result;\n }\n return this.elementMapper(result.elements);\n }\n isCollapsible(location) {\n return this.model.isCollapsible(location);\n }\n setCollapsible(location, collapsed) {\n return this.model.setCollapsible(location, collapsed);\n }\n isCollapsed(location) {\n return this.model.isCollapsed(location);\n }\n setCollapsed(location, collapsed, recursive) {\n return this.model.setCollapsed(location, collapsed, recursive);\n }\n expandTo(location) {\n return this.model.expandTo(location);\n }\n rerender(location) {\n return this.model.rerender(location);\n }\n refilter() {\n return this.model.refilter();\n }\n getCompressedTreeNode(location = null) {\n return this.model.getNode(location);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/dataTree.js": +/*!****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/dataTree.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DataTree: () => (/* binding */ DataTree)\n/* harmony export */ });\n/* harmony import */ var _abstractTree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstractTree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js\");\n/* harmony import */ var _objectTreeModel_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./objectTreeModel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nclass DataTree extends _abstractTree_js__WEBPACK_IMPORTED_MODULE_0__.AbstractTree {\n constructor(user, container, delegate, renderers, dataSource, options = {}) {\n super(user, container, delegate, renderers, options);\n this.user = user;\n this.dataSource = dataSource;\n this.identityProvider = options.identityProvider;\n }\n createModel(user, view, options) {\n return new _objectTreeModel_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeModel(user, view, options);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/dataTree.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IndexTreeModel: () => (/* binding */ IndexTreeModel),\n/* harmony export */ getVisibleState: () => (/* binding */ getVisibleState),\n/* harmony export */ isFilterResult: () => (/* binding */ isFilterResult)\n/* harmony export */ });\n/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js\");\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_symbols_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/symbols.js */ \"./node_modules/monaco-editor/esm/vs/base/common/symbols.js\");\n/* harmony import */ var _common_diff_diff_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/diff/diff.js */ \"./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../common/iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\nfunction isFilterResult(obj) {\n return typeof obj === 'object' && 'visibility' in obj && 'data' in obj;\n}\nfunction getVisibleState(visibility) {\n switch (visibility) {\n case true: return 1 /* TreeVisibility.Visible */;\n case false: return 0 /* TreeVisibility.Hidden */;\n default: return visibility;\n }\n}\nfunction isCollapsibleStateUpdate(update) {\n return typeof update.collapsible === 'boolean';\n}\nclass IndexTreeModel {\n constructor(user, list, rootElement, options = {}) {\n this.user = user;\n this.list = list;\n this.rootRef = [];\n this.eventBufferer = new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.EventBufferer();\n this._onDidChangeCollapseState = new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter();\n this.onDidChangeCollapseState = this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event);\n this._onDidChangeRenderNodeCount = new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter();\n this.onDidChangeRenderNodeCount = this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event);\n this._onDidSplice = new _common_event_js__WEBPACK_IMPORTED_MODULE_5__.Emitter();\n this.onDidSplice = this._onDidSplice.event;\n this.refilterDelayer = new _common_async_js__WEBPACK_IMPORTED_MODULE_2__.Delayer(_common_symbols_js__WEBPACK_IMPORTED_MODULE_3__.MicrotaskDelay);\n this.collapseByDefault = typeof options.collapseByDefault === 'undefined' ? false : options.collapseByDefault;\n this.filter = options.filter;\n this.autoExpandSingleChildren = typeof options.autoExpandSingleChildren === 'undefined' ? false : options.autoExpandSingleChildren;\n this.root = {\n parent: undefined,\n element: rootElement,\n children: [],\n depth: 0,\n visibleChildrenCount: 0,\n visibleChildIndex: -1,\n collapsible: false,\n collapsed: false,\n renderNodeCount: 0,\n visibility: 1 /* TreeVisibility.Visible */,\n visible: true,\n filterData: undefined\n };\n }\n splice(location, deleteCount, toInsert = _common_iterator_js__WEBPACK_IMPORTED_MODULE_6__.Iterable.empty(), options = {}) {\n if (location.length === 0) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_0__.TreeError(this.user, 'Invalid tree location');\n }\n if (options.diffIdentityProvider) {\n this.spliceSmart(options.diffIdentityProvider, location, deleteCount, toInsert, options);\n }\n else {\n this.spliceSimple(location, deleteCount, toInsert, options);\n }\n }\n spliceSmart(identity, location, deleteCount, toInsertIterable, options, recurseLevels) {\n var _a;\n if (toInsertIterable === void 0) { toInsertIterable = _common_iterator_js__WEBPACK_IMPORTED_MODULE_6__.Iterable.empty(); }\n if (recurseLevels === void 0) { recurseLevels = (_a = options.diffDepth) !== null && _a !== void 0 ? _a : 0; }\n const { parentNode } = this.getParentNodeWithListIndex(location);\n if (!parentNode.lastDiffIds) {\n return this.spliceSimple(location, deleteCount, toInsertIterable, options);\n }\n const toInsert = [...toInsertIterable];\n const index = location[location.length - 1];\n const diff = new _common_diff_diff_js__WEBPACK_IMPORTED_MODULE_4__.LcsDiff({ getElements: () => parentNode.lastDiffIds }, {\n getElements: () => [\n ...parentNode.children.slice(0, index),\n ...toInsert,\n ...parentNode.children.slice(index + deleteCount),\n ].map(e => identity.getId(e.element).toString())\n }).ComputeDiff(false);\n // if we were given a 'best effort' diff, use default behavior\n if (diff.quitEarly) {\n parentNode.lastDiffIds = undefined;\n return this.spliceSimple(location, deleteCount, toInsert, options);\n }\n const locationPrefix = location.slice(0, -1);\n const recurseSplice = (fromOriginal, fromModified, count) => {\n if (recurseLevels > 0) {\n for (let i = 0; i < count; i++) {\n fromOriginal--;\n fromModified--;\n this.spliceSmart(identity, [...locationPrefix, fromOriginal, 0], Number.MAX_SAFE_INTEGER, toInsert[fromModified].children, options, recurseLevels - 1);\n }\n }\n };\n let lastStartO = Math.min(parentNode.children.length, index + deleteCount);\n let lastStartM = toInsert.length;\n for (const change of diff.changes.sort((a, b) => b.originalStart - a.originalStart)) {\n recurseSplice(lastStartO, lastStartM, lastStartO - (change.originalStart + change.originalLength));\n lastStartO = change.originalStart;\n lastStartM = change.modifiedStart - index;\n this.spliceSimple([...locationPrefix, lastStartO], change.originalLength, _common_iterator_js__WEBPACK_IMPORTED_MODULE_6__.Iterable.slice(toInsert, lastStartM, lastStartM + change.modifiedLength), options);\n }\n // at this point, startO === startM === count since any remaining prefix should match\n recurseSplice(lastStartO, lastStartM, lastStartO);\n }\n spliceSimple(location, deleteCount, toInsert = _common_iterator_js__WEBPACK_IMPORTED_MODULE_6__.Iterable.empty(), { onDidCreateNode, onDidDeleteNode, diffIdentityProvider }) {\n const { parentNode, listIndex, revealed, visible } = this.getParentNodeWithListIndex(location);\n const treeListElementsToInsert = [];\n const nodesToInsertIterator = _common_iterator_js__WEBPACK_IMPORTED_MODULE_6__.Iterable.map(toInsert, el => this.createTreeNode(el, parentNode, parentNode.visible ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */, revealed, treeListElementsToInsert, onDidCreateNode));\n const lastIndex = location[location.length - 1];\n const lastHadChildren = parentNode.children.length > 0;\n // figure out what's the visible child start index right before the\n // splice point\n let visibleChildStartIndex = 0;\n for (let i = lastIndex; i >= 0 && i < parentNode.children.length; i--) {\n const child = parentNode.children[i];\n if (child.visible) {\n visibleChildStartIndex = child.visibleChildIndex;\n break;\n }\n }\n const nodesToInsert = [];\n let insertedVisibleChildrenCount = 0;\n let renderNodeCount = 0;\n for (const child of nodesToInsertIterator) {\n nodesToInsert.push(child);\n renderNodeCount += child.renderNodeCount;\n if (child.visible) {\n child.visibleChildIndex = visibleChildStartIndex + insertedVisibleChildrenCount++;\n }\n }\n const deletedNodes = (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.splice)(parentNode.children, lastIndex, deleteCount, nodesToInsert);\n if (!diffIdentityProvider) {\n parentNode.lastDiffIds = undefined;\n }\n else if (parentNode.lastDiffIds) {\n (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.splice)(parentNode.lastDiffIds, lastIndex, deleteCount, nodesToInsert.map(n => diffIdentityProvider.getId(n.element).toString()));\n }\n else {\n parentNode.lastDiffIds = parentNode.children.map(n => diffIdentityProvider.getId(n.element).toString());\n }\n // figure out what is the count of deleted visible children\n let deletedVisibleChildrenCount = 0;\n for (const child of deletedNodes) {\n if (child.visible) {\n deletedVisibleChildrenCount++;\n }\n }\n // and adjust for all visible children after the splice point\n if (deletedVisibleChildrenCount !== 0) {\n for (let i = lastIndex + nodesToInsert.length; i < parentNode.children.length; i++) {\n const child = parentNode.children[i];\n if (child.visible) {\n child.visibleChildIndex -= deletedVisibleChildrenCount;\n }\n }\n }\n // update parent's visible children count\n parentNode.visibleChildrenCount += insertedVisibleChildrenCount - deletedVisibleChildrenCount;\n if (revealed && visible) {\n const visibleDeleteCount = deletedNodes.reduce((r, node) => r + (node.visible ? node.renderNodeCount : 0), 0);\n this._updateAncestorsRenderNodeCount(parentNode, renderNodeCount - visibleDeleteCount);\n this.list.splice(listIndex, visibleDeleteCount, treeListElementsToInsert);\n }\n if (deletedNodes.length > 0 && onDidDeleteNode) {\n const visit = (node) => {\n onDidDeleteNode(node);\n node.children.forEach(visit);\n };\n deletedNodes.forEach(visit);\n }\n this._onDidSplice.fire({ insertedNodes: nodesToInsert, deletedNodes });\n const currentlyHasChildren = parentNode.children.length > 0;\n if (lastHadChildren !== currentlyHasChildren) {\n this.setCollapsible(location.slice(0, -1), currentlyHasChildren);\n }\n let node = parentNode;\n while (node) {\n if (node.visibility === 2 /* TreeVisibility.Recurse */) {\n // delayed to avoid excessive refiltering, see #135941\n this.refilterDelayer.trigger(() => this.refilter());\n break;\n }\n node = node.parent;\n }\n }\n rerender(location) {\n if (location.length === 0) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_0__.TreeError(this.user, 'Invalid tree location');\n }\n const { node, listIndex, revealed } = this.getTreeNodeWithListIndex(location);\n if (node.visible && revealed) {\n this.list.splice(listIndex, 1, [node]);\n }\n }\n has(location) {\n return this.hasTreeNode(location);\n }\n getListIndex(location) {\n const { listIndex, visible, revealed } = this.getTreeNodeWithListIndex(location);\n return visible && revealed ? listIndex : -1;\n }\n getListRenderCount(location) {\n return this.getTreeNode(location).renderNodeCount;\n }\n isCollapsible(location) {\n return this.getTreeNode(location).collapsible;\n }\n setCollapsible(location, collapsible) {\n const node = this.getTreeNode(location);\n if (typeof collapsible === 'undefined') {\n collapsible = !node.collapsible;\n }\n const update = { collapsible };\n return this.eventBufferer.bufferEvents(() => this._setCollapseState(location, update));\n }\n isCollapsed(location) {\n return this.getTreeNode(location).collapsed;\n }\n setCollapsed(location, collapsed, recursive) {\n const node = this.getTreeNode(location);\n if (typeof collapsed === 'undefined') {\n collapsed = !node.collapsed;\n }\n const update = { collapsed, recursive: recursive || false };\n return this.eventBufferer.bufferEvents(() => this._setCollapseState(location, update));\n }\n _setCollapseState(location, update) {\n const { node, listIndex, revealed } = this.getTreeNodeWithListIndex(location);\n const result = this._setListNodeCollapseState(node, listIndex, revealed, update);\n if (node !== this.root && this.autoExpandSingleChildren && result && !isCollapsibleStateUpdate(update) && node.collapsible && !node.collapsed && !update.recursive) {\n let onlyVisibleChildIndex = -1;\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (child.visible) {\n if (onlyVisibleChildIndex > -1) {\n onlyVisibleChildIndex = -1;\n break;\n }\n else {\n onlyVisibleChildIndex = i;\n }\n }\n }\n if (onlyVisibleChildIndex > -1) {\n this._setCollapseState([...location, onlyVisibleChildIndex], update);\n }\n }\n return result;\n }\n _setListNodeCollapseState(node, listIndex, revealed, update) {\n const result = this._setNodeCollapseState(node, update, false);\n if (!revealed || !node.visible || !result) {\n return result;\n }\n const previousRenderNodeCount = node.renderNodeCount;\n const toInsert = this.updateNodeAfterCollapseChange(node);\n const deleteCount = previousRenderNodeCount - (listIndex === -1 ? 0 : 1);\n this.list.splice(listIndex + 1, deleteCount, toInsert.slice(1));\n return result;\n }\n _setNodeCollapseState(node, update, deep) {\n let result;\n if (node === this.root) {\n result = false;\n }\n else {\n if (isCollapsibleStateUpdate(update)) {\n result = node.collapsible !== update.collapsible;\n node.collapsible = update.collapsible;\n }\n else if (!node.collapsible) {\n result = false;\n }\n else {\n result = node.collapsed !== update.collapsed;\n node.collapsed = update.collapsed;\n }\n if (result) {\n this._onDidChangeCollapseState.fire({ node, deep });\n }\n }\n if (!isCollapsibleStateUpdate(update) && update.recursive) {\n for (const child of node.children) {\n result = this._setNodeCollapseState(child, update, true) || result;\n }\n }\n return result;\n }\n expandTo(location) {\n this.eventBufferer.bufferEvents(() => {\n let node = this.getTreeNode(location);\n while (node.parent) {\n node = node.parent;\n location = location.slice(0, location.length - 1);\n if (node.collapsed) {\n this._setCollapseState(location, { collapsed: false, recursive: false });\n }\n }\n });\n }\n refilter() {\n const previousRenderNodeCount = this.root.renderNodeCount;\n const toInsert = this.updateNodeAfterFilterChange(this.root);\n this.list.splice(0, previousRenderNodeCount, toInsert);\n this.refilterDelayer.cancel();\n }\n createTreeNode(treeElement, parent, parentVisibility, revealed, treeListElements, onDidCreateNode) {\n const node = {\n parent,\n element: treeElement.element,\n children: [],\n depth: parent.depth + 1,\n visibleChildrenCount: 0,\n visibleChildIndex: -1,\n collapsible: typeof treeElement.collapsible === 'boolean' ? treeElement.collapsible : (typeof treeElement.collapsed !== 'undefined'),\n collapsed: typeof treeElement.collapsed === 'undefined' ? this.collapseByDefault : treeElement.collapsed,\n renderNodeCount: 1,\n visibility: 1 /* TreeVisibility.Visible */,\n visible: true,\n filterData: undefined\n };\n const visibility = this._filterNode(node, parentVisibility);\n node.visibility = visibility;\n if (revealed) {\n treeListElements.push(node);\n }\n const childElements = treeElement.children || _common_iterator_js__WEBPACK_IMPORTED_MODULE_6__.Iterable.empty();\n const childRevealed = revealed && visibility !== 0 /* TreeVisibility.Hidden */ && !node.collapsed;\n let visibleChildrenCount = 0;\n let renderNodeCount = 1;\n for (const el of childElements) {\n const child = this.createTreeNode(el, node, visibility, childRevealed, treeListElements, onDidCreateNode);\n node.children.push(child);\n renderNodeCount += child.renderNodeCount;\n if (child.visible) {\n child.visibleChildIndex = visibleChildrenCount++;\n }\n }\n node.collapsible = node.collapsible || node.children.length > 0;\n node.visibleChildrenCount = visibleChildrenCount;\n node.visible = visibility === 2 /* TreeVisibility.Recurse */ ? visibleChildrenCount > 0 : (visibility === 1 /* TreeVisibility.Visible */);\n if (!node.visible) {\n node.renderNodeCount = 0;\n if (revealed) {\n treeListElements.pop();\n }\n }\n else if (!node.collapsed) {\n node.renderNodeCount = renderNodeCount;\n }\n onDidCreateNode === null || onDidCreateNode === void 0 ? void 0 : onDidCreateNode(node);\n return node;\n }\n updateNodeAfterCollapseChange(node) {\n const previousRenderNodeCount = node.renderNodeCount;\n const result = [];\n this._updateNodeAfterCollapseChange(node, result);\n this._updateAncestorsRenderNodeCount(node.parent, result.length - previousRenderNodeCount);\n return result;\n }\n _updateNodeAfterCollapseChange(node, result) {\n if (node.visible === false) {\n return 0;\n }\n result.push(node);\n node.renderNodeCount = 1;\n if (!node.collapsed) {\n for (const child of node.children) {\n node.renderNodeCount += this._updateNodeAfterCollapseChange(child, result);\n }\n }\n this._onDidChangeRenderNodeCount.fire(node);\n return node.renderNodeCount;\n }\n updateNodeAfterFilterChange(node) {\n const previousRenderNodeCount = node.renderNodeCount;\n const result = [];\n this._updateNodeAfterFilterChange(node, node.visible ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */, result);\n this._updateAncestorsRenderNodeCount(node.parent, result.length - previousRenderNodeCount);\n return result;\n }\n _updateNodeAfterFilterChange(node, parentVisibility, result, revealed = true) {\n let visibility;\n if (node !== this.root) {\n visibility = this._filterNode(node, parentVisibility);\n if (visibility === 0 /* TreeVisibility.Hidden */) {\n node.visible = false;\n node.renderNodeCount = 0;\n return false;\n }\n if (revealed) {\n result.push(node);\n }\n }\n const resultStartLength = result.length;\n node.renderNodeCount = node === this.root ? 0 : 1;\n let hasVisibleDescendants = false;\n if (!node.collapsed || visibility !== 0 /* TreeVisibility.Hidden */) {\n let visibleChildIndex = 0;\n for (const child of node.children) {\n hasVisibleDescendants = this._updateNodeAfterFilterChange(child, visibility, result, revealed && !node.collapsed) || hasVisibleDescendants;\n if (child.visible) {\n child.visibleChildIndex = visibleChildIndex++;\n }\n }\n node.visibleChildrenCount = visibleChildIndex;\n }\n else {\n node.visibleChildrenCount = 0;\n }\n if (node !== this.root) {\n node.visible = visibility === 2 /* TreeVisibility.Recurse */ ? hasVisibleDescendants : (visibility === 1 /* TreeVisibility.Visible */);\n node.visibility = visibility;\n }\n if (!node.visible) {\n node.renderNodeCount = 0;\n if (revealed) {\n result.pop();\n }\n }\n else if (!node.collapsed) {\n node.renderNodeCount += result.length - resultStartLength;\n }\n this._onDidChangeRenderNodeCount.fire(node);\n return node.visible;\n }\n _updateAncestorsRenderNodeCount(node, diff) {\n if (diff === 0) {\n return;\n }\n while (node) {\n node.renderNodeCount += diff;\n this._onDidChangeRenderNodeCount.fire(node);\n node = node.parent;\n }\n }\n _filterNode(node, parentVisibility) {\n const result = this.filter ? this.filter.filter(node.element, parentVisibility) : 1 /* TreeVisibility.Visible */;\n if (typeof result === 'boolean') {\n node.filterData = undefined;\n return result ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */;\n }\n else if (isFilterResult(result)) {\n node.filterData = result.data;\n return getVisibleState(result.visibility);\n }\n else {\n node.filterData = undefined;\n return getVisibleState(result);\n }\n }\n // cheap\n hasTreeNode(location, node = this.root) {\n if (!location || location.length === 0) {\n return true;\n }\n const [index, ...rest] = location;\n if (index < 0 || index > node.children.length) {\n return false;\n }\n return this.hasTreeNode(rest, node.children[index]);\n }\n // cheap\n getTreeNode(location, node = this.root) {\n if (!location || location.length === 0) {\n return node;\n }\n const [index, ...rest] = location;\n if (index < 0 || index > node.children.length) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_0__.TreeError(this.user, 'Invalid tree location');\n }\n return this.getTreeNode(rest, node.children[index]);\n }\n // expensive\n getTreeNodeWithListIndex(location) {\n if (location.length === 0) {\n return { node: this.root, listIndex: -1, revealed: true, visible: false };\n }\n const { parentNode, listIndex, revealed, visible } = this.getParentNodeWithListIndex(location);\n const index = location[location.length - 1];\n if (index < 0 || index > parentNode.children.length) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_0__.TreeError(this.user, 'Invalid tree location');\n }\n const node = parentNode.children[index];\n return { node, listIndex, revealed, visible: visible && node.visible };\n }\n getParentNodeWithListIndex(location, node = this.root, listIndex = 0, revealed = true, visible = true) {\n const [index, ...rest] = location;\n if (index < 0 || index > node.children.length) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_0__.TreeError(this.user, 'Invalid tree location');\n }\n // TODO@joao perf!\n for (let i = 0; i < index; i++) {\n listIndex += node.children[i].renderNodeCount;\n }\n revealed = revealed && !node.collapsed;\n visible = visible && node.visible;\n if (rest.length === 0) {\n return { parentNode: node, listIndex, revealed, visible };\n }\n return this.getParentNodeWithListIndex(rest, node.children[index], listIndex + 1, revealed, visible);\n }\n getNode(location = []) {\n return this.getTreeNode(location);\n }\n // TODO@joao perf!\n getNodeLocation(node) {\n const location = [];\n let indexTreeNode = node; // typing woes\n while (indexTreeNode.parent) {\n location.push(indexTreeNode.parent.children.indexOf(indexTreeNode));\n indexTreeNode = indexTreeNode.parent;\n }\n return location.reverse();\n }\n getParentNodeLocation(location) {\n if (location.length === 0) {\n return undefined;\n }\n else if (location.length === 1) {\n return [];\n }\n else {\n return (0,_common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.tail2)(location)[0];\n }\n }\n getFirstElementChild(location) {\n const node = this.getTreeNode(location);\n if (node.children.length === 0) {\n return undefined;\n }\n return node.children[0].element;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js": +/*!******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CompressibleObjectTree: () => (/* binding */ CompressibleObjectTree),\n/* harmony export */ ObjectTree: () => (/* binding */ ObjectTree)\n/* harmony export */ });\n/* harmony import */ var _abstractTree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstractTree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js\");\n/* harmony import */ var _compressedObjectTreeModel_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compressedObjectTreeModel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js\");\n/* harmony import */ var _objectTreeModel_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./objectTreeModel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js\");\n/* harmony import */ var _common_decorators_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/decorators.js */ \"./node_modules/monaco-editor/esm/vs/base/common/decorators.js\");\n/* harmony import */ var _common_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\n\n\n\n\nclass ObjectTree extends _abstractTree_js__WEBPACK_IMPORTED_MODULE_0__.AbstractTree {\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\n constructor(user, container, delegate, renderers, options = {}) {\n super(user, container, delegate, renderers, options);\n this.user = user;\n }\n setChildren(element, children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_4__.Iterable.empty(), options) {\n this.model.setChildren(element, children, options);\n }\n rerender(element) {\n if (element === undefined) {\n this.view.rerender();\n return;\n }\n this.model.rerender(element);\n }\n hasElement(element) {\n return this.model.has(element);\n }\n createModel(user, view, options) {\n return new _objectTreeModel_js__WEBPACK_IMPORTED_MODULE_2__.ObjectTreeModel(user, view, options);\n }\n}\nclass CompressibleRenderer {\n get compressedTreeNodeProvider() {\n return this._compressedTreeNodeProvider();\n }\n constructor(_compressedTreeNodeProvider, renderer) {\n this._compressedTreeNodeProvider = _compressedTreeNodeProvider;\n this.renderer = renderer;\n this.templateId = renderer.templateId;\n if (renderer.onDidChangeTwistieState) {\n this.onDidChangeTwistieState = renderer.onDidChangeTwistieState;\n }\n }\n renderTemplate(container) {\n const data = this.renderer.renderTemplate(container);\n return { compressedTreeNode: undefined, data };\n }\n renderElement(node, index, templateData, height) {\n const compressedTreeNode = this.compressedTreeNodeProvider.getCompressedTreeNode(node.element);\n if (compressedTreeNode.element.elements.length === 1) {\n templateData.compressedTreeNode = undefined;\n this.renderer.renderElement(node, index, templateData.data, height);\n }\n else {\n templateData.compressedTreeNode = compressedTreeNode;\n this.renderer.renderCompressedElements(compressedTreeNode, index, templateData.data, height);\n }\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b, _c, _d;\n if (templateData.compressedTreeNode) {\n (_b = (_a = this.renderer).disposeCompressedElements) === null || _b === void 0 ? void 0 : _b.call(_a, templateData.compressedTreeNode, index, templateData.data, height);\n }\n else {\n (_d = (_c = this.renderer).disposeElement) === null || _d === void 0 ? void 0 : _d.call(_c, node, index, templateData.data, height);\n }\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.data);\n }\n renderTwistie(element, twistieElement) {\n if (this.renderer.renderTwistie) {\n return this.renderer.renderTwistie(element, twistieElement);\n }\n return false;\n }\n}\n__decorate([\n _common_decorators_js__WEBPACK_IMPORTED_MODULE_3__.memoize\n], CompressibleRenderer.prototype, \"compressedTreeNodeProvider\", null);\nfunction asObjectTreeOptions(compressedTreeNodeProvider, options) {\n return options && Object.assign(Object.assign({}, options), { keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && {\n getKeyboardNavigationLabel(e) {\n let compressedTreeNode;\n try {\n compressedTreeNode = compressedTreeNodeProvider().getCompressedTreeNode(e);\n }\n catch (_a) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);\n }\n if (compressedTreeNode.element.elements.length === 1) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);\n }\n else {\n return options.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(compressedTreeNode.element.elements);\n }\n }\n } });\n}\nclass CompressibleObjectTree extends ObjectTree {\n constructor(user, container, delegate, renderers, options = {}) {\n const compressedTreeNodeProvider = () => this;\n const compressibleRenderers = renderers.map(r => new CompressibleRenderer(compressedTreeNodeProvider, r));\n super(user, container, delegate, compressibleRenderers, asObjectTreeOptions(compressedTreeNodeProvider, options));\n }\n setChildren(element, children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_4__.Iterable.empty(), options) {\n this.model.setChildren(element, children, options);\n }\n createModel(user, view, options) {\n return new _compressedObjectTreeModel_js__WEBPACK_IMPORTED_MODULE_1__.CompressibleObjectTreeModel(user, view, options);\n }\n updateOptions(optionsUpdate = {}) {\n super.updateOptions(optionsUpdate);\n if (typeof optionsUpdate.compressionEnabled !== 'undefined') {\n this.model.setCompressionEnabled(optionsUpdate.compressionEnabled);\n }\n }\n getCompressedTreeNode(element = null) {\n return this.model.getCompressedTreeNode(element);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ObjectTreeModel: () => (/* binding */ ObjectTreeModel)\n/* harmony export */ });\n/* harmony import */ var _indexTreeModel_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./indexTreeModel.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js\");\n/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tree.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js\");\n/* harmony import */ var _common_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nclass ObjectTreeModel {\n constructor(user, list, options = {}) {\n this.user = user;\n this.rootRef = null;\n this.nodes = new Map();\n this.nodesByIdentity = new Map();\n this.model = new _indexTreeModel_js__WEBPACK_IMPORTED_MODULE_0__.IndexTreeModel(user, list, null, options);\n this.onDidSplice = this.model.onDidSplice;\n this.onDidChangeCollapseState = this.model.onDidChangeCollapseState;\n this.onDidChangeRenderNodeCount = this.model.onDidChangeRenderNodeCount;\n if (options.sorter) {\n this.sorter = {\n compare(a, b) {\n return options.sorter.compare(a.element, b.element);\n }\n };\n }\n this.identityProvider = options.identityProvider;\n }\n setChildren(element, children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_2__.Iterable.empty(), options = {}) {\n const location = this.getElementLocation(element);\n this._setChildren(location, this.preserveCollapseState(children), options);\n }\n _setChildren(location, children = _common_iterator_js__WEBPACK_IMPORTED_MODULE_2__.Iterable.empty(), options) {\n const insertedElements = new Set();\n const insertedElementIds = new Set();\n const onDidCreateNode = (node) => {\n var _a;\n if (node.element === null) {\n return;\n }\n const tnode = node;\n insertedElements.add(tnode.element);\n this.nodes.set(tnode.element, tnode);\n if (this.identityProvider) {\n const id = this.identityProvider.getId(tnode.element).toString();\n insertedElementIds.add(id);\n this.nodesByIdentity.set(id, tnode);\n }\n (_a = options.onDidCreateNode) === null || _a === void 0 ? void 0 : _a.call(options, tnode);\n };\n const onDidDeleteNode = (node) => {\n var _a;\n if (node.element === null) {\n return;\n }\n const tnode = node;\n if (!insertedElements.has(tnode.element)) {\n this.nodes.delete(tnode.element);\n }\n if (this.identityProvider) {\n const id = this.identityProvider.getId(tnode.element).toString();\n if (!insertedElementIds.has(id)) {\n this.nodesByIdentity.delete(id);\n }\n }\n (_a = options.onDidDeleteNode) === null || _a === void 0 ? void 0 : _a.call(options, tnode);\n };\n this.model.splice([...location, 0], Number.MAX_VALUE, children, Object.assign(Object.assign({}, options), { onDidCreateNode, onDidDeleteNode }));\n }\n preserveCollapseState(elements = _common_iterator_js__WEBPACK_IMPORTED_MODULE_2__.Iterable.empty()) {\n if (this.sorter) {\n elements = [...elements].sort(this.sorter.compare.bind(this.sorter));\n }\n return _common_iterator_js__WEBPACK_IMPORTED_MODULE_2__.Iterable.map(elements, treeElement => {\n let node = this.nodes.get(treeElement.element);\n if (!node && this.identityProvider) {\n const id = this.identityProvider.getId(treeElement.element).toString();\n node = this.nodesByIdentity.get(id);\n }\n if (!node) {\n let collapsed;\n if (typeof treeElement.collapsed === 'undefined') {\n collapsed = undefined;\n }\n else if (treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.Collapsed || treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.PreserveOrCollapsed) {\n collapsed = true;\n }\n else if (treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.Expanded || treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.PreserveOrExpanded) {\n collapsed = false;\n }\n else {\n collapsed = Boolean(treeElement.collapsed);\n }\n return Object.assign(Object.assign({}, treeElement), { children: this.preserveCollapseState(treeElement.children), collapsed });\n }\n const collapsible = typeof treeElement.collapsible === 'boolean' ? treeElement.collapsible : node.collapsible;\n let collapsed;\n if (typeof treeElement.collapsed === 'undefined' || treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.PreserveOrCollapsed || treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.PreserveOrExpanded) {\n collapsed = node.collapsed;\n }\n else if (treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.Collapsed) {\n collapsed = true;\n }\n else if (treeElement.collapsed === _tree_js__WEBPACK_IMPORTED_MODULE_1__.ObjectTreeElementCollapseState.Expanded) {\n collapsed = false;\n }\n else {\n collapsed = Boolean(treeElement.collapsed);\n }\n return Object.assign(Object.assign({}, treeElement), { collapsible,\n collapsed, children: this.preserveCollapseState(treeElement.children) });\n });\n }\n rerender(element) {\n const location = this.getElementLocation(element);\n this.model.rerender(location);\n }\n getFirstElementChild(ref = null) {\n const location = this.getElementLocation(ref);\n return this.model.getFirstElementChild(location);\n }\n has(element) {\n return this.nodes.has(element);\n }\n getListIndex(element) {\n const location = this.getElementLocation(element);\n return this.model.getListIndex(location);\n }\n getListRenderCount(element) {\n const location = this.getElementLocation(element);\n return this.model.getListRenderCount(location);\n }\n isCollapsible(element) {\n const location = this.getElementLocation(element);\n return this.model.isCollapsible(location);\n }\n setCollapsible(element, collapsible) {\n const location = this.getElementLocation(element);\n return this.model.setCollapsible(location, collapsible);\n }\n isCollapsed(element) {\n const location = this.getElementLocation(element);\n return this.model.isCollapsed(location);\n }\n setCollapsed(element, collapsed, recursive) {\n const location = this.getElementLocation(element);\n return this.model.setCollapsed(location, collapsed, recursive);\n }\n expandTo(element) {\n const location = this.getElementLocation(element);\n this.model.expandTo(location);\n }\n refilter() {\n this.model.refilter();\n }\n getNode(element = null) {\n if (element === null) {\n return this.model.getNode(this.model.rootRef);\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_1__.TreeError(this.user, `Tree element not found: ${element}`);\n }\n return node;\n }\n getNodeLocation(node) {\n return node.element;\n }\n getParentNodeLocation(element) {\n if (element === null) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_1__.TreeError(this.user, `Invalid getParentNodeLocation call`);\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_1__.TreeError(this.user, `Tree element not found: ${element}`);\n }\n const location = this.model.getNodeLocation(node);\n const parentLocation = this.model.getParentNodeLocation(location);\n const parent = this.model.getNode(parentLocation);\n return parent.element;\n }\n getElementLocation(element) {\n if (element === null) {\n return [];\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new _tree_js__WEBPACK_IMPORTED_MODULE_1__.TreeError(this.user, `Tree element not found: ${element}`);\n }\n return this.model.getNodeLocation(node);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js": +/*!************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ObjectTreeElementCollapseState: () => (/* binding */ ObjectTreeElementCollapseState),\n/* harmony export */ TreeError: () => (/* binding */ TreeError),\n/* harmony export */ TreeMouseEventTarget: () => (/* binding */ TreeMouseEventTarget),\n/* harmony export */ WeakMapper: () => (/* binding */ WeakMapper)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar ObjectTreeElementCollapseState;\n(function (ObjectTreeElementCollapseState) {\n ObjectTreeElementCollapseState[ObjectTreeElementCollapseState[\"Expanded\"] = 0] = \"Expanded\";\n ObjectTreeElementCollapseState[ObjectTreeElementCollapseState[\"Collapsed\"] = 1] = \"Collapsed\";\n /**\n * If the element is already in the tree, preserve its current state. Else, expand it.\n */\n ObjectTreeElementCollapseState[ObjectTreeElementCollapseState[\"PreserveOrExpanded\"] = 2] = \"PreserveOrExpanded\";\n /**\n * If the element is already in the tree, preserve its current state. Else, collapse it.\n */\n ObjectTreeElementCollapseState[ObjectTreeElementCollapseState[\"PreserveOrCollapsed\"] = 3] = \"PreserveOrCollapsed\";\n})(ObjectTreeElementCollapseState || (ObjectTreeElementCollapseState = {}));\nvar TreeMouseEventTarget;\n(function (TreeMouseEventTarget) {\n TreeMouseEventTarget[TreeMouseEventTarget[\"Unknown\"] = 0] = \"Unknown\";\n TreeMouseEventTarget[TreeMouseEventTarget[\"Twistie\"] = 1] = \"Twistie\";\n TreeMouseEventTarget[TreeMouseEventTarget[\"Element\"] = 2] = \"Element\";\n TreeMouseEventTarget[TreeMouseEventTarget[\"Filter\"] = 3] = \"Filter\";\n})(TreeMouseEventTarget || (TreeMouseEventTarget = {}));\nclass TreeError extends Error {\n constructor(user, message) {\n super(`TreeError [${user}] ${message}`);\n }\n}\nclass WeakMapper {\n constructor(fn) {\n this.fn = fn;\n this._map = new WeakMap();\n }\n map(key) {\n let result = this._map.get(key);\n if (!result) {\n result = this.fn(key);\n this._map.set(key, result);\n }\n return result;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Widget: () => (/* binding */ Widget)\n/* harmony export */ });\n/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keyboardEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js\");\n/* harmony import */ var _mouseEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../mouseEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js\");\n/* harmony import */ var _touch_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nclass Widget extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_4__.Disposable {\n onclick(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.CLICK, (e) => listener(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardMouseEvent(e))));\n }\n onmousedown(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_DOWN, (e) => listener(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardMouseEvent(e))));\n }\n onmouseover(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_OVER, (e) => listener(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardMouseEvent(e))));\n }\n onmouseleave(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_LEAVE, (e) => listener(new _mouseEvent_js__WEBPACK_IMPORTED_MODULE_2__.StandardMouseEvent(e))));\n }\n onkeydown(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_DOWN, (e) => listener(new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__.StandardKeyboardEvent(e))));\n }\n onkeyup(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.KEY_UP, (e) => listener(new _keyboardEvent_js__WEBPACK_IMPORTED_MODULE_1__.StandardKeyboardEvent(e))));\n }\n oninput(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.INPUT, listener));\n }\n onblur(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.BLUR, listener));\n }\n onfocus(domNode, listener) {\n this._register(_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(domNode, _dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.FOCUS, listener));\n }\n ignoreGesture(domNode) {\n return _touch_js__WEBPACK_IMPORTED_MODULE_3__.Gesture.ignoreTarget(domNode);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/actions.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/actions.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Action: () => (/* binding */ Action),\n/* harmony export */ ActionRunner: () => (/* binding */ ActionRunner),\n/* harmony export */ EmptySubmenuAction: () => (/* binding */ EmptySubmenuAction),\n/* harmony export */ Separator: () => (/* binding */ Separator),\n/* harmony export */ SubmenuAction: () => (/* binding */ SubmenuAction),\n/* harmony export */ toAction: () => (/* binding */ toAction)\n/* harmony export */ });\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\nclass Action extends _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable {\n constructor(id, label = '', cssClass = '', enabled = true, actionCallback) {\n super();\n this._onDidChange = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter());\n this.onDidChange = this._onDidChange.event;\n this._enabled = true;\n this._id = id;\n this._label = label;\n this._cssClass = cssClass;\n this._enabled = enabled;\n this._actionCallback = actionCallback;\n }\n get id() {\n return this._id;\n }\n get label() {\n return this._label;\n }\n set label(value) {\n this._setLabel(value);\n }\n _setLabel(value) {\n if (this._label !== value) {\n this._label = value;\n this._onDidChange.fire({ label: value });\n }\n }\n get tooltip() {\n return this._tooltip || '';\n }\n set tooltip(value) {\n this._setTooltip(value);\n }\n _setTooltip(value) {\n if (this._tooltip !== value) {\n this._tooltip = value;\n this._onDidChange.fire({ tooltip: value });\n }\n }\n get class() {\n return this._cssClass;\n }\n set class(value) {\n this._setClass(value);\n }\n _setClass(value) {\n if (this._cssClass !== value) {\n this._cssClass = value;\n this._onDidChange.fire({ class: value });\n }\n }\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._setEnabled(value);\n }\n _setEnabled(value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this._onDidChange.fire({ enabled: value });\n }\n }\n get checked() {\n return this._checked;\n }\n set checked(value) {\n this._setChecked(value);\n }\n _setChecked(value) {\n if (this._checked !== value) {\n this._checked = value;\n this._onDidChange.fire({ checked: value });\n }\n }\n run(event, data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._actionCallback) {\n yield this._actionCallback(event);\n }\n });\n }\n}\nclass ActionRunner extends _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable {\n constructor() {\n super(...arguments);\n this._onWillRun = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter());\n this.onWillRun = this._onWillRun.event;\n this._onDidRun = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter());\n this.onDidRun = this._onDidRun.event;\n }\n run(action, context) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!action.enabled) {\n return;\n }\n this._onWillRun.fire({ action });\n let error = undefined;\n try {\n yield this.runAction(action, context);\n }\n catch (e) {\n error = e;\n }\n this._onDidRun.fire({ action, error });\n });\n }\n runAction(action, context) {\n return __awaiter(this, void 0, void 0, function* () {\n yield action.run(context);\n });\n }\n}\nclass Separator {\n constructor() {\n this.id = Separator.ID;\n this.label = '';\n this.tooltip = '';\n this.class = 'separator';\n this.enabled = false;\n this.checked = false;\n }\n /**\n * Joins all non-empty lists of actions with separators.\n */\n static join(...actionLists) {\n let out = [];\n for (const list of actionLists) {\n if (!list.length) {\n // skip\n }\n else if (out.length) {\n out = [...out, new Separator(), ...list];\n }\n else {\n out = list;\n }\n }\n return out;\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () { });\n }\n}\nSeparator.ID = 'vs.actions.separator';\nclass SubmenuAction {\n get actions() { return this._actions; }\n constructor(id, label, actions, cssClass) {\n this.tooltip = '';\n this.enabled = true;\n this.checked = undefined;\n this.id = id;\n this.label = label;\n this.class = cssClass;\n this._actions = actions;\n }\n run() {\n return __awaiter(this, void 0, void 0, function* () { });\n }\n}\nclass EmptySubmenuAction extends Action {\n constructor() {\n super(EmptySubmenuAction.ID, _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('submenu.empty', '(empty)'), undefined, false);\n }\n}\nEmptySubmenuAction.ID = 'vs.actions.empty';\nfunction toAction(props) {\n var _a, _b;\n return {\n id: props.id,\n label: props.label,\n class: undefined,\n enabled: (_a = props.enabled) !== null && _a !== void 0 ? _a : true,\n checked: (_b = props.checked) !== null && _b !== void 0 ? _b : false,\n run: () => __awaiter(this, void 0, void 0, function* () { return props.run(); }),\n tooltip: props.label\n };\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/actions.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/arrays.js": +/*!*****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/arrays.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ArrayQueue: () => (/* binding */ ArrayQueue),\n/* harmony export */ CallbackIterable: () => (/* binding */ CallbackIterable),\n/* harmony export */ CompareResult: () => (/* binding */ CompareResult),\n/* harmony export */ arrayInsert: () => (/* binding */ arrayInsert),\n/* harmony export */ asArray: () => (/* binding */ asArray),\n/* harmony export */ binarySearch: () => (/* binding */ binarySearch),\n/* harmony export */ binarySearch2: () => (/* binding */ binarySearch2),\n/* harmony export */ coalesce: () => (/* binding */ coalesce),\n/* harmony export */ coalesceInPlace: () => (/* binding */ coalesceInPlace),\n/* harmony export */ compareBy: () => (/* binding */ compareBy),\n/* harmony export */ distinct: () => (/* binding */ distinct),\n/* harmony export */ equals: () => (/* binding */ equals),\n/* harmony export */ findFirstInSorted: () => (/* binding */ findFirstInSorted),\n/* harmony export */ findLast: () => (/* binding */ findLast),\n/* harmony export */ findLastMaxBy: () => (/* binding */ findLastMaxBy),\n/* harmony export */ findMaxBy: () => (/* binding */ findMaxBy),\n/* harmony export */ findMinBy: () => (/* binding */ findMinBy),\n/* harmony export */ firstOrDefault: () => (/* binding */ firstOrDefault),\n/* harmony export */ groupBy: () => (/* binding */ groupBy),\n/* harmony export */ insertInto: () => (/* binding */ insertInto),\n/* harmony export */ isFalsyOrEmpty: () => (/* binding */ isFalsyOrEmpty),\n/* harmony export */ isNonEmptyArray: () => (/* binding */ isNonEmptyArray),\n/* harmony export */ lastIndex: () => (/* binding */ lastIndex),\n/* harmony export */ mapFind: () => (/* binding */ mapFind),\n/* harmony export */ numberComparator: () => (/* binding */ numberComparator),\n/* harmony export */ pushMany: () => (/* binding */ pushMany),\n/* harmony export */ pushToEnd: () => (/* binding */ pushToEnd),\n/* harmony export */ pushToStart: () => (/* binding */ pushToStart),\n/* harmony export */ quickSelect: () => (/* binding */ quickSelect),\n/* harmony export */ range: () => (/* binding */ range),\n/* harmony export */ removeFastWithoutKeepingOrder: () => (/* binding */ removeFastWithoutKeepingOrder),\n/* harmony export */ splice: () => (/* binding */ splice),\n/* harmony export */ tail: () => (/* binding */ tail),\n/* harmony export */ tail2: () => (/* binding */ tail2)\n/* harmony export */ });\n/**\n * Returns the last element of an array.\n * @param array The array.\n * @param n Which element from the end (default is zero).\n */\nfunction tail(array, n = 0) {\n return array[array.length - (1 + n)];\n}\nfunction tail2(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nfunction equals(one, other, itemEquals = (a, b) => a === b) {\n if (one === other) {\n return true;\n }\n if (!one || !other) {\n return false;\n }\n if (one.length !== other.length) {\n return false;\n }\n for (let i = 0, len = one.length; i < len; i++) {\n if (!itemEquals(one[i], other[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Remove the element at `index` by replacing it with the last element. This is faster than `splice`\n * but changes the order of the array\n */\nfunction removeFastWithoutKeepingOrder(array, index) {\n const last = array.length - 1;\n if (index < last) {\n array[index] = array[last];\n }\n array.pop();\n}\n/**\n * Performs a binary search algorithm over a sorted array.\n *\n * @param array The array being searched.\n * @param key The value we search for.\n * @param comparator A function that takes two array elements and returns zero\n * if they are equal, a negative number if the first element precedes the\n * second one in the sorting order, or a positive number if the second element\n * precedes the first one.\n * @return See {@link binarySearch2}\n */\nfunction binarySearch(array, key, comparator) {\n return binarySearch2(array.length, i => comparator(array[i], key));\n}\n/**\n * Performs a binary search algorithm over a sorted collection. Useful for cases\n * when we need to perform a binary search over something that isn't actually an\n * array, and converting data to an array would defeat the use of binary search\n * in the first place.\n *\n * @param length The collection length.\n * @param compareToKey A function that takes an index of an element in the\n * collection and returns zero if the value at this index is equal to the\n * search key, a negative number if the value precedes the search key in the\n * sorting order, or a positive number if the search key precedes the value.\n * @return A non-negative index of an element, if found. If not found, the\n * result is -(n+1) (or ~n, using bitwise notation), where n is the index\n * where the key should be inserted to maintain the sorting order.\n */\nfunction binarySearch2(length, compareToKey) {\n let low = 0, high = length - 1;\n while (low <= high) {\n const mid = ((low + high) / 2) | 0;\n const comp = compareToKey(mid);\n if (comp < 0) {\n low = mid + 1;\n }\n else if (comp > 0) {\n high = mid - 1;\n }\n else {\n return mid;\n }\n }\n return -(low + 1);\n}\n/**\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\n * are located before all elements where p(x) is true.\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\n */\nfunction findFirstInSorted(array, p) {\n let low = 0, high = array.length;\n if (high === 0) {\n return 0; // no children\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (p(array[mid])) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n return low;\n}\nfunction quickSelect(nth, data, compare) {\n nth = nth | 0;\n if (nth >= data.length) {\n throw new TypeError('invalid index');\n }\n const pivotValue = data[Math.floor(data.length * Math.random())];\n const lower = [];\n const higher = [];\n const pivots = [];\n for (const value of data) {\n const val = compare(value, pivotValue);\n if (val < 0) {\n lower.push(value);\n }\n else if (val > 0) {\n higher.push(value);\n }\n else {\n pivots.push(value);\n }\n }\n if (nth < lower.length) {\n return quickSelect(nth, lower, compare);\n }\n else if (nth < lower.length + pivots.length) {\n return pivots[0];\n }\n else {\n return quickSelect(nth - (lower.length + pivots.length), higher, compare);\n }\n}\nfunction groupBy(data, compare) {\n const result = [];\n let currentGroup = undefined;\n for (const element of data.slice(0).sort(compare)) {\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\n currentGroup = [element];\n result.push(currentGroup);\n }\n else {\n currentGroup.push(element);\n }\n }\n return result;\n}\n/**\n * @returns New array with all falsy values removed. The original array IS NOT modified.\n */\nfunction coalesce(array) {\n return array.filter(e => !!e);\n}\n/**\n * Remove all falsy values from `array`. The original array IS modified.\n */\nfunction coalesceInPlace(array) {\n let to = 0;\n for (let i = 0; i < array.length; i++) {\n if (!!array[i]) {\n array[to] = array[i];\n to += 1;\n }\n }\n array.length = to;\n}\n/**\n * @returns false if the provided object is an array and not empty.\n */\nfunction isFalsyOrEmpty(obj) {\n return !Array.isArray(obj) || obj.length === 0;\n}\nfunction isNonEmptyArray(obj) {\n return Array.isArray(obj) && obj.length > 0;\n}\n/**\n * Removes duplicates from the given array. The optional keyFn allows to specify\n * how elements are checked for equality by returning an alternate value for each.\n */\nfunction distinct(array, keyFn = value => value) {\n const seen = new Set();\n return array.filter(element => {\n const key = keyFn(element);\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n}\nfunction findLast(arr, predicate) {\n const idx = lastIndex(arr, predicate);\n if (idx === -1) {\n return undefined;\n }\n return arr[idx];\n}\nfunction lastIndex(array, fn) {\n for (let i = array.length - 1; i >= 0; i--) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nfunction firstOrDefault(array, notFoundValue) {\n return array.length > 0 ? array[0] : notFoundValue;\n}\nfunction range(arg, to) {\n let from = typeof to === 'number' ? arg : 0;\n if (typeof to === 'number') {\n from = arg;\n }\n else {\n from = 0;\n to = arg;\n }\n const result = [];\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n}\n/**\n * Insert `insertArr` inside `target` at `insertIndex`.\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\n */\nfunction arrayInsert(target, insertIndex, insertArr) {\n const before = target.slice(0, insertIndex);\n const after = target.slice(insertIndex);\n return before.concat(insertArr, after);\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nfunction pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nfunction pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nfunction pushMany(arr, items) {\n for (const item of items) {\n arr.push(item);\n }\n}\nfunction asArray(x) {\n return Array.isArray(x) ? x : [x];\n}\n/**\n * Returns the first mapped value of the array which is not undefined.\n */\nfunction mapFind(array, mapFn) {\n for (const value of array) {\n const mapped = mapFn(value);\n if (mapped !== undefined) {\n return mapped;\n }\n }\n return undefined;\n}\n/**\n * Insert the new items in the array.\n * @param array The original array.\n * @param start The zero-based location in the array from which to start inserting elements.\n * @param newItems The items to be inserted\n */\nfunction insertInto(array, start, newItems) {\n const startIdx = getActualStartIndex(array, start);\n const originalLength = array.length;\n const newItemsLength = newItems.length;\n array.length = originalLength + newItemsLength;\n // Move the items after the start index, start from the end so that we don't overwrite any value.\n for (let i = originalLength - 1; i >= startIdx; i--) {\n array[i + newItemsLength] = array[i];\n }\n for (let i = 0; i < newItemsLength; i++) {\n array[i + startIdx] = newItems[i];\n }\n}\n/**\n * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it\n * can only support limited number of items due to the maximum call stack size limit.\n * @param array The original array.\n * @param start The zero-based location in the array from which to start removing elements.\n * @param deleteCount The number of elements to remove.\n * @returns An array containing the elements that were deleted.\n */\nfunction splice(array, start, deleteCount, newItems) {\n const index = getActualStartIndex(array, start);\n const result = array.splice(index, deleteCount);\n insertInto(array, index, newItems);\n return result;\n}\n/**\n * Determine the actual start index (same logic as the native splice() or slice())\n * If greater than the length of the array, start will be set to the length of the array. In this case, no element will be deleted but the method will behave as an adding function, adding as many element as item[n*] provided.\n * If negative, it will begin that many elements from the end of the array. (In this case, the origin -1, meaning -n is the index of the nth last element, and is therefore equivalent to the index of array.length - n.) If array.length + start is less than 0, it will begin from index 0.\n * @param array The target array.\n * @param start The operation index.\n */\nfunction getActualStartIndex(array, start) {\n return start < 0 ? Math.max(start + array.length, 0) : Math.min(start, array.length);\n}\nvar CompareResult;\n(function (CompareResult) {\n function isLessThan(result) {\n return result < 0;\n }\n CompareResult.isLessThan = isLessThan;\n function isGreaterThan(result) {\n return result > 0;\n }\n CompareResult.isGreaterThan = isGreaterThan;\n function isNeitherLessOrGreaterThan(result) {\n return result === 0;\n }\n CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan;\n CompareResult.greaterThan = 1;\n CompareResult.lessThan = -1;\n CompareResult.neitherLessOrGreaterThan = 0;\n})(CompareResult || (CompareResult = {}));\nfunction compareBy(selector, comparator) {\n return (a, b) => comparator(selector(a), selector(b));\n}\n/**\n * The natural order on numbers.\n*/\nconst numberComparator = (a, b) => a - b;\n/**\n * Returns the first item that is equal to or greater than every other item.\n*/\nfunction findMaxBy(items, comparator) {\n if (items.length === 0) {\n return undefined;\n }\n let max = items[0];\n for (let i = 1; i < items.length; i++) {\n const item = items[i];\n if (comparator(item, max) > 0) {\n max = item;\n }\n }\n return max;\n}\n/**\n * Returns the last item that is equal to or greater than every other item.\n*/\nfunction findLastMaxBy(items, comparator) {\n if (items.length === 0) {\n return undefined;\n }\n let max = items[0];\n for (let i = 1; i < items.length; i++) {\n const item = items[i];\n if (comparator(item, max) >= 0) {\n max = item;\n }\n }\n return max;\n}\n/**\n * Returns the first item that is equal to or less than every other item.\n*/\nfunction findMinBy(items, comparator) {\n return findMaxBy(items, (a, b) => -comparator(a, b));\n}\nclass ArrayQueue {\n /**\n * Constructs a queue that is backed by the given array. Runtime is O(1).\n */\n constructor(items) {\n this.items = items;\n this.firstIdx = 0;\n this.lastIdx = this.items.length - 1;\n }\n get length() {\n return this.lastIdx - this.firstIdx + 1;\n }\n /**\n * Consumes elements from the beginning of the queue as long as the predicate returns true.\n * If no elements were consumed, `null` is returned. Has a runtime of O(result.length).\n */\n takeWhile(predicate) {\n // P(k) := k <= this.lastIdx && predicate(this.items[k])\n // Find s := min { k | k >= this.firstIdx && !P(k) } and return this.data[this.firstIdx...s)\n let startIdx = this.firstIdx;\n while (startIdx < this.items.length && predicate(this.items[startIdx])) {\n startIdx++;\n }\n const result = startIdx === this.firstIdx ? null : this.items.slice(this.firstIdx, startIdx);\n this.firstIdx = startIdx;\n return result;\n }\n /**\n * Consumes elements from the end of the queue as long as the predicate returns true.\n * If no elements were consumed, `null` is returned.\n * The result has the same order as the underlying array!\n */\n takeFromEndWhile(predicate) {\n // P(k) := this.firstIdx >= k && predicate(this.items[k])\n // Find s := max { k | k <= this.lastIdx && !P(k) } and return this.data(s...this.lastIdx]\n let endIdx = this.lastIdx;\n while (endIdx >= 0 && predicate(this.items[endIdx])) {\n endIdx--;\n }\n const result = endIdx === this.lastIdx ? null : this.items.slice(endIdx + 1, this.lastIdx + 1);\n this.lastIdx = endIdx;\n return result;\n }\n peek() {\n if (this.length === 0) {\n return undefined;\n }\n return this.items[this.firstIdx];\n }\n dequeue() {\n const result = this.items[this.firstIdx];\n this.firstIdx++;\n return result;\n }\n takeCount(count) {\n const result = this.items.slice(this.firstIdx, this.firstIdx + count);\n this.firstIdx += count;\n return result;\n }\n}\n/**\n * This class is faster than an iterator and array for lazy computed data.\n*/\nclass CallbackIterable {\n constructor(\n /**\n * Calls the callback for every item.\n * Stops when the callback returns false.\n */\n iterate) {\n this.iterate = iterate;\n }\n toArray() {\n const result = [];\n this.iterate(item => { result.push(item); return true; });\n return result;\n }\n filter(predicate) {\n return new CallbackIterable(cb => this.iterate(item => predicate(item) ? cb(item) : true));\n }\n map(mapFn) {\n return new CallbackIterable(cb => this.iterate(item => cb(mapFn(item))));\n }\n findLast(predicate) {\n let result;\n this.iterate(item => {\n if (predicate(item)) {\n result = item;\n }\n return true;\n });\n return result;\n }\n findLastMaxBy(comparator) {\n let result;\n let first = true;\n this.iterate(item => {\n if (first || CompareResult.isGreaterThan(comparator(item, result))) {\n first = false;\n result = item;\n }\n return true;\n });\n return result;\n }\n}\nCallbackIterable.empty = new CallbackIterable(_callback => { });\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/arrays.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/assert.js": +/*!*****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/assert.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ assertFn: () => (/* binding */ assertFn),\n/* harmony export */ assertNever: () => (/* binding */ assertNever),\n/* harmony export */ checkAdjacentItems: () => (/* binding */ checkAdjacentItems),\n/* harmony export */ ok: () => (/* binding */ ok)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/**\n * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value.\n *\n * @deprecated Use `assert(...)` instead.\n * This method is usually used like this:\n * ```ts\n * import * as assert from 'vs/base/common/assert';\n * assert.ok(...);\n * ```\n *\n * However, `assert` in that example is a user chosen name.\n * There is no tooling for generating such an import statement.\n * Thus, the `assert(...)` function should be used instead.\n */\nfunction ok(value, message) {\n if (!value) {\n throw new Error(message ? `Assertion failed (${message})` : 'Assertion Failed');\n }\n}\nfunction assertNever(value, message = 'Unreachable') {\n throw new Error(message);\n}\n/**\n * condition must be side-effect free!\n */\nfunction assertFn(condition) {\n if (!condition()) {\n // eslint-disable-next-line no-debugger\n debugger;\n // Reevaluate `condition` again to make debugging easier\n condition();\n (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.onUnexpectedError)(new _errors_js__WEBPACK_IMPORTED_MODULE_0__.BugIndicatingError('Assertion Failed'));\n }\n}\nfunction checkAdjacentItems(items, predicate) {\n let i = 0;\n while (i < items.length - 1) {\n const a = items[i];\n const b = items[i + 1];\n if (!predicate(a, b)) {\n return false;\n }\n i++;\n }\n return true;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/assert.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/async.js": +/*!****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/async.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AsyncIterableObject: () => (/* binding */ AsyncIterableObject),\n/* harmony export */ CancelableAsyncIterableObject: () => (/* binding */ CancelableAsyncIterableObject),\n/* harmony export */ DeferredPromise: () => (/* binding */ DeferredPromise),\n/* harmony export */ Delayer: () => (/* binding */ Delayer),\n/* harmony export */ IdleValue: () => (/* binding */ IdleValue),\n/* harmony export */ IntervalTimer: () => (/* binding */ IntervalTimer),\n/* harmony export */ Promises: () => (/* binding */ Promises),\n/* harmony export */ RunOnceScheduler: () => (/* binding */ RunOnceScheduler),\n/* harmony export */ ThrottledDelayer: () => (/* binding */ ThrottledDelayer),\n/* harmony export */ Throttler: () => (/* binding */ Throttler),\n/* harmony export */ TimeoutTimer: () => (/* binding */ TimeoutTimer),\n/* harmony export */ createCancelableAsyncIterable: () => (/* binding */ createCancelableAsyncIterable),\n/* harmony export */ createCancelablePromise: () => (/* binding */ createCancelablePromise),\n/* harmony export */ disposableTimeout: () => (/* binding */ disposableTimeout),\n/* harmony export */ first: () => (/* binding */ first),\n/* harmony export */ isThenable: () => (/* binding */ isThenable),\n/* harmony export */ raceCancellation: () => (/* binding */ raceCancellation),\n/* harmony export */ runWhenIdle: () => (/* binding */ runWhenIdle),\n/* harmony export */ timeout: () => (/* binding */ timeout)\n/* harmony export */ });\n/* harmony import */ var _cancellation_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cancellation.js */ \"./node_modules/monaco-editor/esm/vs/base/common/cancellation.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _symbols_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symbols.js */ \"./node_modules/monaco-editor/esm/vs/base/common/symbols.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (undefined && undefined.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\n\n\n\n\n\n\nfunction isThenable(obj) {\n return !!obj && typeof obj.then === 'function';\n}\nfunction createCancelablePromise(callback) {\n const source = new _cancellation_js__WEBPACK_IMPORTED_MODULE_0__.CancellationTokenSource();\n const thenable = callback(source.token);\n const promise = new Promise((resolve, reject) => {\n const subscription = source.token.onCancellationRequested(() => {\n subscription.dispose();\n source.dispose();\n reject(new _errors_js__WEBPACK_IMPORTED_MODULE_1__.CancellationError());\n });\n Promise.resolve(thenable).then(value => {\n subscription.dispose();\n source.dispose();\n resolve(value);\n }, err => {\n subscription.dispose();\n source.dispose();\n reject(err);\n });\n });\n return new class {\n cancel() {\n source.cancel();\n }\n then(resolve, reject) {\n return promise.then(resolve, reject);\n }\n catch(reject) {\n return this.then(undefined, reject);\n }\n finally(onfinally) {\n return promise.finally(onfinally);\n }\n };\n}\nfunction raceCancellation(promise, token, defaultValue) {\n return new Promise((resolve, reject) => {\n const ref = token.onCancellationRequested(() => {\n ref.dispose();\n resolve(defaultValue);\n });\n promise.then(resolve, reject).finally(() => ref.dispose());\n });\n}\n/**\n * A helper to prevent accumulation of sequential async tasks.\n *\n * Imagine a mail man with the sole task of delivering letters. As soon as\n * a letter submitted for delivery, he drives to the destination, delivers it\n * and returns to his base. Imagine that during the trip, N more letters were submitted.\n * When the mail man returns, he picks those N letters and delivers them all in a\n * single trip. Even though N+1 submissions occurred, only 2 deliveries were made.\n *\n * The throttler implements this via the queue() method, by providing it a task\n * factory. Following the example:\n *\n * \t\tconst throttler = new Throttler();\n * \t\tconst letters = [];\n *\n * \t\tfunction deliver() {\n * \t\t\tconst lettersToDeliver = letters;\n * \t\t\tletters = [];\n * \t\t\treturn makeTheTrip(lettersToDeliver);\n * \t\t}\n *\n * \t\tfunction onLetterReceived(l) {\n * \t\t\tletters.push(l);\n * \t\t\tthrottler.queue(deliver);\n * \t\t}\n */\nclass Throttler {\n constructor() {\n this.isDisposed = false;\n this.activePromise = null;\n this.queuedPromise = null;\n this.queuedPromiseFactory = null;\n }\n queue(promiseFactory) {\n if (this.isDisposed) {\n throw new Error('Throttler is disposed');\n }\n if (this.activePromise) {\n this.queuedPromiseFactory = promiseFactory;\n if (!this.queuedPromise) {\n const onComplete = () => {\n this.queuedPromise = null;\n if (this.isDisposed) {\n return;\n }\n const result = this.queue(this.queuedPromiseFactory);\n this.queuedPromiseFactory = null;\n return result;\n };\n this.queuedPromise = new Promise(resolve => {\n this.activePromise.then(onComplete, onComplete).then(resolve);\n });\n }\n return new Promise((resolve, reject) => {\n this.queuedPromise.then(resolve, reject);\n });\n }\n this.activePromise = promiseFactory();\n return new Promise((resolve, reject) => {\n this.activePromise.then((result) => {\n this.activePromise = null;\n resolve(result);\n }, (err) => {\n this.activePromise = null;\n reject(err);\n });\n });\n }\n dispose() {\n this.isDisposed = true;\n }\n}\nconst timeoutDeferred = (timeout, fn) => {\n let scheduled = true;\n const handle = setTimeout(() => {\n scheduled = false;\n fn();\n }, timeout);\n return {\n isTriggered: () => scheduled,\n dispose: () => {\n clearTimeout(handle);\n scheduled = false;\n },\n };\n};\nconst microtaskDeferred = (fn) => {\n let scheduled = true;\n queueMicrotask(() => {\n if (scheduled) {\n scheduled = false;\n fn();\n }\n });\n return {\n isTriggered: () => scheduled,\n dispose: () => { scheduled = false; },\n };\n};\n/**\n * A helper to delay (debounce) execution of a task that is being requested often.\n *\n * Following the throttler, now imagine the mail man wants to optimize the number of\n * trips proactively. The trip itself can be long, so he decides not to make the trip\n * as soon as a letter is submitted. Instead he waits a while, in case more\n * letters are submitted. After said waiting period, if no letters were submitted, he\n * decides to make the trip. Imagine that N more letters were submitted after the first\n * one, all within a short period of time between each other. Even though N+1\n * submissions occurred, only 1 delivery was made.\n *\n * The delayer offers this behavior via the trigger() method, into which both the task\n * to be executed and the waiting period (delay) must be passed in as arguments. Following\n * the example:\n *\n * \t\tconst delayer = new Delayer(WAITING_PERIOD);\n * \t\tconst letters = [];\n *\n * \t\tfunction letterReceived(l) {\n * \t\t\tletters.push(l);\n * \t\t\tdelayer.trigger(() => { return makeTheTrip(); });\n * \t\t}\n */\nclass Delayer {\n constructor(defaultDelay) {\n this.defaultDelay = defaultDelay;\n this.deferred = null;\n this.completionPromise = null;\n this.doResolve = null;\n this.doReject = null;\n this.task = null;\n }\n trigger(task, delay = this.defaultDelay) {\n this.task = task;\n this.cancelTimeout();\n if (!this.completionPromise) {\n this.completionPromise = new Promise((resolve, reject) => {\n this.doResolve = resolve;\n this.doReject = reject;\n }).then(() => {\n this.completionPromise = null;\n this.doResolve = null;\n if (this.task) {\n const task = this.task;\n this.task = null;\n return task();\n }\n return undefined;\n });\n }\n const fn = () => {\n var _a;\n this.deferred = null;\n (_a = this.doResolve) === null || _a === void 0 ? void 0 : _a.call(this, null);\n };\n this.deferred = delay === _symbols_js__WEBPACK_IMPORTED_MODULE_5__.MicrotaskDelay ? microtaskDeferred(fn) : timeoutDeferred(delay, fn);\n return this.completionPromise;\n }\n isTriggered() {\n var _a;\n return !!((_a = this.deferred) === null || _a === void 0 ? void 0 : _a.isTriggered());\n }\n cancel() {\n var _a;\n this.cancelTimeout();\n if (this.completionPromise) {\n (_a = this.doReject) === null || _a === void 0 ? void 0 : _a.call(this, new _errors_js__WEBPACK_IMPORTED_MODULE_1__.CancellationError());\n this.completionPromise = null;\n }\n }\n cancelTimeout() {\n var _a;\n (_a = this.deferred) === null || _a === void 0 ? void 0 : _a.dispose();\n this.deferred = null;\n }\n dispose() {\n this.cancel();\n }\n}\n/**\n * A helper to delay execution of a task that is being requested often, while\n * preventing accumulation of consecutive executions, while the task runs.\n *\n * The mail man is clever and waits for a certain amount of time, before going\n * out to deliver letters. While the mail man is going out, more letters arrive\n * and can only be delivered once he is back. Once he is back the mail man will\n * do one more trip to deliver the letters that have accumulated while he was out.\n */\nclass ThrottledDelayer {\n constructor(defaultDelay) {\n this.delayer = new Delayer(defaultDelay);\n this.throttler = new Throttler();\n }\n trigger(promiseFactory, delay) {\n return this.delayer.trigger(() => this.throttler.queue(promiseFactory), delay);\n }\n cancel() {\n this.delayer.cancel();\n }\n dispose() {\n this.delayer.dispose();\n }\n}\nfunction timeout(millis, token) {\n if (!token) {\n return createCancelablePromise(token => timeout(millis, token));\n }\n return new Promise((resolve, reject) => {\n const handle = setTimeout(() => {\n disposable.dispose();\n resolve();\n }, millis);\n const disposable = token.onCancellationRequested(() => {\n clearTimeout(handle);\n disposable.dispose();\n reject(new _errors_js__WEBPACK_IMPORTED_MODULE_1__.CancellationError());\n });\n });\n}\nfunction disposableTimeout(handler, timeout = 0) {\n const timer = setTimeout(handler, timeout);\n return (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.toDisposable)(() => clearTimeout(timer));\n}\nfunction first(promiseFactories, shouldStop = t => !!t, defaultValue = null) {\n let index = 0;\n const len = promiseFactories.length;\n const loop = () => {\n if (index >= len) {\n return Promise.resolve(defaultValue);\n }\n const factory = promiseFactories[index++];\n const promise = Promise.resolve(factory());\n return promise.then(result => {\n if (shouldStop(result)) {\n return Promise.resolve(result);\n }\n return loop();\n });\n };\n return loop();\n}\nclass TimeoutTimer {\n constructor(runner, timeout) {\n this._token = -1;\n if (typeof runner === 'function' && typeof timeout === 'number') {\n this.setIfNotSet(runner, timeout);\n }\n }\n dispose() {\n this.cancel();\n }\n cancel() {\n if (this._token !== -1) {\n clearTimeout(this._token);\n this._token = -1;\n }\n }\n cancelAndSet(runner, timeout) {\n this.cancel();\n this._token = setTimeout(() => {\n this._token = -1;\n runner();\n }, timeout);\n }\n setIfNotSet(runner, timeout) {\n if (this._token !== -1) {\n // timer is already set\n return;\n }\n this._token = setTimeout(() => {\n this._token = -1;\n runner();\n }, timeout);\n }\n}\nclass IntervalTimer {\n constructor() {\n this._token = -1;\n }\n dispose() {\n this.cancel();\n }\n cancel() {\n if (this._token !== -1) {\n clearInterval(this._token);\n this._token = -1;\n }\n }\n cancelAndSet(runner, interval) {\n this.cancel();\n this._token = setInterval(() => {\n runner();\n }, interval);\n }\n}\nclass RunOnceScheduler {\n constructor(runner, delay) {\n this.timeoutToken = -1;\n this.runner = runner;\n this.timeout = delay;\n this.timeoutHandler = this.onTimeout.bind(this);\n }\n /**\n * Dispose RunOnceScheduler\n */\n dispose() {\n this.cancel();\n this.runner = null;\n }\n /**\n * Cancel current scheduled runner (if any).\n */\n cancel() {\n if (this.isScheduled()) {\n clearTimeout(this.timeoutToken);\n this.timeoutToken = -1;\n }\n }\n /**\n * Cancel previous runner (if any) & schedule a new runner.\n */\n schedule(delay = this.timeout) {\n this.cancel();\n this.timeoutToken = setTimeout(this.timeoutHandler, delay);\n }\n get delay() {\n return this.timeout;\n }\n set delay(value) {\n this.timeout = value;\n }\n /**\n * Returns true if scheduled.\n */\n isScheduled() {\n return this.timeoutToken !== -1;\n }\n onTimeout() {\n this.timeoutToken = -1;\n if (this.runner) {\n this.doRun();\n }\n }\n doRun() {\n var _a;\n (_a = this.runner) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n}\n/**\n * Execute the callback the next time the browser is idle, returning an\n * {@link IDisposable} that will cancel the callback when disposed. This wraps\n * [requestIdleCallback] so it will fallback to [setTimeout] if the environment\n * doesn't support it.\n *\n * @param callback The callback to run when idle, this includes an\n * [IdleDeadline] that provides the time alloted for the idle callback by the\n * browser. Not respecting this deadline will result in a degraded user\n * experience.\n * @param timeout A timeout at which point to queue no longer wait for an idle\n * callback but queue it on the regular event loop (like setTimeout). Typically\n * this should not be used.\n *\n * [IdleDeadline]: https://developer.mozilla.org/en-US/docs/Web/API/IdleDeadline\n * [requestIdleCallback]: https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback\n * [setTimeout]: https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout\n */\nlet runWhenIdle;\n(function () {\n if (typeof requestIdleCallback !== 'function' || typeof cancelIdleCallback !== 'function') {\n runWhenIdle = (runner) => {\n (0,_platform_js__WEBPACK_IMPORTED_MODULE_4__.setTimeout0)(() => {\n if (disposed) {\n return;\n }\n const end = Date.now() + 15; // one frame at 64fps\n runner(Object.freeze({\n didTimeout: true,\n timeRemaining() {\n return Math.max(0, end - Date.now());\n }\n }));\n });\n let disposed = false;\n return {\n dispose() {\n if (disposed) {\n return;\n }\n disposed = true;\n }\n };\n };\n }\n else {\n runWhenIdle = (runner, timeout) => {\n const handle = requestIdleCallback(runner, typeof timeout === 'number' ? { timeout } : undefined);\n let disposed = false;\n return {\n dispose() {\n if (disposed) {\n return;\n }\n disposed = true;\n cancelIdleCallback(handle);\n }\n };\n };\n }\n})();\n/**\n * An implementation of the \"idle-until-urgent\"-strategy as introduced\n * here: https://philipwalton.com/articles/idle-until-urgent/\n */\nclass IdleValue {\n constructor(executor) {\n this._didRun = false;\n this._executor = () => {\n try {\n this._value = executor();\n }\n catch (err) {\n this._error = err;\n }\n finally {\n this._didRun = true;\n }\n };\n this._handle = runWhenIdle(() => this._executor());\n }\n dispose() {\n this._handle.dispose();\n }\n get value() {\n if (!this._didRun) {\n this._handle.dispose();\n this._executor();\n }\n if (this._error) {\n throw this._error;\n }\n return this._value;\n }\n get isInitialized() {\n return this._didRun;\n }\n}\n/**\n * Creates a promise whose resolution or rejection can be controlled imperatively.\n */\nclass DeferredPromise {\n get isRejected() {\n var _a;\n return ((_a = this.outcome) === null || _a === void 0 ? void 0 : _a.outcome) === 1 /* DeferredOutcome.Rejected */;\n }\n get isSettled() {\n return !!this.outcome;\n }\n constructor() {\n this.p = new Promise((c, e) => {\n this.completeCallback = c;\n this.errorCallback = e;\n });\n }\n complete(value) {\n return new Promise(resolve => {\n this.completeCallback(value);\n this.outcome = { outcome: 0 /* DeferredOutcome.Resolved */, value };\n resolve();\n });\n }\n error(err) {\n return new Promise(resolve => {\n this.errorCallback(err);\n this.outcome = { outcome: 1 /* DeferredOutcome.Rejected */, value: err };\n resolve();\n });\n }\n cancel() {\n return this.error(new _errors_js__WEBPACK_IMPORTED_MODULE_1__.CancellationError());\n }\n}\n//#endregion\n//#region Promises\nvar Promises;\n(function (Promises) {\n /**\n * A drop-in replacement for `Promise.all` with the only difference\n * that the method awaits every promise to either fulfill or reject.\n *\n * Similar to `Promise.all`, only the first error will be returned\n * if any.\n */\n function settled(promises) {\n return __awaiter(this, void 0, void 0, function* () {\n let firstError = undefined;\n const result = yield Promise.all(promises.map(promise => promise.then(value => value, error => {\n if (!firstError) {\n firstError = error;\n }\n return undefined; // do not rethrow so that other promises can settle\n })));\n if (typeof firstError !== 'undefined') {\n throw firstError;\n }\n return result; // cast is needed and protected by the `throw` above\n });\n }\n Promises.settled = settled;\n /**\n * A helper to create a new `Promise` with a body that is a promise\n * itself. By default, an error that raises from the async body will\n * end up as a unhandled rejection, so this utility properly awaits the\n * body and rejects the promise as a normal promise does without async\n * body.\n *\n * This method should only be used in rare cases where otherwise `async`\n * cannot be used (e.g. when callbacks are involved that require this).\n */\n function withAsyncBody(bodyFn) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n try {\n yield bodyFn(resolve, reject);\n }\n catch (error) {\n reject(error);\n }\n }));\n }\n Promises.withAsyncBody = withAsyncBody;\n})(Promises || (Promises = {}));\n/**\n * A rich implementation for an `AsyncIterable`.\n */\nclass AsyncIterableObject {\n static fromArray(items) {\n return new AsyncIterableObject((writer) => {\n writer.emitMany(items);\n });\n }\n static fromPromise(promise) {\n return new AsyncIterableObject((emitter) => __awaiter(this, void 0, void 0, function* () {\n emitter.emitMany(yield promise);\n }));\n }\n static fromPromises(promises) {\n return new AsyncIterableObject((emitter) => __awaiter(this, void 0, void 0, function* () {\n yield Promise.all(promises.map((p) => __awaiter(this, void 0, void 0, function* () { return emitter.emitOne(yield p); })));\n }));\n }\n static merge(iterables) {\n return new AsyncIterableObject((emitter) => __awaiter(this, void 0, void 0, function* () {\n yield Promise.all(iterables.map((iterable) => { var _a, iterable_1, iterable_1_1; return __awaiter(this, void 0, void 0, function* () {\n var _b, e_1, _c, _d;\n try {\n for (_a = true, iterable_1 = __asyncValues(iterable); iterable_1_1 = yield iterable_1.next(), _b = iterable_1_1.done, !_b; _a = true) {\n _d = iterable_1_1.value;\n _a = false;\n const item = _d;\n emitter.emitOne(item);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_a && !_b && (_c = iterable_1.return)) yield _c.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }); }));\n }));\n }\n constructor(executor) {\n this._state = 0 /* AsyncIterableSourceState.Initial */;\n this._results = [];\n this._error = null;\n this._onStateChanged = new _event_js__WEBPACK_IMPORTED_MODULE_2__.Emitter();\n queueMicrotask(() => __awaiter(this, void 0, void 0, function* () {\n const writer = {\n emitOne: (item) => this.emitOne(item),\n emitMany: (items) => this.emitMany(items),\n reject: (error) => this.reject(error)\n };\n try {\n yield Promise.resolve(executor(writer));\n this.resolve();\n }\n catch (err) {\n this.reject(err);\n }\n finally {\n writer.emitOne = undefined;\n writer.emitMany = undefined;\n writer.reject = undefined;\n }\n }));\n }\n [Symbol.asyncIterator]() {\n let i = 0;\n return {\n next: () => __awaiter(this, void 0, void 0, function* () {\n do {\n if (this._state === 2 /* AsyncIterableSourceState.DoneError */) {\n throw this._error;\n }\n if (i < this._results.length) {\n return { done: false, value: this._results[i++] };\n }\n if (this._state === 1 /* AsyncIterableSourceState.DoneOK */) {\n return { done: true, value: undefined };\n }\n yield _event_js__WEBPACK_IMPORTED_MODULE_2__.Event.toPromise(this._onStateChanged.event);\n } while (true);\n })\n };\n }\n static map(iterable, mapFn) {\n return new AsyncIterableObject((emitter) => __awaiter(this, void 0, void 0, function* () {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, iterable_2 = __asyncValues(iterable), iterable_2_1; iterable_2_1 = yield iterable_2.next(), _a = iterable_2_1.done, !_a; _d = true) {\n _c = iterable_2_1.value;\n _d = false;\n const item = _c;\n emitter.emitOne(mapFn(item));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = iterable_2.return)) yield _b.call(iterable_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }));\n }\n map(mapFn) {\n return AsyncIterableObject.map(this, mapFn);\n }\n static filter(iterable, filterFn) {\n return new AsyncIterableObject((emitter) => __awaiter(this, void 0, void 0, function* () {\n var _a, e_3, _b, _c;\n try {\n for (var _d = true, iterable_3 = __asyncValues(iterable), iterable_3_1; iterable_3_1 = yield iterable_3.next(), _a = iterable_3_1.done, !_a; _d = true) {\n _c = iterable_3_1.value;\n _d = false;\n const item = _c;\n if (filterFn(item)) {\n emitter.emitOne(item);\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = iterable_3.return)) yield _b.call(iterable_3);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }));\n }\n filter(filterFn) {\n return AsyncIterableObject.filter(this, filterFn);\n }\n static coalesce(iterable) {\n return AsyncIterableObject.filter(iterable, item => !!item);\n }\n coalesce() {\n return AsyncIterableObject.coalesce(this);\n }\n static toPromise(iterable) {\n var _a, iterable_4, iterable_4_1;\n var _b, e_4, _c, _d;\n return __awaiter(this, void 0, void 0, function* () {\n const result = [];\n try {\n for (_a = true, iterable_4 = __asyncValues(iterable); iterable_4_1 = yield iterable_4.next(), _b = iterable_4_1.done, !_b; _a = true) {\n _d = iterable_4_1.value;\n _a = false;\n const item = _d;\n result.push(item);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (!_a && !_b && (_c = iterable_4.return)) yield _c.call(iterable_4);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return result;\n });\n }\n toPromise() {\n return AsyncIterableObject.toPromise(this);\n }\n /**\n * The value will be appended at the end.\n *\n * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect.\n */\n emitOne(value) {\n if (this._state !== 0 /* AsyncIterableSourceState.Initial */) {\n return;\n }\n // it is important to add new values at the end,\n // as we may have iterators already running on the array\n this._results.push(value);\n this._onStateChanged.fire();\n }\n /**\n * The values will be appended at the end.\n *\n * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect.\n */\n emitMany(values) {\n if (this._state !== 0 /* AsyncIterableSourceState.Initial */) {\n return;\n }\n // it is important to add new values at the end,\n // as we may have iterators already running on the array\n this._results = this._results.concat(values);\n this._onStateChanged.fire();\n }\n /**\n * Calling `resolve()` will mark the result array as complete.\n *\n * **NOTE** `resolve()` must be called, otherwise all consumers of this iterable will hang indefinitely, similar to a non-resolved promise.\n * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect.\n */\n resolve() {\n if (this._state !== 0 /* AsyncIterableSourceState.Initial */) {\n return;\n }\n this._state = 1 /* AsyncIterableSourceState.DoneOK */;\n this._onStateChanged.fire();\n }\n /**\n * Writing an error will permanently invalidate this iterable.\n * The current users will receive an error thrown, as will all future users.\n *\n * **NOTE** If `resolve()` or `reject()` have already been called, this method has no effect.\n */\n reject(error) {\n if (this._state !== 0 /* AsyncIterableSourceState.Initial */) {\n return;\n }\n this._state = 2 /* AsyncIterableSourceState.DoneError */;\n this._error = error;\n this._onStateChanged.fire();\n }\n}\nAsyncIterableObject.EMPTY = AsyncIterableObject.fromArray([]);\nclass CancelableAsyncIterableObject extends AsyncIterableObject {\n constructor(_source, executor) {\n super(executor);\n this._source = _source;\n }\n cancel() {\n this._source.cancel();\n }\n}\nfunction createCancelableAsyncIterable(callback) {\n const source = new _cancellation_js__WEBPACK_IMPORTED_MODULE_0__.CancellationTokenSource();\n const innerIterable = callback(source.token);\n return new CancelableAsyncIterableObject(source, (emitter) => __awaiter(this, void 0, void 0, function* () {\n var _a, e_5, _b, _c;\n const subscription = source.token.onCancellationRequested(() => {\n subscription.dispose();\n source.dispose();\n emitter.reject(new _errors_js__WEBPACK_IMPORTED_MODULE_1__.CancellationError());\n });\n try {\n try {\n for (var _d = true, innerIterable_1 = __asyncValues(innerIterable), innerIterable_1_1; innerIterable_1_1 = yield innerIterable_1.next(), _a = innerIterable_1_1.done, !_a; _d = true) {\n _c = innerIterable_1_1.value;\n _d = false;\n const item = _c;\n if (source.token.isCancellationRequested) {\n // canceled in the meantime\n return;\n }\n emitter.emitOne(item);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = innerIterable_1.return)) yield _b.call(innerIterable_1);\n }\n finally { if (e_5) throw e_5.error; }\n }\n subscription.dispose();\n source.dispose();\n }\n catch (err) {\n subscription.dispose();\n source.dispose();\n emitter.reject(err);\n }\n }));\n}\n//#endregion\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/async.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/buffer.js": +/*!*****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/buffer.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VSBuffer: () => (/* binding */ VSBuffer),\n/* harmony export */ readUInt16LE: () => (/* binding */ readUInt16LE),\n/* harmony export */ readUInt32BE: () => (/* binding */ readUInt32BE),\n/* harmony export */ readUInt8: () => (/* binding */ readUInt8),\n/* harmony export */ writeUInt16LE: () => (/* binding */ writeUInt16LE),\n/* harmony export */ writeUInt32BE: () => (/* binding */ writeUInt32BE),\n/* harmony export */ writeUInt8: () => (/* binding */ writeUInt8)\n/* harmony export */ });\n/* harmony import */ var _lazy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lazy.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lazy.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nconst hasBuffer = (typeof Buffer !== 'undefined');\nconst indexOfTable = new _lazy_js__WEBPACK_IMPORTED_MODULE_0__.Lazy(() => new Uint8Array(256));\nlet textDecoder;\nclass VSBuffer {\n /**\n * When running in a nodejs context, if `actual` is not a nodejs Buffer, the backing store for\n * the returned `VSBuffer` instance might use a nodejs Buffer allocated from node's Buffer pool,\n * which is not transferrable.\n */\n static wrap(actual) {\n if (hasBuffer && !(Buffer.isBuffer(actual))) {\n // https://nodejs.org/dist/latest-v10.x/docs/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length\n // Create a zero-copy Buffer wrapper around the ArrayBuffer pointed to by the Uint8Array\n actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength);\n }\n return new VSBuffer(actual);\n }\n constructor(buffer) {\n this.buffer = buffer;\n this.byteLength = this.buffer.byteLength;\n }\n toString() {\n if (hasBuffer) {\n return this.buffer.toString();\n }\n else {\n if (!textDecoder) {\n textDecoder = new TextDecoder();\n }\n return textDecoder.decode(this.buffer);\n }\n }\n}\nfunction readUInt16LE(source, offset) {\n return (((source[offset + 0] << 0) >>> 0) |\n ((source[offset + 1] << 8) >>> 0));\n}\nfunction writeUInt16LE(destination, value, offset) {\n destination[offset + 0] = (value & 0b11111111);\n value = value >>> 8;\n destination[offset + 1] = (value & 0b11111111);\n}\nfunction readUInt32BE(source, offset) {\n return (source[offset] * Math.pow(2, 24)\n + source[offset + 1] * Math.pow(2, 16)\n + source[offset + 2] * Math.pow(2, 8)\n + source[offset + 3]);\n}\nfunction writeUInt32BE(destination, value, offset) {\n destination[offset + 3] = value;\n value = value >>> 8;\n destination[offset + 2] = value;\n value = value >>> 8;\n destination[offset + 1] = value;\n value = value >>> 8;\n destination[offset] = value;\n}\nfunction readUInt8(source, offset) {\n return source[offset];\n}\nfunction writeUInt8(destination, value, offset) {\n destination[offset] = value;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/buffer.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/cache.js": +/*!****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/cache.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CachedFunction: () => (/* binding */ CachedFunction),\n/* harmony export */ LRUCachedFunction: () => (/* binding */ LRUCachedFunction)\n/* harmony export */ });\n/**\n * Uses a LRU cache to make a given parametrized function cached.\n * Caches just the last value.\n * The key must be JSON serializable.\n*/\nclass LRUCachedFunction {\n constructor(fn) {\n this.fn = fn;\n this.lastCache = undefined;\n this.lastArgKey = undefined;\n }\n get(arg) {\n const key = JSON.stringify(arg);\n if (this.lastArgKey !== key) {\n this.lastArgKey = key;\n this.lastCache = this.fn(arg);\n }\n return this.lastCache;\n }\n}\n/**\n * Uses an unbounded cache (referential equality) to memoize the results of the given function.\n*/\nclass CachedFunction {\n get cachedValues() {\n return this._map;\n }\n constructor(fn) {\n this.fn = fn;\n this._map = new Map();\n }\n get(arg) {\n if (this._map.has(arg)) {\n return this._map.get(arg);\n }\n const value = this.fn(arg);\n this._map.set(arg, value);\n return value;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/cache.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/cancellation.js": +/*!***********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/cancellation.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CancellationToken: () => (/* binding */ CancellationToken),\n/* harmony export */ CancellationTokenSource: () => (/* binding */ CancellationTokenSource)\n/* harmony export */ });\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = setTimeout(callback.bind(context), 0);\n return { dispose() { clearTimeout(handle); } };\n});\nvar CancellationToken;\n(function (CancellationToken) {\n function isCancellationToken(thing) {\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) {\n return true;\n }\n if (thing instanceof MutableToken) {\n return true;\n }\n if (!thing || typeof thing !== 'object') {\n return false;\n }\n return typeof thing.isCancellationRequested === 'boolean'\n && typeof thing.onCancellationRequested === 'function';\n }\n CancellationToken.isCancellationToken = isCancellationToken;\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: _event_js__WEBPACK_IMPORTED_MODULE_0__.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: shortcutEvent\n });\n})(CancellationToken || (CancellationToken = {}));\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n this._emitter = null;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new _event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = null;\n }\n }\n}\nclass CancellationTokenSource {\n constructor(parent) {\n this._token = undefined;\n this._parentListener = undefined;\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\n }\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else if (this._token instanceof MutableToken) {\n // actually cancel\n this._token.cancel();\n }\n }\n dispose(cancel = false) {\n var _a;\n if (cancel) {\n this.cancel();\n }\n (_a = this._parentListener) === null || _a === void 0 ? void 0 : _a.dispose();\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/cancellation.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/codicons.js": +/*!*******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/codicons.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Codicon: () => (/* binding */ Codicon),\n/* harmony export */ getCodiconFontCharacters: () => (/* binding */ getCodiconFontCharacters)\n/* harmony export */ });\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n\nconst _codiconFontCharacters = Object.create(null);\nfunction register(id, fontCharacter) {\n if ((0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isString)(fontCharacter)) {\n const val = _codiconFontCharacters[fontCharacter];\n if (val === undefined) {\n throw new Error(`${id} references an unknown codicon: ${fontCharacter}`);\n }\n fontCharacter = val;\n }\n _codiconFontCharacters[id] = fontCharacter;\n return { id };\n}\n/**\n * Only to be used by the iconRegistry.\n */\nfunction getCodiconFontCharacters() {\n return _codiconFontCharacters;\n}\n/**\n * The Codicon library is a set of default icons that are built-in in VS Code.\n *\n * In the product (outside of base) Codicons should only be used as defaults. In order to have all icons in VS Code\n * themeable, component should define new, UI component specific icons using `iconRegistry.registerIcon`.\n * In that call a Codicon can be named as default.\n */\nconst Codicon = {\n // built-in icons, with image name\n add: register('add', 0xea60),\n plus: register('plus', 0xea60),\n gistNew: register('gist-new', 0xea60),\n repoCreate: register('repo-create', 0xea60),\n lightbulb: register('lightbulb', 0xea61),\n lightBulb: register('light-bulb', 0xea61),\n repo: register('repo', 0xea62),\n repoDelete: register('repo-delete', 0xea62),\n gistFork: register('gist-fork', 0xea63),\n repoForked: register('repo-forked', 0xea63),\n gitPullRequest: register('git-pull-request', 0xea64),\n gitPullRequestAbandoned: register('git-pull-request-abandoned', 0xea64),\n recordKeys: register('record-keys', 0xea65),\n keyboard: register('keyboard', 0xea65),\n tag: register('tag', 0xea66),\n tagAdd: register('tag-add', 0xea66),\n tagRemove: register('tag-remove', 0xea66),\n person: register('person', 0xea67),\n personFollow: register('person-follow', 0xea67),\n personOutline: register('person-outline', 0xea67),\n personFilled: register('person-filled', 0xea67),\n gitBranch: register('git-branch', 0xea68),\n gitBranchCreate: register('git-branch-create', 0xea68),\n gitBranchDelete: register('git-branch-delete', 0xea68),\n sourceControl: register('source-control', 0xea68),\n mirror: register('mirror', 0xea69),\n mirrorPublic: register('mirror-public', 0xea69),\n star: register('star', 0xea6a),\n starAdd: register('star-add', 0xea6a),\n starDelete: register('star-delete', 0xea6a),\n starEmpty: register('star-empty', 0xea6a),\n comment: register('comment', 0xea6b),\n commentAdd: register('comment-add', 0xea6b),\n alert: register('alert', 0xea6c),\n warning: register('warning', 0xea6c),\n search: register('search', 0xea6d),\n searchSave: register('search-save', 0xea6d),\n logOut: register('log-out', 0xea6e),\n signOut: register('sign-out', 0xea6e),\n logIn: register('log-in', 0xea6f),\n signIn: register('sign-in', 0xea6f),\n eye: register('eye', 0xea70),\n eyeUnwatch: register('eye-unwatch', 0xea70),\n eyeWatch: register('eye-watch', 0xea70),\n circleFilled: register('circle-filled', 0xea71),\n primitiveDot: register('primitive-dot', 0xea71),\n closeDirty: register('close-dirty', 0xea71),\n debugBreakpoint: register('debug-breakpoint', 0xea71),\n debugBreakpointDisabled: register('debug-breakpoint-disabled', 0xea71),\n debugHint: register('debug-hint', 0xea71),\n primitiveSquare: register('primitive-square', 0xea72),\n edit: register('edit', 0xea73),\n pencil: register('pencil', 0xea73),\n info: register('info', 0xea74),\n issueOpened: register('issue-opened', 0xea74),\n gistPrivate: register('gist-private', 0xea75),\n gitForkPrivate: register('git-fork-private', 0xea75),\n lock: register('lock', 0xea75),\n mirrorPrivate: register('mirror-private', 0xea75),\n close: register('close', 0xea76),\n removeClose: register('remove-close', 0xea76),\n x: register('x', 0xea76),\n repoSync: register('repo-sync', 0xea77),\n sync: register('sync', 0xea77),\n clone: register('clone', 0xea78),\n desktopDownload: register('desktop-download', 0xea78),\n beaker: register('beaker', 0xea79),\n microscope: register('microscope', 0xea79),\n vm: register('vm', 0xea7a),\n deviceDesktop: register('device-desktop', 0xea7a),\n file: register('file', 0xea7b),\n fileText: register('file-text', 0xea7b),\n more: register('more', 0xea7c),\n ellipsis: register('ellipsis', 0xea7c),\n kebabHorizontal: register('kebab-horizontal', 0xea7c),\n mailReply: register('mail-reply', 0xea7d),\n reply: register('reply', 0xea7d),\n organization: register('organization', 0xea7e),\n organizationFilled: register('organization-filled', 0xea7e),\n organizationOutline: register('organization-outline', 0xea7e),\n newFile: register('new-file', 0xea7f),\n fileAdd: register('file-add', 0xea7f),\n newFolder: register('new-folder', 0xea80),\n fileDirectoryCreate: register('file-directory-create', 0xea80),\n trash: register('trash', 0xea81),\n trashcan: register('trashcan', 0xea81),\n history: register('history', 0xea82),\n clock: register('clock', 0xea82),\n folder: register('folder', 0xea83),\n fileDirectory: register('file-directory', 0xea83),\n symbolFolder: register('symbol-folder', 0xea83),\n logoGithub: register('logo-github', 0xea84),\n markGithub: register('mark-github', 0xea84),\n github: register('github', 0xea84),\n terminal: register('terminal', 0xea85),\n console: register('console', 0xea85),\n repl: register('repl', 0xea85),\n zap: register('zap', 0xea86),\n symbolEvent: register('symbol-event', 0xea86),\n error: register('error', 0xea87),\n stop: register('stop', 0xea87),\n variable: register('variable', 0xea88),\n symbolVariable: register('symbol-variable', 0xea88),\n array: register('array', 0xea8a),\n symbolArray: register('symbol-array', 0xea8a),\n symbolModule: register('symbol-module', 0xea8b),\n symbolPackage: register('symbol-package', 0xea8b),\n symbolNamespace: register('symbol-namespace', 0xea8b),\n symbolObject: register('symbol-object', 0xea8b),\n symbolMethod: register('symbol-method', 0xea8c),\n symbolFunction: register('symbol-function', 0xea8c),\n symbolConstructor: register('symbol-constructor', 0xea8c),\n symbolBoolean: register('symbol-boolean', 0xea8f),\n symbolNull: register('symbol-null', 0xea8f),\n symbolNumeric: register('symbol-numeric', 0xea90),\n symbolNumber: register('symbol-number', 0xea90),\n symbolStructure: register('symbol-structure', 0xea91),\n symbolStruct: register('symbol-struct', 0xea91),\n symbolParameter: register('symbol-parameter', 0xea92),\n symbolTypeParameter: register('symbol-type-parameter', 0xea92),\n symbolKey: register('symbol-key', 0xea93),\n symbolText: register('symbol-text', 0xea93),\n symbolReference: register('symbol-reference', 0xea94),\n goToFile: register('go-to-file', 0xea94),\n symbolEnum: register('symbol-enum', 0xea95),\n symbolValue: register('symbol-value', 0xea95),\n symbolRuler: register('symbol-ruler', 0xea96),\n symbolUnit: register('symbol-unit', 0xea96),\n activateBreakpoints: register('activate-breakpoints', 0xea97),\n archive: register('archive', 0xea98),\n arrowBoth: register('arrow-both', 0xea99),\n arrowDown: register('arrow-down', 0xea9a),\n arrowLeft: register('arrow-left', 0xea9b),\n arrowRight: register('arrow-right', 0xea9c),\n arrowSmallDown: register('arrow-small-down', 0xea9d),\n arrowSmallLeft: register('arrow-small-left', 0xea9e),\n arrowSmallRight: register('arrow-small-right', 0xea9f),\n arrowSmallUp: register('arrow-small-up', 0xeaa0),\n arrowUp: register('arrow-up', 0xeaa1),\n bell: register('bell', 0xeaa2),\n bold: register('bold', 0xeaa3),\n book: register('book', 0xeaa4),\n bookmark: register('bookmark', 0xeaa5),\n debugBreakpointConditionalUnverified: register('debug-breakpoint-conditional-unverified', 0xeaa6),\n debugBreakpointConditional: register('debug-breakpoint-conditional', 0xeaa7),\n debugBreakpointConditionalDisabled: register('debug-breakpoint-conditional-disabled', 0xeaa7),\n debugBreakpointDataUnverified: register('debug-breakpoint-data-unverified', 0xeaa8),\n debugBreakpointData: register('debug-breakpoint-data', 0xeaa9),\n debugBreakpointDataDisabled: register('debug-breakpoint-data-disabled', 0xeaa9),\n debugBreakpointLogUnverified: register('debug-breakpoint-log-unverified', 0xeaaa),\n debugBreakpointLog: register('debug-breakpoint-log', 0xeaab),\n debugBreakpointLogDisabled: register('debug-breakpoint-log-disabled', 0xeaab),\n briefcase: register('briefcase', 0xeaac),\n broadcast: register('broadcast', 0xeaad),\n browser: register('browser', 0xeaae),\n bug: register('bug', 0xeaaf),\n calendar: register('calendar', 0xeab0),\n caseSensitive: register('case-sensitive', 0xeab1),\n check: register('check', 0xeab2),\n checklist: register('checklist', 0xeab3),\n chevronDown: register('chevron-down', 0xeab4),\n dropDownButton: register('drop-down-button', 0xeab4),\n chevronLeft: register('chevron-left', 0xeab5),\n chevronRight: register('chevron-right', 0xeab6),\n chevronUp: register('chevron-up', 0xeab7),\n chromeClose: register('chrome-close', 0xeab8),\n chromeMaximize: register('chrome-maximize', 0xeab9),\n chromeMinimize: register('chrome-minimize', 0xeaba),\n chromeRestore: register('chrome-restore', 0xeabb),\n circle: register('circle', 0xeabc),\n circleOutline: register('circle-outline', 0xeabc),\n debugBreakpointUnverified: register('debug-breakpoint-unverified', 0xeabc),\n circleSlash: register('circle-slash', 0xeabd),\n circuitBoard: register('circuit-board', 0xeabe),\n clearAll: register('clear-all', 0xeabf),\n clippy: register('clippy', 0xeac0),\n closeAll: register('close-all', 0xeac1),\n cloudDownload: register('cloud-download', 0xeac2),\n cloudUpload: register('cloud-upload', 0xeac3),\n code: register('code', 0xeac4),\n collapseAll: register('collapse-all', 0xeac5),\n colorMode: register('color-mode', 0xeac6),\n commentDiscussion: register('comment-discussion', 0xeac7),\n compareChanges: register('compare-changes', 0xeafd),\n creditCard: register('credit-card', 0xeac9),\n dash: register('dash', 0xeacc),\n dashboard: register('dashboard', 0xeacd),\n database: register('database', 0xeace),\n debugContinue: register('debug-continue', 0xeacf),\n debugDisconnect: register('debug-disconnect', 0xead0),\n debugPause: register('debug-pause', 0xead1),\n debugRestart: register('debug-restart', 0xead2),\n debugStart: register('debug-start', 0xead3),\n debugStepInto: register('debug-step-into', 0xead4),\n debugStepOut: register('debug-step-out', 0xead5),\n debugStepOver: register('debug-step-over', 0xead6),\n debugStop: register('debug-stop', 0xead7),\n debug: register('debug', 0xead8),\n deviceCameraVideo: register('device-camera-video', 0xead9),\n deviceCamera: register('device-camera', 0xeada),\n deviceMobile: register('device-mobile', 0xeadb),\n diffAdded: register('diff-added', 0xeadc),\n diffIgnored: register('diff-ignored', 0xeadd),\n diffModified: register('diff-modified', 0xeade),\n diffRemoved: register('diff-removed', 0xeadf),\n diffRenamed: register('diff-renamed', 0xeae0),\n diff: register('diff', 0xeae1),\n discard: register('discard', 0xeae2),\n editorLayout: register('editor-layout', 0xeae3),\n emptyWindow: register('empty-window', 0xeae4),\n exclude: register('exclude', 0xeae5),\n extensions: register('extensions', 0xeae6),\n eyeClosed: register('eye-closed', 0xeae7),\n fileBinary: register('file-binary', 0xeae8),\n fileCode: register('file-code', 0xeae9),\n fileMedia: register('file-media', 0xeaea),\n filePdf: register('file-pdf', 0xeaeb),\n fileSubmodule: register('file-submodule', 0xeaec),\n fileSymlinkDirectory: register('file-symlink-directory', 0xeaed),\n fileSymlinkFile: register('file-symlink-file', 0xeaee),\n fileZip: register('file-zip', 0xeaef),\n files: register('files', 0xeaf0),\n filter: register('filter', 0xeaf1),\n flame: register('flame', 0xeaf2),\n foldDown: register('fold-down', 0xeaf3),\n foldUp: register('fold-up', 0xeaf4),\n fold: register('fold', 0xeaf5),\n folderActive: register('folder-active', 0xeaf6),\n folderOpened: register('folder-opened', 0xeaf7),\n gear: register('gear', 0xeaf8),\n gift: register('gift', 0xeaf9),\n gistSecret: register('gist-secret', 0xeafa),\n gist: register('gist', 0xeafb),\n gitCommit: register('git-commit', 0xeafc),\n gitCompare: register('git-compare', 0xeafd),\n gitMerge: register('git-merge', 0xeafe),\n githubAction: register('github-action', 0xeaff),\n githubAlt: register('github-alt', 0xeb00),\n globe: register('globe', 0xeb01),\n grabber: register('grabber', 0xeb02),\n graph: register('graph', 0xeb03),\n gripper: register('gripper', 0xeb04),\n heart: register('heart', 0xeb05),\n home: register('home', 0xeb06),\n horizontalRule: register('horizontal-rule', 0xeb07),\n hubot: register('hubot', 0xeb08),\n inbox: register('inbox', 0xeb09),\n issueClosed: register('issue-closed', 0xeba4),\n issueReopened: register('issue-reopened', 0xeb0b),\n issues: register('issues', 0xeb0c),\n italic: register('italic', 0xeb0d),\n jersey: register('jersey', 0xeb0e),\n json: register('json', 0xeb0f),\n bracket: register('bracket', 0xeb0f),\n kebabVertical: register('kebab-vertical', 0xeb10),\n key: register('key', 0xeb11),\n law: register('law', 0xeb12),\n lightbulbAutofix: register('lightbulb-autofix', 0xeb13),\n linkExternal: register('link-external', 0xeb14),\n link: register('link', 0xeb15),\n listOrdered: register('list-ordered', 0xeb16),\n listUnordered: register('list-unordered', 0xeb17),\n liveShare: register('live-share', 0xeb18),\n loading: register('loading', 0xeb19),\n location: register('location', 0xeb1a),\n mailRead: register('mail-read', 0xeb1b),\n mail: register('mail', 0xeb1c),\n markdown: register('markdown', 0xeb1d),\n megaphone: register('megaphone', 0xeb1e),\n mention: register('mention', 0xeb1f),\n milestone: register('milestone', 0xeb20),\n mortarBoard: register('mortar-board', 0xeb21),\n move: register('move', 0xeb22),\n multipleWindows: register('multiple-windows', 0xeb23),\n mute: register('mute', 0xeb24),\n noNewline: register('no-newline', 0xeb25),\n note: register('note', 0xeb26),\n octoface: register('octoface', 0xeb27),\n openPreview: register('open-preview', 0xeb28),\n package_: register('package', 0xeb29),\n paintcan: register('paintcan', 0xeb2a),\n pin: register('pin', 0xeb2b),\n play: register('play', 0xeb2c),\n run: register('run', 0xeb2c),\n plug: register('plug', 0xeb2d),\n preserveCase: register('preserve-case', 0xeb2e),\n preview: register('preview', 0xeb2f),\n project: register('project', 0xeb30),\n pulse: register('pulse', 0xeb31),\n question: register('question', 0xeb32),\n quote: register('quote', 0xeb33),\n radioTower: register('radio-tower', 0xeb34),\n reactions: register('reactions', 0xeb35),\n references: register('references', 0xeb36),\n refresh: register('refresh', 0xeb37),\n regex: register('regex', 0xeb38),\n remoteExplorer: register('remote-explorer', 0xeb39),\n remote: register('remote', 0xeb3a),\n remove: register('remove', 0xeb3b),\n replaceAll: register('replace-all', 0xeb3c),\n replace: register('replace', 0xeb3d),\n repoClone: register('repo-clone', 0xeb3e),\n repoForcePush: register('repo-force-push', 0xeb3f),\n repoPull: register('repo-pull', 0xeb40),\n repoPush: register('repo-push', 0xeb41),\n report: register('report', 0xeb42),\n requestChanges: register('request-changes', 0xeb43),\n rocket: register('rocket', 0xeb44),\n rootFolderOpened: register('root-folder-opened', 0xeb45),\n rootFolder: register('root-folder', 0xeb46),\n rss: register('rss', 0xeb47),\n ruby: register('ruby', 0xeb48),\n saveAll: register('save-all', 0xeb49),\n saveAs: register('save-as', 0xeb4a),\n save: register('save', 0xeb4b),\n screenFull: register('screen-full', 0xeb4c),\n screenNormal: register('screen-normal', 0xeb4d),\n searchStop: register('search-stop', 0xeb4e),\n server: register('server', 0xeb50),\n settingsGear: register('settings-gear', 0xeb51),\n settings: register('settings', 0xeb52),\n shield: register('shield', 0xeb53),\n smiley: register('smiley', 0xeb54),\n sortPrecedence: register('sort-precedence', 0xeb55),\n splitHorizontal: register('split-horizontal', 0xeb56),\n splitVertical: register('split-vertical', 0xeb57),\n squirrel: register('squirrel', 0xeb58),\n starFull: register('star-full', 0xeb59),\n starHalf: register('star-half', 0xeb5a),\n symbolClass: register('symbol-class', 0xeb5b),\n symbolColor: register('symbol-color', 0xeb5c),\n symbolCustomColor: register('symbol-customcolor', 0xeb5c),\n symbolConstant: register('symbol-constant', 0xeb5d),\n symbolEnumMember: register('symbol-enum-member', 0xeb5e),\n symbolField: register('symbol-field', 0xeb5f),\n symbolFile: register('symbol-file', 0xeb60),\n symbolInterface: register('symbol-interface', 0xeb61),\n symbolKeyword: register('symbol-keyword', 0xeb62),\n symbolMisc: register('symbol-misc', 0xeb63),\n symbolOperator: register('symbol-operator', 0xeb64),\n symbolProperty: register('symbol-property', 0xeb65),\n wrench: register('wrench', 0xeb65),\n wrenchSubaction: register('wrench-subaction', 0xeb65),\n symbolSnippet: register('symbol-snippet', 0xeb66),\n tasklist: register('tasklist', 0xeb67),\n telescope: register('telescope', 0xeb68),\n textSize: register('text-size', 0xeb69),\n threeBars: register('three-bars', 0xeb6a),\n thumbsdown: register('thumbsdown', 0xeb6b),\n thumbsup: register('thumbsup', 0xeb6c),\n tools: register('tools', 0xeb6d),\n triangleDown: register('triangle-down', 0xeb6e),\n triangleLeft: register('triangle-left', 0xeb6f),\n triangleRight: register('triangle-right', 0xeb70),\n triangleUp: register('triangle-up', 0xeb71),\n twitter: register('twitter', 0xeb72),\n unfold: register('unfold', 0xeb73),\n unlock: register('unlock', 0xeb74),\n unmute: register('unmute', 0xeb75),\n unverified: register('unverified', 0xeb76),\n verified: register('verified', 0xeb77),\n versions: register('versions', 0xeb78),\n vmActive: register('vm-active', 0xeb79),\n vmOutline: register('vm-outline', 0xeb7a),\n vmRunning: register('vm-running', 0xeb7b),\n watch: register('watch', 0xeb7c),\n whitespace: register('whitespace', 0xeb7d),\n wholeWord: register('whole-word', 0xeb7e),\n window: register('window', 0xeb7f),\n wordWrap: register('word-wrap', 0xeb80),\n zoomIn: register('zoom-in', 0xeb81),\n zoomOut: register('zoom-out', 0xeb82),\n listFilter: register('list-filter', 0xeb83),\n listFlat: register('list-flat', 0xeb84),\n listSelection: register('list-selection', 0xeb85),\n selection: register('selection', 0xeb85),\n listTree: register('list-tree', 0xeb86),\n debugBreakpointFunctionUnverified: register('debug-breakpoint-function-unverified', 0xeb87),\n debugBreakpointFunction: register('debug-breakpoint-function', 0xeb88),\n debugBreakpointFunctionDisabled: register('debug-breakpoint-function-disabled', 0xeb88),\n debugStackframeActive: register('debug-stackframe-active', 0xeb89),\n circleSmallFilled: register('circle-small-filled', 0xeb8a),\n debugStackframeDot: register('debug-stackframe-dot', 0xeb8a),\n debugStackframe: register('debug-stackframe', 0xeb8b),\n debugStackframeFocused: register('debug-stackframe-focused', 0xeb8b),\n debugBreakpointUnsupported: register('debug-breakpoint-unsupported', 0xeb8c),\n symbolString: register('symbol-string', 0xeb8d),\n debugReverseContinue: register('debug-reverse-continue', 0xeb8e),\n debugStepBack: register('debug-step-back', 0xeb8f),\n debugRestartFrame: register('debug-restart-frame', 0xeb90),\n callIncoming: register('call-incoming', 0xeb92),\n callOutgoing: register('call-outgoing', 0xeb93),\n menu: register('menu', 0xeb94),\n expandAll: register('expand-all', 0xeb95),\n feedback: register('feedback', 0xeb96),\n groupByRefType: register('group-by-ref-type', 0xeb97),\n ungroupByRefType: register('ungroup-by-ref-type', 0xeb98),\n account: register('account', 0xeb99),\n bellDot: register('bell-dot', 0xeb9a),\n debugConsole: register('debug-console', 0xeb9b),\n library: register('library', 0xeb9c),\n output: register('output', 0xeb9d),\n runAll: register('run-all', 0xeb9e),\n syncIgnored: register('sync-ignored', 0xeb9f),\n pinned: register('pinned', 0xeba0),\n githubInverted: register('github-inverted', 0xeba1),\n debugAlt: register('debug-alt', 0xeb91),\n serverProcess: register('server-process', 0xeba2),\n serverEnvironment: register('server-environment', 0xeba3),\n pass: register('pass', 0xeba4),\n stopCircle: register('stop-circle', 0xeba5),\n playCircle: register('play-circle', 0xeba6),\n record: register('record', 0xeba7),\n debugAltSmall: register('debug-alt-small', 0xeba8),\n vmConnect: register('vm-connect', 0xeba9),\n cloud: register('cloud', 0xebaa),\n merge: register('merge', 0xebab),\n exportIcon: register('export', 0xebac),\n graphLeft: register('graph-left', 0xebad),\n magnet: register('magnet', 0xebae),\n notebook: register('notebook', 0xebaf),\n redo: register('redo', 0xebb0),\n checkAll: register('check-all', 0xebb1),\n pinnedDirty: register('pinned-dirty', 0xebb2),\n passFilled: register('pass-filled', 0xebb3),\n circleLargeFilled: register('circle-large-filled', 0xebb4),\n circleLarge: register('circle-large', 0xebb5),\n circleLargeOutline: register('circle-large-outline', 0xebb5),\n combine: register('combine', 0xebb6),\n gather: register('gather', 0xebb6),\n table: register('table', 0xebb7),\n variableGroup: register('variable-group', 0xebb8),\n typeHierarchy: register('type-hierarchy', 0xebb9),\n typeHierarchySub: register('type-hierarchy-sub', 0xebba),\n typeHierarchySuper: register('type-hierarchy-super', 0xebbb),\n gitPullRequestCreate: register('git-pull-request-create', 0xebbc),\n runAbove: register('run-above', 0xebbd),\n runBelow: register('run-below', 0xebbe),\n notebookTemplate: register('notebook-template', 0xebbf),\n debugRerun: register('debug-rerun', 0xebc0),\n workspaceTrusted: register('workspace-trusted', 0xebc1),\n workspaceUntrusted: register('workspace-untrusted', 0xebc2),\n workspaceUnspecified: register('workspace-unspecified', 0xebc3),\n terminalCmd: register('terminal-cmd', 0xebc4),\n terminalDebian: register('terminal-debian', 0xebc5),\n terminalLinux: register('terminal-linux', 0xebc6),\n terminalPowershell: register('terminal-powershell', 0xebc7),\n terminalTmux: register('terminal-tmux', 0xebc8),\n terminalUbuntu: register('terminal-ubuntu', 0xebc9),\n terminalBash: register('terminal-bash', 0xebca),\n arrowSwap: register('arrow-swap', 0xebcb),\n copy: register('copy', 0xebcc),\n personAdd: register('person-add', 0xebcd),\n filterFilled: register('filter-filled', 0xebce),\n wand: register('wand', 0xebcf),\n debugLineByLine: register('debug-line-by-line', 0xebd0),\n inspect: register('inspect', 0xebd1),\n layers: register('layers', 0xebd2),\n layersDot: register('layers-dot', 0xebd3),\n layersActive: register('layers-active', 0xebd4),\n compass: register('compass', 0xebd5),\n compassDot: register('compass-dot', 0xebd6),\n compassActive: register('compass-active', 0xebd7),\n azure: register('azure', 0xebd8),\n issueDraft: register('issue-draft', 0xebd9),\n gitPullRequestClosed: register('git-pull-request-closed', 0xebda),\n gitPullRequestDraft: register('git-pull-request-draft', 0xebdb),\n debugAll: register('debug-all', 0xebdc),\n debugCoverage: register('debug-coverage', 0xebdd),\n runErrors: register('run-errors', 0xebde),\n folderLibrary: register('folder-library', 0xebdf),\n debugContinueSmall: register('debug-continue-small', 0xebe0),\n beakerStop: register('beaker-stop', 0xebe1),\n graphLine: register('graph-line', 0xebe2),\n graphScatter: register('graph-scatter', 0xebe3),\n pieChart: register('pie-chart', 0xebe4),\n bracketDot: register('bracket-dot', 0xebe5),\n bracketError: register('bracket-error', 0xebe6),\n lockSmall: register('lock-small', 0xebe7),\n azureDevops: register('azure-devops', 0xebe8),\n verifiedFilled: register('verified-filled', 0xebe9),\n newLine: register('newline', 0xebea),\n layout: register('layout', 0xebeb),\n layoutActivitybarLeft: register('layout-activitybar-left', 0xebec),\n layoutActivitybarRight: register('layout-activitybar-right', 0xebed),\n layoutPanelLeft: register('layout-panel-left', 0xebee),\n layoutPanelCenter: register('layout-panel-center', 0xebef),\n layoutPanelJustify: register('layout-panel-justify', 0xebf0),\n layoutPanelRight: register('layout-panel-right', 0xebf1),\n layoutPanel: register('layout-panel', 0xebf2),\n layoutSidebarLeft: register('layout-sidebar-left', 0xebf3),\n layoutSidebarRight: register('layout-sidebar-right', 0xebf4),\n layoutStatusbar: register('layout-statusbar', 0xebf5),\n layoutMenubar: register('layout-menubar', 0xebf6),\n layoutCentered: register('layout-centered', 0xebf7),\n layoutSidebarRightOff: register('layout-sidebar-right-off', 0xec00),\n layoutPanelOff: register('layout-panel-off', 0xec01),\n layoutSidebarLeftOff: register('layout-sidebar-left-off', 0xec02),\n target: register('target', 0xebf8),\n indent: register('indent', 0xebf9),\n recordSmall: register('record-small', 0xebfa),\n errorSmall: register('error-small', 0xebfb),\n arrowCircleDown: register('arrow-circle-down', 0xebfc),\n arrowCircleLeft: register('arrow-circle-left', 0xebfd),\n arrowCircleRight: register('arrow-circle-right', 0xebfe),\n arrowCircleUp: register('arrow-circle-up', 0xebff),\n heartFilled: register('heart-filled', 0xec04),\n map: register('map', 0xec05),\n mapFilled: register('map-filled', 0xec06),\n circleSmall: register('circle-small', 0xec07),\n bellSlash: register('bell-slash', 0xec08),\n bellSlashDot: register('bell-slash-dot', 0xec09),\n commentUnresolved: register('comment-unresolved', 0xec0a),\n gitPullRequestGoToChanges: register('git-pull-request-go-to-changes', 0xec0b),\n gitPullRequestNewChanges: register('git-pull-request-new-changes', 0xec0c),\n searchFuzzy: register('search-fuzzy', 0xec0d),\n commentDraft: register('comment-draft', 0xec0e),\n send: register('send', 0xec0f),\n sparkle: register('sparkle', 0xec10),\n insert: register('insert', 0xec11),\n // derived icons, that could become separate icons\n dialogError: register('dialog-error', 'error'),\n dialogWarning: register('dialog-warning', 'warning'),\n dialogInfo: register('dialog-info', 'info'),\n dialogClose: register('dialog-close', 'close'),\n treeItemExpanded: register('tree-item-expanded', 'chevron-down'),\n treeFilterOnTypeOn: register('tree-filter-on-type-on', 'list-filter'),\n treeFilterOnTypeOff: register('tree-filter-on-type-off', 'list-selection'),\n treeFilterClear: register('tree-filter-clear', 'close'),\n treeItemLoading: register('tree-item-loading', 'loading'),\n menuSelection: register('menu-selection', 'check'),\n menuSubmenu: register('menu-submenu', 'chevron-right'),\n menuBarMore: register('menubar-more', 'more'),\n scrollbarButtonLeft: register('scrollbar-button-left', 'triangle-left'),\n scrollbarButtonRight: register('scrollbar-button-right', 'triangle-right'),\n scrollbarButtonUp: register('scrollbar-button-up', 'triangle-up'),\n scrollbarButtonDown: register('scrollbar-button-down', 'triangle-down'),\n toolBarMore: register('toolbar-more', 'more'),\n quickInputBack: register('quick-input-back', 'arrow-left')\n};\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/codicons.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/collections.js": +/*!**********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/collections.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SetMap: () => (/* binding */ SetMap)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass SetMap {\n constructor() {\n this.map = new Map();\n }\n add(key, value) {\n let values = this.map.get(key);\n if (!values) {\n values = new Set();\n this.map.set(key, values);\n }\n values.add(value);\n }\n delete(key, value) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.delete(value);\n if (values.size === 0) {\n this.map.delete(key);\n }\n }\n forEach(key, fn) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.forEach(fn);\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/collections.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/color.js": +/*!****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/color.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Color: () => (/* binding */ Color),\n/* harmony export */ HSLA: () => (/* binding */ HSLA),\n/* harmony export */ HSVA: () => (/* binding */ HSVA),\n/* harmony export */ RGBA: () => (/* binding */ RGBA)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction roundFloat(number, decimalPoints) {\n const decimal = Math.pow(10, decimalPoints);\n return Math.round(number * decimal) / decimal;\n}\nclass RGBA {\n constructor(r, g, b, a = 1) {\n this._rgbaBrand = undefined;\n this.r = Math.min(255, Math.max(0, r)) | 0;\n this.g = Math.min(255, Math.max(0, g)) | 0;\n this.b = Math.min(255, Math.max(0, b)) | 0;\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a;\n }\n}\nclass HSLA {\n constructor(h, s, l, a) {\n this._hslaBrand = undefined;\n this.h = Math.max(Math.min(360, h), 0) | 0;\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\n this.l = roundFloat(Math.max(Math.min(1, l), 0), 3);\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a;\n }\n /**\n * Converts an RGB color value to HSL. Conversion formula\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\n * Assumes r, g, and b are contained in the set [0, 255] and\n * returns h in the set [0, 360], s, and l in the set [0, 1].\n */\n static fromRGBA(rgba) {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const a = rgba.a;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (min + max) / 2;\n const chroma = max - min;\n if (chroma > 0) {\n s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1);\n switch (max) {\n case r:\n h = (g - b) / chroma + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / chroma + 2;\n break;\n case b:\n h = (r - g) / chroma + 4;\n break;\n }\n h *= 60;\n h = Math.round(h);\n }\n return new HSLA(h, s, l, a);\n }\n static _hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n /**\n * Converts an HSL color value to RGB. Conversion formula\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\n * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and\n * returns r, g, and b in the set [0, 255].\n */\n static toRGBA(hsla) {\n const h = hsla.h / 360;\n const { s, l, a } = hsla;\n let r, g, b;\n if (s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = HSLA._hue2rgb(p, q, h + 1 / 3);\n g = HSLA._hue2rgb(p, q, h);\n b = HSLA._hue2rgb(p, q, h - 1 / 3);\n }\n return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a);\n }\n}\nclass HSVA {\n constructor(h, s, v, a) {\n this._hsvaBrand = undefined;\n this.h = Math.max(Math.min(360, h), 0) | 0;\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\n this.v = roundFloat(Math.max(Math.min(1, v), 0), 3);\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\n }\n static equals(a, b) {\n return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a;\n }\n // from http://www.rapidtables.com/convert/color/rgb-to-hsv.htm\n static fromRGBA(rgba) {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const cmax = Math.max(r, g, b);\n const cmin = Math.min(r, g, b);\n const delta = cmax - cmin;\n const s = cmax === 0 ? 0 : (delta / cmax);\n let m;\n if (delta === 0) {\n m = 0;\n }\n else if (cmax === r) {\n m = ((((g - b) / delta) % 6) + 6) % 6;\n }\n else if (cmax === g) {\n m = ((b - r) / delta) + 2;\n }\n else {\n m = ((r - g) / delta) + 4;\n }\n return new HSVA(Math.round(m * 60), s, cmax, rgba.a);\n }\n // from http://www.rapidtables.com/convert/color/hsv-to-rgb.htm\n static toRGBA(hsva) {\n const { h, s, v, a } = hsva;\n const c = v * s;\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\n const m = v - c;\n let [r, g, b] = [0, 0, 0];\n if (h < 60) {\n r = c;\n g = x;\n }\n else if (h < 120) {\n r = x;\n g = c;\n }\n else if (h < 180) {\n g = c;\n b = x;\n }\n else if (h < 240) {\n g = x;\n b = c;\n }\n else if (h < 300) {\n r = x;\n b = c;\n }\n else if (h <= 360) {\n r = c;\n b = x;\n }\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n return new RGBA(r, g, b, a);\n }\n}\nclass Color {\n static fromHex(hex) {\n return Color.Format.CSS.parseHex(hex) || Color.red;\n }\n static equals(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return a.equals(b);\n }\n get hsla() {\n if (this._hsla) {\n return this._hsla;\n }\n else {\n return HSLA.fromRGBA(this.rgba);\n }\n }\n get hsva() {\n if (this._hsva) {\n return this._hsva;\n }\n return HSVA.fromRGBA(this.rgba);\n }\n constructor(arg) {\n if (!arg) {\n throw new Error('Color needs a value');\n }\n else if (arg instanceof RGBA) {\n this.rgba = arg;\n }\n else if (arg instanceof HSLA) {\n this._hsla = arg;\n this.rgba = HSLA.toRGBA(arg);\n }\n else if (arg instanceof HSVA) {\n this._hsva = arg;\n this.rgba = HSVA.toRGBA(arg);\n }\n else {\n throw new Error('Invalid color ctor argument');\n }\n }\n equals(other) {\n return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva);\n }\n /**\n * http://www.w3.org/TR/WCAG20/#relativeluminancedef\n * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white.\n */\n getRelativeLuminance() {\n const R = Color._relativeLuminanceForComponent(this.rgba.r);\n const G = Color._relativeLuminanceForComponent(this.rgba.g);\n const B = Color._relativeLuminanceForComponent(this.rgba.b);\n const luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B;\n return roundFloat(luminance, 4);\n }\n static _relativeLuminanceForComponent(color) {\n const c = color / 255;\n return (c <= 0.03928) ? c / 12.92 : Math.pow(((c + 0.055) / 1.055), 2.4);\n }\n /**\n *\thttp://24ways.org/2010/calculating-color-contrast\n * Return 'true' if lighter color otherwise 'false'\n */\n isLighter() {\n const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1000;\n return yiq >= 128;\n }\n isLighterThan(another) {\n const lum1 = this.getRelativeLuminance();\n const lum2 = another.getRelativeLuminance();\n return lum1 > lum2;\n }\n isDarkerThan(another) {\n const lum1 = this.getRelativeLuminance();\n const lum2 = another.getRelativeLuminance();\n return lum1 < lum2;\n }\n lighten(factor) {\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a));\n }\n darken(factor) {\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a));\n }\n transparent(factor) {\n const { r, g, b, a } = this.rgba;\n return new Color(new RGBA(r, g, b, a * factor));\n }\n isTransparent() {\n return this.rgba.a === 0;\n }\n isOpaque() {\n return this.rgba.a === 1;\n }\n opposite() {\n return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a));\n }\n makeOpaque(opaqueBackground) {\n if (this.isOpaque() || opaqueBackground.rgba.a !== 1) {\n // only allow to blend onto a non-opaque color onto a opaque color\n return this;\n }\n const { r, g, b, a } = this.rgba;\n // https://stackoverflow.com/questions/12228548/finding-equivalent-color-with-opacity\n return new Color(new RGBA(opaqueBackground.rgba.r - a * (opaqueBackground.rgba.r - r), opaqueBackground.rgba.g - a * (opaqueBackground.rgba.g - g), opaqueBackground.rgba.b - a * (opaqueBackground.rgba.b - b), 1));\n }\n toString() {\n if (!this._toString) {\n this._toString = Color.Format.CSS.format(this);\n }\n return this._toString;\n }\n static getLighterColor(of, relative, factor) {\n if (of.isLighterThan(relative)) {\n return of;\n }\n factor = factor ? factor : 0.5;\n const lum1 = of.getRelativeLuminance();\n const lum2 = relative.getRelativeLuminance();\n factor = factor * (lum2 - lum1) / lum2;\n return of.lighten(factor);\n }\n static getDarkerColor(of, relative, factor) {\n if (of.isDarkerThan(relative)) {\n return of;\n }\n factor = factor ? factor : 0.5;\n const lum1 = of.getRelativeLuminance();\n const lum2 = relative.getRelativeLuminance();\n factor = factor * (lum1 - lum2) / lum1;\n return of.darken(factor);\n }\n}\nColor.white = new Color(new RGBA(255, 255, 255, 1));\nColor.black = new Color(new RGBA(0, 0, 0, 1));\nColor.red = new Color(new RGBA(255, 0, 0, 1));\nColor.blue = new Color(new RGBA(0, 0, 255, 1));\nColor.green = new Color(new RGBA(0, 255, 0, 1));\nColor.cyan = new Color(new RGBA(0, 255, 255, 1));\nColor.lightgrey = new Color(new RGBA(211, 211, 211, 1));\nColor.transparent = new Color(new RGBA(0, 0, 0, 0));\n(function (Color) {\n let Format;\n (function (Format) {\n let CSS;\n (function (CSS) {\n function formatRGB(color) {\n if (color.rgba.a === 1) {\n return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`;\n }\n return Color.Format.CSS.formatRGBA(color);\n }\n CSS.formatRGB = formatRGB;\n function formatRGBA(color) {\n return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+(color.rgba.a).toFixed(2)})`;\n }\n CSS.formatRGBA = formatRGBA;\n function formatHSL(color) {\n if (color.hsla.a === 1) {\n return `hsl(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%)`;\n }\n return Color.Format.CSS.formatHSLA(color);\n }\n CSS.formatHSL = formatHSL;\n function formatHSLA(color) {\n return `hsla(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%, ${color.hsla.a.toFixed(2)})`;\n }\n CSS.formatHSLA = formatHSLA;\n function _toTwoDigitHex(n) {\n const r = n.toString(16);\n return r.length !== 2 ? '0' + r : r;\n }\n /**\n * Formats the color as #RRGGBB\n */\n function formatHex(color) {\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`;\n }\n CSS.formatHex = formatHex;\n /**\n * Formats the color as #RRGGBBAA\n * If 'compact' is set, colors without transparancy will be printed as #RRGGBB\n */\n function formatHexA(color, compact = false) {\n if (compact && color.rgba.a === 1) {\n return Color.Format.CSS.formatHex(color);\n }\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`;\n }\n CSS.formatHexA = formatHexA;\n /**\n * The default format will use HEX if opaque and RGBA otherwise.\n */\n function format(color) {\n if (color.isOpaque()) {\n return Color.Format.CSS.formatHex(color);\n }\n return Color.Format.CSS.formatRGBA(color);\n }\n CSS.format = format;\n /**\n * Converts an Hex color value to a Color.\n * returns r, g, and b are contained in the set [0, 255]\n * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA).\n */\n function parseHex(hex) {\n const length = hex.length;\n if (length === 0) {\n // Invalid color\n return null;\n }\n if (hex.charCodeAt(0) !== 35 /* CharCode.Hash */) {\n // Does not begin with a #\n return null;\n }\n if (length === 7) {\n // #RRGGBB format\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\n return new Color(new RGBA(r, g, b, 1));\n }\n if (length === 9) {\n // #RRGGBBAA format\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\n const a = 16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8));\n return new Color(new RGBA(r, g, b, a / 255));\n }\n if (length === 4) {\n // #RGB format\n const r = _parseHexDigit(hex.charCodeAt(1));\n const g = _parseHexDigit(hex.charCodeAt(2));\n const b = _parseHexDigit(hex.charCodeAt(3));\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b));\n }\n if (length === 5) {\n // #RGBA format\n const r = _parseHexDigit(hex.charCodeAt(1));\n const g = _parseHexDigit(hex.charCodeAt(2));\n const b = _parseHexDigit(hex.charCodeAt(3));\n const a = _parseHexDigit(hex.charCodeAt(4));\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255));\n }\n // Invalid color\n return null;\n }\n CSS.parseHex = parseHex;\n function _parseHexDigit(charCode) {\n switch (charCode) {\n case 48 /* CharCode.Digit0 */: return 0;\n case 49 /* CharCode.Digit1 */: return 1;\n case 50 /* CharCode.Digit2 */: return 2;\n case 51 /* CharCode.Digit3 */: return 3;\n case 52 /* CharCode.Digit4 */: return 4;\n case 53 /* CharCode.Digit5 */: return 5;\n case 54 /* CharCode.Digit6 */: return 6;\n case 55 /* CharCode.Digit7 */: return 7;\n case 56 /* CharCode.Digit8 */: return 8;\n case 57 /* CharCode.Digit9 */: return 9;\n case 97 /* CharCode.a */: return 10;\n case 65 /* CharCode.A */: return 10;\n case 98 /* CharCode.b */: return 11;\n case 66 /* CharCode.B */: return 11;\n case 99 /* CharCode.c */: return 12;\n case 67 /* CharCode.C */: return 12;\n case 100 /* CharCode.d */: return 13;\n case 68 /* CharCode.D */: return 13;\n case 101 /* CharCode.e */: return 14;\n case 69 /* CharCode.E */: return 14;\n case 102 /* CharCode.f */: return 15;\n case 70 /* CharCode.F */: return 15;\n }\n return 0;\n }\n })(CSS = Format.CSS || (Format.CSS = {}));\n })(Format = Color.Format || (Color.Format = {}));\n})(Color || (Color = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/color.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/comparers.js": +/*!********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/comparers.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ compareAnything: () => (/* binding */ compareAnything),\n/* harmony export */ compareByPrefix: () => (/* binding */ compareByPrefix),\n/* harmony export */ compareFileNames: () => (/* binding */ compareFileNames)\n/* harmony export */ });\n/* harmony import */ var _lazy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lazy.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lazy.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n// When comparing large numbers of strings it's better for performance to create an\n// Intl.Collator object and use the function provided by its compare property\n// than it is to use String.prototype.localeCompare()\n// A collator with numeric sorting enabled, and no sensitivity to case, accents or diacritics.\nconst intlFileNameCollatorBaseNumeric = new _lazy_js__WEBPACK_IMPORTED_MODULE_0__.Lazy(() => {\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\n return {\n collator,\n collatorIsNumeric: collator.resolvedOptions().numeric\n };\n});\n// A collator with numeric sorting enabled.\nconst intlFileNameCollatorNumeric = new _lazy_js__WEBPACK_IMPORTED_MODULE_0__.Lazy(() => {\n const collator = new Intl.Collator(undefined, { numeric: true });\n return {\n collator\n };\n});\n// A collator with numeric sorting enabled, and sensitivity to accents and diacritics but not case.\nconst intlFileNameCollatorNumericCaseInsensitive = new _lazy_js__WEBPACK_IMPORTED_MODULE_0__.Lazy(() => {\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'accent' });\n return {\n collator\n };\n});\n/** Compares filenames without distinguishing the name from the extension. Disambiguates by unicode comparison. */\nfunction compareFileNames(one, other, caseSensitive = false) {\n const a = one || '';\n const b = other || '';\n const result = intlFileNameCollatorBaseNumeric.value.collator.compare(a, b);\n // Using the numeric option will make compare(`foo1`, `foo01`) === 0. Disambiguate.\n if (intlFileNameCollatorBaseNumeric.value.collatorIsNumeric && result === 0 && a !== b) {\n return a < b ? -1 : 1;\n }\n return result;\n}\nfunction compareAnything(one, other, lookFor) {\n const elementAName = one.toLowerCase();\n const elementBName = other.toLowerCase();\n // Sort prefix matches over non prefix matches\n const prefixCompare = compareByPrefix(one, other, lookFor);\n if (prefixCompare) {\n return prefixCompare;\n }\n // Sort suffix matches over non suffix matches\n const elementASuffixMatch = elementAName.endsWith(lookFor);\n const elementBSuffixMatch = elementBName.endsWith(lookFor);\n if (elementASuffixMatch !== elementBSuffixMatch) {\n return elementASuffixMatch ? -1 : 1;\n }\n // Understand file names\n const r = compareFileNames(elementAName, elementBName);\n if (r !== 0) {\n return r;\n }\n // Compare by name\n return elementAName.localeCompare(elementBName);\n}\nfunction compareByPrefix(one, other, lookFor) {\n const elementAName = one.toLowerCase();\n const elementBName = other.toLowerCase();\n // Sort prefix matches over non prefix matches\n const elementAPrefixMatch = elementAName.startsWith(lookFor);\n const elementBPrefixMatch = elementBName.startsWith(lookFor);\n if (elementAPrefixMatch !== elementBPrefixMatch) {\n return elementAPrefixMatch ? -1 : 1;\n }\n // Same prefix: Sort shorter matches to the top to have those on top that match more precisely\n else if (elementAPrefixMatch && elementBPrefixMatch) {\n if (elementAName.length < elementBName.length) {\n return -1;\n }\n if (elementAName.length > elementBName.length) {\n return 1;\n }\n }\n return 0;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/comparers.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/dataTransfer.js": +/*!***********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/dataTransfer.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ UriList: () => (/* binding */ UriList),\n/* harmony export */ VSDataTransfer: () => (/* binding */ VSDataTransfer),\n/* harmony export */ createFileDataTransferItem: () => (/* binding */ createFileDataTransferItem),\n/* harmony export */ createStringDataTransferItem: () => (/* binding */ createStringDataTransferItem),\n/* harmony export */ matchesMimeType: () => (/* binding */ matchesMimeType)\n/* harmony export */ });\n/* harmony import */ var _arrays_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n/* harmony import */ var _uuid_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uuid.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uuid.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\nfunction createStringDataTransferItem(stringOrPromise) {\n return {\n asString: () => __awaiter(this, void 0, void 0, function* () { return stringOrPromise; }),\n asFile: () => undefined,\n value: typeof stringOrPromise === 'string' ? stringOrPromise : undefined,\n };\n}\nfunction createFileDataTransferItem(fileName, uri, data) {\n const file = { id: (0,_uuid_js__WEBPACK_IMPORTED_MODULE_2__.generateUuid)(), name: fileName, uri, data };\n return {\n asString: () => __awaiter(this, void 0, void 0, function* () { return ''; }),\n asFile: () => file,\n value: undefined,\n };\n}\nclass VSDataTransfer {\n constructor() {\n this._entries = new Map();\n }\n get size() {\n let size = 0;\n for (const _ of this._entries) {\n size++;\n }\n return size;\n }\n has(mimeType) {\n return this._entries.has(this.toKey(mimeType));\n }\n matches(pattern) {\n const mimes = [...this._entries.keys()];\n if (_iterator_js__WEBPACK_IMPORTED_MODULE_1__.Iterable.some(this, ([_, item]) => item.asFile())) {\n mimes.push('files');\n }\n return matchesMimeType_normalized(normalizeMimeType(pattern), mimes);\n }\n get(mimeType) {\n var _a;\n return (_a = this._entries.get(this.toKey(mimeType))) === null || _a === void 0 ? void 0 : _a[0];\n }\n /**\n * Add a new entry to this data transfer.\n *\n * This does not replace existing entries for `mimeType`.\n */\n append(mimeType, value) {\n const existing = this._entries.get(mimeType);\n if (existing) {\n existing.push(value);\n }\n else {\n this._entries.set(this.toKey(mimeType), [value]);\n }\n }\n /**\n * Set the entry for a given mime type.\n *\n * This replaces all existing entries for `mimeType`.\n */\n replace(mimeType, value) {\n this._entries.set(this.toKey(mimeType), [value]);\n }\n /**\n * Remove all entries for `mimeType`.\n */\n delete(mimeType) {\n this._entries.delete(this.toKey(mimeType));\n }\n /**\n * Iterate over all `[mime, item]` pairs in this data transfer.\n *\n * There may be multiple entries for each mime type.\n */\n *[Symbol.iterator]() {\n for (const [mine, items] of this._entries) {\n for (const item of items) {\n yield [mine, item];\n }\n }\n }\n toKey(mimeType) {\n return normalizeMimeType(mimeType);\n }\n}\nfunction normalizeMimeType(mimeType) {\n return mimeType.toLowerCase();\n}\nfunction matchesMimeType(pattern, mimeTypes) {\n return matchesMimeType_normalized(normalizeMimeType(pattern), mimeTypes.map(normalizeMimeType));\n}\nfunction matchesMimeType_normalized(normalizedPattern, normalizedMimeTypes) {\n // Anything wildcard\n if (normalizedPattern === '*/*') {\n return normalizedMimeTypes.length > 0;\n }\n // Exact match\n if (normalizedMimeTypes.includes(normalizedPattern)) {\n return true;\n }\n // Wildcard, such as `image/*`\n const wildcard = normalizedPattern.match(/^([a-z]+)\\/([a-z]+|\\*)$/i);\n if (!wildcard) {\n return false;\n }\n const [_, type, subtype] = wildcard;\n if (subtype === '*') {\n return normalizedMimeTypes.some(mime => mime.startsWith(type + '/'));\n }\n return false;\n}\nconst UriList = Object.freeze({\n // http://amundsen.com/hypermedia/urilist/\n create: (entries) => {\n return (0,_arrays_js__WEBPACK_IMPORTED_MODULE_0__.distinct)(entries.map(x => x.toString())).join('\\r\\n');\n },\n split: (str) => {\n return str.split('\\r\\n');\n },\n parse: (str) => {\n return UriList.split(str).filter(value => !value.startsWith('#'));\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/dataTransfer.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/decorators.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/decorators.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ memoize: () => (/* binding */ memoize)\n/* harmony export */ });\nfunction memoize(_target, key, descriptor) {\n let fnKey = null;\n let fn = null;\n if (typeof descriptor.value === 'function') {\n fnKey = 'value';\n fn = descriptor.value;\n if (fn.length !== 0) {\n console.warn('Memoize should only be used in functions with zero parameters');\n }\n }\n else if (typeof descriptor.get === 'function') {\n fnKey = 'get';\n fn = descriptor.get;\n }\n if (!fn) {\n throw new Error('not supported');\n }\n const memoizeKey = `$memoize$${key}`;\n descriptor[fnKey] = function (...args) {\n if (!this.hasOwnProperty(memoizeKey)) {\n Object.defineProperty(this, memoizeKey, {\n configurable: false,\n enumerable: false,\n writable: false,\n value: fn.apply(this, args)\n });\n }\n return this[memoizeKey];\n };\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/decorators.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js": +/*!********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LcsDiff: () => (/* binding */ LcsDiff),\n/* harmony export */ StringDiffSequence: () => (/* binding */ StringDiffSequence),\n/* harmony export */ stringDiff: () => (/* binding */ stringDiff)\n/* harmony export */ });\n/* harmony import */ var _diffChange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./diffChange.js */ \"./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js\");\n/* harmony import */ var _hash_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../hash.js */ \"./node_modules/monaco-editor/esm/vs/base/common/hash.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nclass StringDiffSequence {\n constructor(source) {\n this.source = source;\n }\n getElements() {\n const source = this.source;\n const characters = new Int32Array(source.length);\n for (let i = 0, len = source.length; i < len; i++) {\n characters[i] = source.charCodeAt(i);\n }\n return characters;\n }\n}\nfunction stringDiff(original, modified, pretty) {\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\n}\n//\n// The code below has been ported from a C# implementation in VS\n//\nclass Debug {\n static Assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n }\n}\nclass MyArray {\n /**\n * Copies a range of elements from an Array starting at the specified source index and pastes\n * them to another Array starting at the specified destination index. The length and the indexes\n * are specified as 64-bit integers.\n * sourceArray:\n *\t\tThe Array that contains the data to copy.\n * sourceIndex:\n *\t\tA 64-bit integer that represents the index in the sourceArray at which copying begins.\n * destinationArray:\n *\t\tThe Array that receives the data.\n * destinationIndex:\n *\t\tA 64-bit integer that represents the index in the destinationArray at which storing begins.\n * length:\n *\t\tA 64-bit integer that represents the number of elements to copy.\n */\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\n for (let i = 0; i < length; i++) {\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\n }\n }\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\n for (let i = 0; i < length; i++) {\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\n }\n }\n}\n/**\n * A utility class which helps to create the set of DiffChanges from\n * a difference operation. This class accepts original DiffElements and\n * modified DiffElements that are involved in a particular change. The\n * MarkNextChange() method can be called to mark the separation between\n * distinct changes. At the end, the Changes property can be called to retrieve\n * the constructed changes.\n */\nclass DiffChangeHelper {\n /**\n * Constructs a new DiffChangeHelper for the given DiffSequences.\n */\n constructor() {\n this.m_changes = [];\n this.m_originalStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n this.m_modifiedStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n this.m_originalCount = 0;\n this.m_modifiedCount = 0;\n }\n /**\n * Marks the beginning of the next change in the set of differences.\n */\n MarkNextChange() {\n // Only add to the list if there is something to add\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\n // Add the new change to our list\n this.m_changes.push(new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\n }\n // Reset for the next change\n this.m_originalCount = 0;\n this.m_modifiedCount = 0;\n this.m_originalStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n this.m_modifiedStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n }\n /**\n * Adds the original element at the given position to the elements\n * affected by the current change. The modified index gives context\n * to the change position with respect to the original sequence.\n * @param originalIndex The index of the original element to add.\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\n */\n AddOriginalElement(originalIndex, modifiedIndex) {\n // The 'true' start index is the smallest of the ones we've seen\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\n this.m_originalCount++;\n }\n /**\n * Adds the modified element at the given position to the elements\n * affected by the current change. The original index gives context\n * to the change position with respect to the modified sequence.\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\n * @param modifiedIndex The index of the modified element to add.\n */\n AddModifiedElement(originalIndex, modifiedIndex) {\n // The 'true' start index is the smallest of the ones we've seen\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\n this.m_modifiedCount++;\n }\n /**\n * Retrieves all of the changes marked by the class.\n */\n getChanges() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\n // Finish up on whatever is left\n this.MarkNextChange();\n }\n return this.m_changes;\n }\n /**\n * Retrieves all of the changes marked by the class in the reverse order\n */\n getReverseChanges() {\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\n // Finish up on whatever is left\n this.MarkNextChange();\n }\n this.m_changes.reverse();\n return this.m_changes;\n }\n}\n/**\n * An implementation of the difference algorithm described in\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\n */\nclass LcsDiff {\n /**\n * Constructs the DiffFinder\n */\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\n this.ContinueProcessingPredicate = continueProcessingPredicate;\n this._originalSequence = originalSequence;\n this._modifiedSequence = modifiedSequence;\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\n this._hasStrings = (originalHasStrings && modifiedHasStrings);\n this._originalStringElements = originalStringElements;\n this._originalElementsOrHash = originalElementsOrHash;\n this._modifiedStringElements = modifiedStringElements;\n this._modifiedElementsOrHash = modifiedElementsOrHash;\n this.m_forwardHistory = [];\n this.m_reverseHistory = [];\n }\n static _isStringArray(arr) {\n return (arr.length > 0 && typeof arr[0] === 'string');\n }\n static _getElements(sequence) {\n const elements = sequence.getElements();\n if (LcsDiff._isStringArray(elements)) {\n const hashes = new Int32Array(elements.length);\n for (let i = 0, len = elements.length; i < len; i++) {\n hashes[i] = (0,_hash_js__WEBPACK_IMPORTED_MODULE_1__.stringHash)(elements[i], 0);\n }\n return [elements, hashes, true];\n }\n if (elements instanceof Int32Array) {\n return [[], elements, false];\n }\n return [[], new Int32Array(elements), false];\n }\n ElementsAreEqual(originalIndex, newIndex) {\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) {\n return false;\n }\n return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true);\n }\n ElementsAreStrictEqual(originalIndex, newIndex) {\n if (!this.ElementsAreEqual(originalIndex, newIndex)) {\n return false;\n }\n const originalElement = LcsDiff._getStrictElement(this._originalSequence, originalIndex);\n const modifiedElement = LcsDiff._getStrictElement(this._modifiedSequence, newIndex);\n return (originalElement === modifiedElement);\n }\n static _getStrictElement(sequence, index) {\n if (typeof sequence.getStrictElement === 'function') {\n return sequence.getStrictElement(index);\n }\n return null;\n }\n OriginalElementsAreEqual(index1, index2) {\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) {\n return false;\n }\n return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true);\n }\n ModifiedElementsAreEqual(index1, index2) {\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) {\n return false;\n }\n return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true);\n }\n ComputeDiff(pretty) {\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\n }\n /**\n * Computes the differences between the original and modified input\n * sequences on the bounded range.\n * @returns An array of the differences between the two input sequences.\n */\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\n const quitEarlyArr = [false];\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\n if (pretty) {\n // We have to clean up the computed diff to be more intuitive\n // but it turns out this cannot be done correctly until the entire set\n // of diffs have been computed\n changes = this.PrettifyChanges(changes);\n }\n return {\n quitEarly: quitEarlyArr[0],\n changes: changes\n };\n }\n /**\n * Private helper method which computes the differences on the bounded range\n * recursively.\n * @returns An array of the differences between the two input sequences.\n */\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\n quitEarlyArr[0] = false;\n // Find the start of the differences\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\n originalStart++;\n modifiedStart++;\n }\n // Find the end of the differences\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\n originalEnd--;\n modifiedEnd--;\n }\n // In the special case where we either have all insertions or all deletions or the sequences are identical\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\n let changes;\n if (modifiedStart <= modifiedEnd) {\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\n // All insertions\n changes = [\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)\n ];\n }\n else if (originalStart <= originalEnd) {\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\n // All deletions\n changes = [\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)\n ];\n }\n else {\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\n // Identical sequences - No differences\n changes = [];\n }\n return changes;\n }\n // This problem can be solved using the Divide-And-Conquer technique.\n const midOriginalArr = [0];\n const midModifiedArr = [0];\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\n const midOriginal = midOriginalArr[0];\n const midModified = midModifiedArr[0];\n if (result !== null) {\n // Result is not-null when there was enough memory to compute the changes while\n // searching for the recursion point\n return result;\n }\n else if (!quitEarlyArr[0]) {\n // We can break the problem down recursively by finding the changes in the\n // First Half: (originalStart, modifiedStart) to (midOriginal, midModified)\n // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd)\n // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\n let rightChanges = [];\n if (!quitEarlyArr[0]) {\n rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\n }\n else {\n // We didn't have time to finish the first half, so we don't have time to compute this half.\n // Consider the entire rest of the sequence different.\n rightChanges = [\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)\n ];\n }\n return this.ConcatenateChanges(leftChanges, rightChanges);\n }\n // If we hit here, we quit early, and so can't return anything meaningful\n return [\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\n ];\n }\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\n let forwardChanges = null;\n let reverseChanges = null;\n // First, walk backward through the forward diagonals history\n let changeHelper = new DiffChangeHelper();\n let diagonalMin = diagonalForwardStart;\n let diagonalMax = diagonalForwardEnd;\n let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset;\n let lastOriginalIndex = -1073741824 /* Constants.MIN_SAFE_SMALL_INTEGER */;\n let historyIndex = this.m_forwardHistory.length - 1;\n do {\n // Get the diagonal index from the relative diagonal number\n const diagonal = diagonalRelative + diagonalForwardBase;\n // Figure out where we came from\n if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\n // Vertical line (the element is an insert)\n originalIndex = forwardPoints[diagonal + 1];\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\n if (originalIndex < lastOriginalIndex) {\n changeHelper.MarkNextChange();\n }\n lastOriginalIndex = originalIndex;\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\n diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration\n }\n else {\n // Horizontal line (the element is a deletion)\n originalIndex = forwardPoints[diagonal - 1] + 1;\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\n if (originalIndex < lastOriginalIndex) {\n changeHelper.MarkNextChange();\n }\n lastOriginalIndex = originalIndex - 1;\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\n diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration\n }\n if (historyIndex >= 0) {\n forwardPoints = this.m_forwardHistory[historyIndex];\n diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot\n diagonalMin = 1;\n diagonalMax = forwardPoints.length - 1;\n }\n } while (--historyIndex >= -1);\n // Ironically, we get the forward changes as the reverse of the\n // order we added them since we technically added them backwards\n forwardChanges = changeHelper.getReverseChanges();\n if (quitEarlyArr[0]) {\n // TODO: Calculate a partial from the reverse diagonals.\n // For now, just assume everything after the midOriginal/midModified point is a diff\n let originalStartPoint = midOriginalArr[0] + 1;\n let modifiedStartPoint = midModifiedArr[0] + 1;\n if (forwardChanges !== null && forwardChanges.length > 0) {\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\n }\n reverseChanges = [\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)\n ];\n }\n else {\n // Now walk backward through the reverse diagonals history\n changeHelper = new DiffChangeHelper();\n diagonalMin = diagonalReverseStart;\n diagonalMax = diagonalReverseEnd;\n diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset;\n lastOriginalIndex = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\n do {\n // Get the diagonal index from the relative diagonal number\n const diagonal = diagonalRelative + diagonalReverseBase;\n // Figure out where we came from\n if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\n // Horizontal line (the element is a deletion))\n originalIndex = reversePoints[diagonal + 1] - 1;\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\n if (originalIndex > lastOriginalIndex) {\n changeHelper.MarkNextChange();\n }\n lastOriginalIndex = originalIndex + 1;\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\n diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration\n }\n else {\n // Vertical line (the element is an insertion)\n originalIndex = reversePoints[diagonal - 1];\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\n if (originalIndex > lastOriginalIndex) {\n changeHelper.MarkNextChange();\n }\n lastOriginalIndex = originalIndex;\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\n diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration\n }\n if (historyIndex >= 0) {\n reversePoints = this.m_reverseHistory[historyIndex];\n diagonalReverseBase = reversePoints[0]; //We stored this in the first spot\n diagonalMin = 1;\n diagonalMax = reversePoints.length - 1;\n }\n } while (--historyIndex >= -1);\n // There are cases where the reverse history will find diffs that\n // are correct, but not intuitive, so we need shift them.\n reverseChanges = changeHelper.getChanges();\n }\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\n }\n /**\n * Given the range to compute the diff on, this method finds the point:\n * (midOriginal, midModified)\n * that exists in the middle of the LCS of the two sequences and\n * is the point at which the LCS problem may be broken down recursively.\n * This method will try to keep the LCS trace in memory. If the LCS recursion\n * point is calculated and the full trace is available in memory, then this method\n * will return the change list.\n * @param originalStart The start bound of the original sequence range\n * @param originalEnd The end bound of the original sequence range\n * @param modifiedStart The start bound of the modified sequence range\n * @param modifiedEnd The end bound of the modified sequence range\n * @param midOriginal The middle point of the original sequence range\n * @param midModified The middle point of the modified sequence range\n * @returns The diff changes, if available, otherwise null\n */\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\n let originalIndex = 0, modifiedIndex = 0;\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\n // To traverse the edit graph and produce the proper LCS, our actual\n // start position is just outside the given boundary\n originalStart--;\n modifiedStart--;\n // We set these up to make the compiler happy, but they will\n // be replaced before we return with the actual recursion point\n midOriginalArr[0] = 0;\n midModifiedArr[0] = 0;\n // Clear out the history\n this.m_forwardHistory = [];\n this.m_reverseHistory = [];\n // Each cell in the two arrays corresponds to a diagonal in the edit graph.\n // The integer value in the cell represents the originalIndex of the furthest\n // reaching point found so far that ends in that diagonal.\n // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number.\n const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart);\n const numDiagonals = maxDifferences + 1;\n const forwardPoints = new Int32Array(numDiagonals);\n const reversePoints = new Int32Array(numDiagonals);\n // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart)\n // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd)\n const diagonalForwardBase = (modifiedEnd - modifiedStart);\n const diagonalReverseBase = (originalEnd - originalStart);\n // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\n // diagonal number (relative to diagonalForwardBase)\n // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\n // diagonal number (relative to diagonalReverseBase)\n const diagonalForwardOffset = (originalStart - modifiedStart);\n const diagonalReverseOffset = (originalEnd - modifiedEnd);\n // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers\n // relative to the start diagonal with diagonal numbers relative to the end diagonal.\n // The Even/Oddn-ness of this delta is important for determining when we should check for overlap\n const delta = diagonalReverseBase - diagonalForwardBase;\n const deltaIsEven = (delta % 2 === 0);\n // Here we set up the start and end points as the furthest points found so far\n // in both the forward and reverse directions, respectively\n forwardPoints[diagonalForwardBase] = originalStart;\n reversePoints[diagonalReverseBase] = originalEnd;\n // Remember if we quit early, and thus need to do a best-effort result instead of a real result.\n quitEarlyArr[0] = false;\n // A couple of points:\n // --With this method, we iterate on the number of differences between the two sequences.\n // The more differences there actually are, the longer this will take.\n // --Also, as the number of differences increases, we have to search on diagonals further\n // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse).\n // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences\n // is even and odd diagonals only when numDifferences is odd.\n for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) {\n let furthestOriginalIndex = 0;\n let furthestModifiedIndex = 0;\n // Run the algorithm in the forward direction\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\n // STEP 1: We extend the furthest reaching point in the present diagonal\n // by looking at the diagonals above and below and picking the one whose point\n // is further away from the start point (originalStart, modifiedStart)\n if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\n originalIndex = forwardPoints[diagonal + 1];\n }\n else {\n originalIndex = forwardPoints[diagonal - 1] + 1;\n }\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\n // Save the current originalIndex so we can test for false overlap in step 3\n const tempOriginalIndex = originalIndex;\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\n // so long as the elements are equal.\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\n originalIndex++;\n modifiedIndex++;\n }\n forwardPoints[diagonal] = originalIndex;\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\n furthestOriginalIndex = originalIndex;\n furthestModifiedIndex = modifiedIndex;\n }\n // STEP 3: If delta is odd (overlap first happens on forward when delta is odd)\n // and diagonal is in the range of reverse diagonals computed for numDifferences-1\n // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet)\n // then check for overlap.\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) {\n if (originalIndex >= reversePoints[diagonal]) {\n midOriginalArr[0] = originalIndex;\n midModifiedArr[0] = modifiedIndex;\n if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) {\n // BINGO! We overlapped, and we have the full trace in memory!\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n }\n else {\n // Either false overlap, or we didn't have enough memory for the full trace\n // Just return the recursion point\n return null;\n }\n }\n }\n }\n // Check to see if we should be quitting early, before moving on to the next iteration.\n const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\n // We can't finish, so skip ahead to generating a result from what we have.\n quitEarlyArr[0] = true;\n // Use the furthest distance we got in the forward direction.\n midOriginalArr[0] = furthestOriginalIndex;\n midModifiedArr[0] = furthestModifiedIndex;\n if (matchLengthOfLongest > 0 && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) {\n // Enough of the history is in memory to walk it backwards\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n }\n else {\n // We didn't actually remember enough of the history.\n //Since we are quitting the diff early, we need to shift back the originalStart and modified start\n //back into the boundary limits since we decremented their value above beyond the boundary limit.\n originalStart++;\n modifiedStart++;\n return [\n new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\n ];\n }\n }\n // Run the algorithm in the reverse direction\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\n // STEP 1: We extend the furthest reaching point in the present diagonal\n // by looking at the diagonals above and below and picking the one whose point\n // is further away from the start point (originalEnd, modifiedEnd)\n if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\n originalIndex = reversePoints[diagonal + 1] - 1;\n }\n else {\n originalIndex = reversePoints[diagonal - 1];\n }\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\n // Save the current originalIndex so we can test for false overlap\n const tempOriginalIndex = originalIndex;\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\n // as long as the elements are equal.\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\n originalIndex--;\n modifiedIndex--;\n }\n reversePoints[diagonal] = originalIndex;\n // STEP 4: If delta is even (overlap first happens on reverse when delta is even)\n // and diagonal is in the range of forward diagonals computed for numDifferences\n // then check for overlap.\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\n if (originalIndex <= forwardPoints[diagonal]) {\n midOriginalArr[0] = originalIndex;\n midModifiedArr[0] = modifiedIndex;\n if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) {\n // BINGO! We overlapped, and we have the full trace in memory!\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n }\n else {\n // Either false overlap, or we didn't have enough memory for the full trace\n // Just return the recursion point\n return null;\n }\n }\n }\n }\n // Save current vectors to history before the next iteration\n if (numDifferences <= 1447 /* LocalConstants.MaxDifferencesHistory */) {\n // We are allocating space for one extra int, which we fill with\n // the index of the diagonal base index\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\n this.m_forwardHistory.push(temp);\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\n this.m_reverseHistory.push(temp);\n }\n }\n // If we got here, then we have the full trace in history. We just have to convert it to a change list\n // NOTE: This part is a bit messy\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\n }\n /**\n * Shifts the given changes to provide a more intuitive diff.\n * While the first element in a diff matches the first element after the diff,\n * we shift the diff down.\n *\n * @param changes The list of changes to shift\n * @returns The shifted changes\n */\n PrettifyChanges(changes) {\n // Shift all the changes down first\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\n const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\n const checkOriginal = change.originalLength > 0;\n const checkModified = change.modifiedLength > 0;\n while (change.originalStart + change.originalLength < originalStop\n && change.modifiedStart + change.modifiedLength < modifiedStop\n && (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength))\n && (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\n const startStrictEqual = this.ElementsAreStrictEqual(change.originalStart, change.modifiedStart);\n const endStrictEqual = this.ElementsAreStrictEqual(change.originalStart + change.originalLength, change.modifiedStart + change.modifiedLength);\n if (endStrictEqual && !startStrictEqual) {\n // moving the change down would create an equal change, but the elements are not strict equal\n break;\n }\n change.originalStart++;\n change.modifiedStart++;\n }\n const mergedChangeArr = [null];\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\n changes[i] = mergedChangeArr[0];\n changes.splice(i + 1, 1);\n i--;\n continue;\n }\n }\n // Shift changes back up until we hit empty or whitespace-only lines\n for (let i = changes.length - 1; i >= 0; i--) {\n const change = changes[i];\n let originalStop = 0;\n let modifiedStop = 0;\n if (i > 0) {\n const prevChange = changes[i - 1];\n originalStop = prevChange.originalStart + prevChange.originalLength;\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\n }\n const checkOriginal = change.originalLength > 0;\n const checkModified = change.modifiedLength > 0;\n let bestDelta = 0;\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\n for (let delta = 1;; delta++) {\n const originalStart = change.originalStart - delta;\n const modifiedStart = change.modifiedStart - delta;\n if (originalStart < originalStop || modifiedStart < modifiedStop) {\n break;\n }\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) {\n break;\n }\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) {\n break;\n }\n const touchingPreviousChange = (originalStart === originalStop && modifiedStart === modifiedStop);\n const score = ((touchingPreviousChange ? 5 : 0)\n + this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength));\n if (score > bestScore) {\n bestScore = score;\n bestDelta = delta;\n }\n }\n change.originalStart -= bestDelta;\n change.modifiedStart -= bestDelta;\n const mergedChangeArr = [null];\n if (i > 0 && this.ChangesOverlap(changes[i - 1], changes[i], mergedChangeArr)) {\n changes[i - 1] = mergedChangeArr[0];\n changes.splice(i, 1);\n i++;\n continue;\n }\n }\n // There could be multiple longest common substrings.\n // Give preference to the ones containing longer lines\n if (this._hasStrings) {\n for (let i = 1, len = changes.length; i < len; i++) {\n const aChange = changes[i - 1];\n const bChange = changes[i];\n const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength;\n const aOriginalStart = aChange.originalStart;\n const bOriginalEnd = bChange.originalStart + bChange.originalLength;\n const abOriginalLength = bOriginalEnd - aOriginalStart;\n const aModifiedStart = aChange.modifiedStart;\n const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength;\n const abModifiedLength = bModifiedEnd - aModifiedStart;\n // Avoid wasting a lot of time with these searches\n if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) {\n const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength);\n if (t) {\n const [originalMatchStart, modifiedMatchStart] = t;\n if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) {\n // switch to another sequence that has a better score\n aChange.originalLength = originalMatchStart - aChange.originalStart;\n aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart;\n bChange.originalStart = originalMatchStart + matchedLength;\n bChange.modifiedStart = modifiedMatchStart + matchedLength;\n bChange.originalLength = bOriginalEnd - bChange.originalStart;\n bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart;\n }\n }\n }\n }\n }\n return changes;\n }\n _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) {\n if (originalLength < desiredLength || modifiedLength < desiredLength) {\n return null;\n }\n const originalMax = originalStart + originalLength - desiredLength + 1;\n const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1;\n let bestScore = 0;\n let bestOriginalStart = 0;\n let bestModifiedStart = 0;\n for (let i = originalStart; i < originalMax; i++) {\n for (let j = modifiedStart; j < modifiedMax; j++) {\n const score = this._contiguousSequenceScore(i, j, desiredLength);\n if (score > 0 && score > bestScore) {\n bestScore = score;\n bestOriginalStart = i;\n bestModifiedStart = j;\n }\n }\n }\n if (bestScore > 0) {\n return [bestOriginalStart, bestModifiedStart];\n }\n return null;\n }\n _contiguousSequenceScore(originalStart, modifiedStart, length) {\n let score = 0;\n for (let l = 0; l < length; l++) {\n if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) {\n return 0;\n }\n score += this._originalStringElements[originalStart + l].length;\n }\n return score;\n }\n _OriginalIsBoundary(index) {\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) {\n return true;\n }\n return (this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]));\n }\n _OriginalRegionIsBoundary(originalStart, originalLength) {\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) {\n return true;\n }\n if (originalLength > 0) {\n const originalEnd = originalStart + originalLength;\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) {\n return true;\n }\n }\n return false;\n }\n _ModifiedIsBoundary(index) {\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) {\n return true;\n }\n return (this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]));\n }\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) {\n return true;\n }\n if (modifiedLength > 0) {\n const modifiedEnd = modifiedStart + modifiedLength;\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) {\n return true;\n }\n }\n return false;\n }\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\n const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0);\n const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\n return (originalScore + modifiedScore);\n }\n /**\n * Concatenates the two input DiffChange lists and returns the resulting\n * list.\n * @param The left changes\n * @param The right changes\n * @returns The concatenated list\n */\n ConcatenateChanges(left, right) {\n const mergedChangeArr = [];\n if (left.length === 0 || right.length === 0) {\n return (right.length > 0) ? right : left;\n }\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\n // Since we break the problem down recursively, it is possible that we\n // might recurse in the middle of a change thereby splitting it into\n // two changes. Here in the combining stage, we detect and fuse those\n // changes back together\n const result = new Array(left.length + right.length - 1);\n MyArray.Copy(left, 0, result, 0, left.length - 1);\n result[left.length - 1] = mergedChangeArr[0];\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\n return result;\n }\n else {\n const result = new Array(left.length + right.length);\n MyArray.Copy(left, 0, result, 0, left.length);\n MyArray.Copy(right, 0, result, left.length, right.length);\n return result;\n }\n }\n /**\n * Returns true if the two changes overlap and can be merged into a single\n * change\n * @param left The left change\n * @param right The right change\n * @param mergedChange The merged change if the two overlap, null otherwise\n * @returns True if the two changes overlap\n */\n ChangesOverlap(left, right, mergedChangeArr) {\n Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change');\n Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change');\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\n const originalStart = left.originalStart;\n let originalLength = left.originalLength;\n const modifiedStart = left.modifiedStart;\n let modifiedLength = left.modifiedLength;\n if (left.originalStart + left.originalLength >= right.originalStart) {\n originalLength = right.originalStart + right.originalLength - left.originalStart;\n }\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\n modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\n }\n mergedChangeArr[0] = new _diffChange_js__WEBPACK_IMPORTED_MODULE_0__.DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\n return true;\n }\n else {\n mergedChangeArr[0] = null;\n return false;\n }\n }\n /**\n * Helper method used to clip a diagonal index to the range of valid\n * diagonals. This also decides whether or not the diagonal index,\n * if it exceeds the boundary, should be clipped to the boundary or clipped\n * one inside the boundary depending on the Even/Odd status of the boundary\n * and numDifferences.\n * @param diagonal The index of the diagonal to clip.\n * @param numDifferences The current number of differences being iterated upon.\n * @param diagonalBaseIndex The base reference diagonal.\n * @param numDiagonals The total number of diagonals.\n * @returns The clipped diagonal index.\n */\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\n if (diagonal >= 0 && diagonal < numDiagonals) {\n // Nothing to clip, its in range\n return diagonal;\n }\n // diagonalsBelow: The number of diagonals below the reference diagonal\n // diagonalsAbove: The number of diagonals above the reference diagonal\n const diagonalsBelow = diagonalBaseIndex;\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\n const diffEven = (numDifferences % 2 === 0);\n if (diagonal < 0) {\n const lowerBoundEven = (diagonalsBelow % 2 === 0);\n return (diffEven === lowerBoundEven) ? 0 : 1;\n }\n else {\n const upperBoundEven = (diagonalsAbove % 2 === 0);\n return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2;\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js": +/*!**************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DiffChange: () => (/* binding */ DiffChange)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * Represents information about a specific difference between two sequences.\n */\nclass DiffChange {\n /**\n * Constructs a new DiffChange with the given sequence information\n * and content.\n */\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\n //Debug.Assert(originalLength > 0 || modifiedLength > 0, \"originalLength and modifiedLength cannot both be <= 0\");\n this.originalStart = originalStart;\n this.originalLength = originalLength;\n this.modifiedStart = modifiedStart;\n this.modifiedLength = modifiedLength;\n }\n /**\n * The end point (exclusive) of the change in the original sequence.\n */\n getOriginalEnd() {\n return this.originalStart + this.originalLength;\n }\n /**\n * The end point (exclusive) of the change in the modified sequence.\n */\n getModifiedEnd() {\n return this.modifiedStart + this.modifiedLength;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/errorMessage.js": +/*!***********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/errorMessage.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toErrorMessage: () => (/* binding */ toErrorMessage)\n/* harmony export */ });\n/* harmony import */ var _arrays_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nfunction exceptionToErrorMessage(exception, verbose) {\n if (verbose && (exception.stack || exception.stacktrace)) {\n return _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('stackTrace.format', \"{0}: {1}\", detectSystemErrorMessage(exception), stackToString(exception.stack) || stackToString(exception.stacktrace));\n }\n return detectSystemErrorMessage(exception);\n}\nfunction stackToString(stack) {\n if (Array.isArray(stack)) {\n return stack.join('\\n');\n }\n return stack;\n}\nfunction detectSystemErrorMessage(exception) {\n // Custom node.js error from us\n if (exception.code === 'ERR_UNC_HOST_NOT_ALLOWED') {\n return `${exception.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`;\n }\n // See https://nodejs.org/api/errors.html#errors_class_system_error\n if (typeof exception.code === 'string' && typeof exception.errno === 'number' && typeof exception.syscall === 'string') {\n return _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('nodeExceptionMessage', \"A system error occurred ({0})\", exception.message);\n }\n return exception.message || _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n}\n/**\n * Tries to generate a human readable error message out of the error. If the verbose parameter\n * is set to true, the error message will include stacktrace details if provided.\n *\n * @returns A string containing the error message.\n */\nfunction toErrorMessage(error = null, verbose = false) {\n if (!error) {\n return _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n }\n if (Array.isArray(error)) {\n const errors = _arrays_js__WEBPACK_IMPORTED_MODULE_0__.coalesce(error);\n const msg = toErrorMessage(errors[0], verbose);\n if (errors.length > 1) {\n return _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('error.moreErrors', \"{0} ({1} errors in total)\", msg, errors.length);\n }\n return msg;\n }\n if (_types_js__WEBPACK_IMPORTED_MODULE_1__.isString(error)) {\n return error;\n }\n if (error.detail) {\n const detail = error.detail;\n if (detail.error) {\n return exceptionToErrorMessage(detail.error, verbose);\n }\n if (detail.exception) {\n return exceptionToErrorMessage(detail.exception, verbose);\n }\n }\n if (error.stack) {\n return exceptionToErrorMessage(error, verbose);\n }\n if (error.message) {\n return error.message;\n }\n return _nls_js__WEBPACK_IMPORTED_MODULE_2__.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/errorMessage.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/errors.js": +/*!*****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/errors.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BugIndicatingError: () => (/* binding */ BugIndicatingError),\n/* harmony export */ CancellationError: () => (/* binding */ CancellationError),\n/* harmony export */ ErrorHandler: () => (/* binding */ ErrorHandler),\n/* harmony export */ ErrorNoTelemetry: () => (/* binding */ ErrorNoTelemetry),\n/* harmony export */ NotSupportedError: () => (/* binding */ NotSupportedError),\n/* harmony export */ canceled: () => (/* binding */ canceled),\n/* harmony export */ errorHandler: () => (/* binding */ errorHandler),\n/* harmony export */ illegalArgument: () => (/* binding */ illegalArgument),\n/* harmony export */ illegalState: () => (/* binding */ illegalState),\n/* harmony export */ isCancellationError: () => (/* binding */ isCancellationError),\n/* harmony export */ onUnexpectedError: () => (/* binding */ onUnexpectedError),\n/* harmony export */ onUnexpectedExternalError: () => (/* binding */ onUnexpectedExternalError),\n/* harmony export */ transformErrorForSerialization: () => (/* binding */ transformErrorForSerialization)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\nclass ErrorHandler {\n constructor() {\n this.listeners = [];\n this.unexpectedErrorHandler = function (e) {\n setTimeout(() => {\n if (e.stack) {\n if (ErrorNoTelemetry.isErrorNoTelemetry(e)) {\n throw new ErrorNoTelemetry(e.message + '\\n\\n' + e.stack);\n }\n throw new Error(e.message + '\\n\\n' + e.stack);\n }\n throw e;\n }, 0);\n };\n }\n emit(e) {\n this.listeners.forEach((listener) => {\n listener(e);\n });\n }\n onUnexpectedError(e) {\n this.unexpectedErrorHandler(e);\n this.emit(e);\n }\n // For external errors, we don't want the listeners to be called\n onUnexpectedExternalError(e) {\n this.unexpectedErrorHandler(e);\n }\n}\nconst errorHandler = new ErrorHandler();\nfunction onUnexpectedError(e) {\n // ignore errors from cancelled promises\n if (!isCancellationError(e)) {\n errorHandler.onUnexpectedError(e);\n }\n return undefined;\n}\nfunction onUnexpectedExternalError(e) {\n // ignore errors from cancelled promises\n if (!isCancellationError(e)) {\n errorHandler.onUnexpectedExternalError(e);\n }\n return undefined;\n}\nfunction transformErrorForSerialization(error) {\n if (error instanceof Error) {\n const { name, message } = error;\n const stack = error.stacktrace || error.stack;\n return {\n $isError: true,\n name,\n message,\n stack,\n noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error)\n };\n }\n // return as is\n return error;\n}\nconst canceledName = 'Canceled';\n/**\n * Checks if the given error is a promise in canceled state\n */\nfunction isCancellationError(error) {\n if (error instanceof CancellationError) {\n return true;\n }\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\n}\n// !!!IMPORTANT!!!\n// Do NOT change this class because it is also used as an API-type.\nclass CancellationError extends Error {\n constructor() {\n super(canceledName);\n this.name = this.message;\n }\n}\n/**\n * @deprecated use {@link CancellationError `new CancellationError()`} instead\n */\nfunction canceled() {\n const error = new Error(canceledName);\n error.name = error.message;\n return error;\n}\nfunction illegalArgument(name) {\n if (name) {\n return new Error(`Illegal argument: ${name}`);\n }\n else {\n return new Error('Illegal argument');\n }\n}\nfunction illegalState(name) {\n if (name) {\n return new Error(`Illegal state: ${name}`);\n }\n else {\n return new Error('Illegal state');\n }\n}\nclass NotSupportedError extends Error {\n constructor(message) {\n super('NotSupported');\n if (message) {\n this.message = message;\n }\n }\n}\n/**\n * Error that when thrown won't be logged in telemetry as an unhandled error.\n */\nclass ErrorNoTelemetry extends Error {\n constructor(msg) {\n super(msg);\n this.name = 'CodeExpectedError';\n }\n static fromError(err) {\n if (err instanceof ErrorNoTelemetry) {\n return err;\n }\n const result = new ErrorNoTelemetry();\n result.message = err.message;\n result.stack = err.stack;\n return result;\n }\n static isErrorNoTelemetry(err) {\n return err.name === 'CodeExpectedError';\n }\n}\n/**\n * This error indicates a bug.\n * Do not throw this for invalid user input.\n * Only catch this error to recover gracefully from bugs.\n */\nclass BugIndicatingError extends Error {\n constructor(message) {\n super(message || 'An unexpected bug occurred.');\n Object.setPrototypeOf(this, BugIndicatingError.prototype);\n // Because we know for sure only buggy code throws this,\n // we definitely want to break here and fix the bug.\n // eslint-disable-next-line no-debugger\n // debugger;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/errors.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/event.js": +/*!****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/event.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DebounceEmitter: () => (/* binding */ DebounceEmitter),\n/* harmony export */ Emitter: () => (/* binding */ Emitter),\n/* harmony export */ Event: () => (/* binding */ Event),\n/* harmony export */ EventBufferer: () => (/* binding */ EventBufferer),\n/* harmony export */ EventMultiplexer: () => (/* binding */ EventMultiplexer),\n/* harmony export */ EventProfiling: () => (/* binding */ EventProfiling),\n/* harmony export */ MicrotaskEmitter: () => (/* binding */ MicrotaskEmitter),\n/* harmony export */ PauseableEmitter: () => (/* binding */ PauseableEmitter),\n/* harmony export */ Relay: () => (/* binding */ Relay),\n/* harmony export */ createEventDeliveryQueue: () => (/* binding */ createEventDeliveryQueue)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _functional_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./functional.js */ \"./node_modules/monaco-editor/esm/vs/base/common/functional.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _linkedList_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linkedList.js */ \"./node_modules/monaco-editor/esm/vs/base/common/linkedList.js\");\n/* harmony import */ var _stopwatch_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stopwatch.js */ \"./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js\");\n\n\n\n\n\n// -----------------------------------------------------------------------------------------------------------------------\n// Uncomment the next line to print warnings whenever an emitter with listeners is disposed. That is a sign of code smell.\n// -----------------------------------------------------------------------------------------------------------------------\nconst _enableDisposeWithListenerWarning = false;\n// _enableDisposeWithListenerWarning = Boolean(\"TRUE\"); // causes a linter warning so that it cannot be pushed\n// -----------------------------------------------------------------------------------------------------------------------\n// Uncomment the next line to print warnings whenever a snapshotted event is used repeatedly without cleanup.\n// See https://github.com/microsoft/vscode/issues/142851\n// -----------------------------------------------------------------------------------------------------------------------\nconst _enableSnapshotPotentialLeakWarning = false;\nvar Event;\n(function (Event) {\n Event.None = () => _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable.None;\n function _addLeakageTraceLogic(options) {\n if (_enableSnapshotPotentialLeakWarning) {\n const { onDidAddListener: origListenerDidAdd } = options;\n const stack = Stacktrace.create();\n let count = 0;\n options.onDidAddListener = () => {\n if (++count === 2) {\n console.warn('snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here');\n stack.print();\n }\n origListenerDidAdd === null || origListenerDidAdd === void 0 ? void 0 : origListenerDidAdd();\n };\n }\n }\n /**\n * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared\n * `setTimeout`. The event is converted into a signal (`Event`) to avoid additional object creation as a\n * result of merging events and to try prevent race conditions that could arise when using related deferred and\n * non-deferred events.\n *\n * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work\n * (eg. latency of keypress to text rendered).\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function defer(event, disposable) {\n return debounce(event, () => void 0, 0, undefined, true, undefined, disposable);\n }\n Event.defer = defer;\n /**\n * Given an event, returns another event which only fires once.\n *\n * @param event The event source for the new event.\n */\n function once(event) {\n return (listener, thisArgs = null, disposables) => {\n // we need this, in case the event fires during the listener call\n let didFire = false;\n let result = undefined;\n result = event(e => {\n if (didFire) {\n return;\n }\n else if (result) {\n result.dispose();\n }\n else {\n didFire = true;\n }\n return listener.call(thisArgs, e);\n }, null, disposables);\n if (didFire) {\n result.dispose();\n }\n return result;\n };\n }\n Event.once = once;\n /**\n * Maps an event of one type into an event of another type using a mapping function, similar to how\n * `Array.prototype.map` works.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param map The mapping function.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function map(event, map, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables), disposable);\n }\n Event.map = map;\n /**\n * Wraps an event in another event that performs some function on the event object before firing.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param each The function to perform on the event object.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function forEach(event, each, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables), disposable);\n }\n Event.forEach = forEach;\n function filter(event, filter, disposable) {\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables), disposable);\n }\n Event.filter = filter;\n /**\n * Given an event, returns the same event but typed as `Event`.\n */\n function signal(event) {\n return event;\n }\n Event.signal = signal;\n function any(...events) {\n return (listener, thisArgs = null, disposables) => (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.combinedDisposable)(...events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));\n }\n Event.any = any;\n /**\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function reduce(event, merge, initial, disposable) {\n let output = initial;\n return map(event, e => {\n output = merge(output, e);\n return output;\n }, disposable);\n }\n Event.reduce = reduce;\n function snapshot(event, disposable) {\n let listener;\n const options = {\n onWillAddFirstListener() {\n listener = event(emitter.fire, emitter);\n },\n onDidRemoveLastListener() {\n listener === null || listener === void 0 ? void 0 : listener.dispose();\n }\n };\n if (!disposable) {\n _addLeakageTraceLogic(options);\n }\n const emitter = new Emitter(options);\n disposable === null || disposable === void 0 ? void 0 : disposable.add(emitter);\n return emitter.event;\n }\n function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) {\n let subscription;\n let output = undefined;\n let handle = undefined;\n let numDebouncedCalls = 0;\n let doFire;\n const options = {\n leakWarningThreshold,\n onWillAddFirstListener() {\n subscription = event(cur => {\n numDebouncedCalls++;\n output = merge(output, cur);\n if (leading && !handle) {\n emitter.fire(output);\n output = undefined;\n }\n doFire = () => {\n const _output = output;\n output = undefined;\n handle = undefined;\n if (!leading || numDebouncedCalls > 1) {\n emitter.fire(_output);\n }\n numDebouncedCalls = 0;\n };\n if (typeof delay === 'number') {\n clearTimeout(handle);\n handle = setTimeout(doFire, delay);\n }\n else {\n if (handle === undefined) {\n handle = 0;\n queueMicrotask(doFire);\n }\n }\n });\n },\n onWillRemoveListener() {\n if (flushOnListenerRemove && numDebouncedCalls > 0) {\n doFire === null || doFire === void 0 ? void 0 : doFire();\n }\n },\n onDidRemoveLastListener() {\n doFire = undefined;\n subscription.dispose();\n }\n };\n if (!disposable) {\n _addLeakageTraceLogic(options);\n }\n const emitter = new Emitter(options);\n disposable === null || disposable === void 0 ? void 0 : disposable.add(emitter);\n return emitter.event;\n }\n Event.debounce = debounce;\n /**\n * Debounces an event, firing after some delay (default=0) with an array of all event original objects.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n */\n function accumulate(event, delay = 0, disposable) {\n return Event.debounce(event, (last, e) => {\n if (!last) {\n return [e];\n }\n last.push(e);\n return last;\n }, delay, undefined, true, undefined, disposable);\n }\n Event.accumulate = accumulate;\n /**\n * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate\n * event objects from different sources do not fire the same event object.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param equals The equality condition.\n * @param disposable A disposable store to add the new EventEmitter to.\n *\n * @example\n * ```\n * // Fire only one time when a single window is opened or focused\n * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow))\n * ```\n */\n function latch(event, equals = (a, b) => a === b, disposable) {\n let firstCall = true;\n let cache;\n return filter(event, value => {\n const shouldEmit = firstCall || !equals(value, cache);\n firstCall = false;\n cache = value;\n return shouldEmit;\n }, disposable);\n }\n Event.latch = latch;\n /**\n * Splits an event whose parameter is a union type into 2 separate events for each type in the union.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @example\n * ```\n * const event = new EventEmitter().event;\n * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined);\n * ```\n *\n * @param event The event source for the new event.\n * @param isT A function that determines what event is of the first type.\n * @param disposable A disposable store to add the new EventEmitter to.\n */\n function split(event, isT, disposable) {\n return [\n Event.filter(event, isT, disposable),\n Event.filter(event, e => !isT(e), disposable),\n ];\n }\n Event.split = split;\n /**\n * Buffers an event until it has a listener attached.\n *\n * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned\n * event is accessible to \"third parties\", e.g the event is a public property. Otherwise a leaked listener on the\n * returned event causes this utility to leak a listener on the original event.\n *\n * @param event The event source for the new event.\n * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a\n * `setTimeout` when the first event listener is added.\n * @param _buffer Internal: A source event array used for tests.\n *\n * @example\n * ```\n * // Start accumulating events, when the first listener is attached, flush\n * // the event after a timeout such that multiple listeners attached before\n * // the timeout would receive the event\n * this.onInstallExtension = Event.buffer(service.onInstallExtension, true);\n * ```\n */\n function buffer(event, flushAfterTimeout = false, _buffer = []) {\n let buffer = _buffer.slice();\n let listener = event(e => {\n if (buffer) {\n buffer.push(e);\n }\n else {\n emitter.fire(e);\n }\n });\n const flush = () => {\n buffer === null || buffer === void 0 ? void 0 : buffer.forEach(e => emitter.fire(e));\n buffer = null;\n };\n const emitter = new Emitter({\n onWillAddFirstListener() {\n if (!listener) {\n listener = event(e => emitter.fire(e));\n }\n },\n onDidAddFirstListener() {\n if (buffer) {\n if (flushAfterTimeout) {\n setTimeout(flush);\n }\n else {\n flush();\n }\n }\n },\n onDidRemoveLastListener() {\n if (listener) {\n listener.dispose();\n }\n listener = null;\n }\n });\n return emitter.event;\n }\n Event.buffer = buffer;\n class ChainableEvent {\n constructor(event) {\n this.event = event;\n this.disposables = new _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.DisposableStore();\n }\n /** @see {@link Event.map} */\n map(fn) {\n return new ChainableEvent(map(this.event, fn, this.disposables));\n }\n /** @see {@link Event.forEach} */\n forEach(fn) {\n return new ChainableEvent(forEach(this.event, fn, this.disposables));\n }\n filter(fn) {\n return new ChainableEvent(filter(this.event, fn, this.disposables));\n }\n /** @see {@link Event.reduce} */\n reduce(merge, initial) {\n return new ChainableEvent(reduce(this.event, merge, initial, this.disposables));\n }\n /** @see {@link Event.reduce} */\n latch() {\n return new ChainableEvent(latch(this.event, undefined, this.disposables));\n }\n debounce(merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold) {\n return new ChainableEvent(debounce(this.event, merge, delay, leading, flushOnListenerRemove, leakWarningThreshold, this.disposables));\n }\n /**\n * Attach a listener to the event.\n */\n on(listener, thisArgs, disposables) {\n return this.event(listener, thisArgs, disposables);\n }\n /** @see {@link Event.once} */\n once(listener, thisArgs, disposables) {\n return once(this.event)(listener, thisArgs, disposables);\n }\n dispose() {\n this.disposables.dispose();\n }\n }\n /**\n * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style.\n *\n * @example\n * ```\n * // Normal\n * const onEnterPressNormal = Event.filter(\n * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)),\n * e.keyCode === KeyCode.Enter\n * ).event;\n *\n * // Using chain\n * const onEnterPressChain = Event.chain(onKeyPress.event)\n * .map(e => new StandardKeyboardEvent(e))\n * .filter(e => e.keyCode === KeyCode.Enter)\n * .event;\n * ```\n */\n function chain(event) {\n return new ChainableEvent(event);\n }\n Event.chain = chain;\n /**\n * Creates an {@link Event} from a node event emitter.\n */\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\n const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove });\n return result.event;\n }\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\n /**\n * Creates an {@link Event} from a DOM event emitter.\n */\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\n const fn = (...args) => result.fire(map(...args));\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\n const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove });\n return result.event;\n }\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\n /**\n * Creates a promise out of an event, using the {@link Event.once} helper.\n */\n function toPromise(event) {\n return new Promise(resolve => once(event)(resolve));\n }\n Event.toPromise = toPromise;\n /**\n * Adds a listener to an event and calls the listener immediately with undefined as the event object.\n *\n * @example\n * ```\n * // Initialize the UI and update it when dataChangeEvent fires\n * runAndSubscribe(dataChangeEvent, () => this._updateUI());\n * ```\n */\n function runAndSubscribe(event, handler) {\n handler(undefined);\n return event(e => handler(e));\n }\n Event.runAndSubscribe = runAndSubscribe;\n /**\n * Adds a listener to an event and calls the listener immediately with undefined as the event object. A new\n * {@link DisposableStore} is passed to the listener which is disposed when the returned disposable is disposed.\n */\n function runAndSubscribeWithStore(event, handler) {\n let store = null;\n function run(e) {\n store === null || store === void 0 ? void 0 : store.dispose();\n store = new _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.DisposableStore();\n handler(e, store);\n }\n run(undefined);\n const disposable = event(e => run(e));\n return (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.toDisposable)(() => {\n disposable.dispose();\n store === null || store === void 0 ? void 0 : store.dispose();\n });\n }\n Event.runAndSubscribeWithStore = runAndSubscribeWithStore;\n class EmitterObserver {\n constructor(_observable, store) {\n this._observable = _observable;\n this._counter = 0;\n this._hasChanged = false;\n const options = {\n onWillAddFirstListener: () => {\n _observable.addObserver(this);\n },\n onDidRemoveLastListener: () => {\n _observable.removeObserver(this);\n }\n };\n if (!store) {\n _addLeakageTraceLogic(options);\n }\n this.emitter = new Emitter(options);\n if (store) {\n store.add(this.emitter);\n }\n }\n beginUpdate(_observable) {\n // assert(_observable === this.obs);\n this._counter++;\n }\n handlePossibleChange(_observable) {\n // assert(_observable === this.obs);\n }\n handleChange(_observable, _change) {\n // assert(_observable === this.obs);\n this._hasChanged = true;\n }\n endUpdate(_observable) {\n // assert(_observable === this.obs);\n this._counter--;\n if (this._counter === 0) {\n this._observable.reportChanges();\n if (this._hasChanged) {\n this._hasChanged = false;\n this.emitter.fire(this._observable.get());\n }\n }\n }\n }\n /**\n * Creates an event emitter that is fired when the observable changes.\n * Each listeners subscribes to the emitter.\n */\n function fromObservable(obs, store) {\n const observer = new EmitterObserver(obs, store);\n return observer.emitter.event;\n }\n Event.fromObservable = fromObservable;\n /**\n * Each listener is attached to the observable directly.\n */\n function fromObservableLight(observable) {\n return (listener) => {\n let count = 0;\n let didChange = false;\n const observer = {\n beginUpdate() {\n count++;\n },\n endUpdate() {\n count--;\n if (count === 0) {\n observable.reportChanges();\n if (didChange) {\n didChange = false;\n listener();\n }\n }\n },\n handlePossibleChange() {\n // noop\n },\n handleChange() {\n didChange = true;\n }\n };\n observable.addObserver(observer);\n return {\n dispose() {\n observable.removeObserver(observer);\n }\n };\n };\n }\n Event.fromObservableLight = fromObservableLight;\n})(Event || (Event = {}));\nclass EventProfiling {\n constructor(name) {\n this.listenerCount = 0;\n this.invocationCount = 0;\n this.elapsedOverall = 0;\n this.durations = [];\n this.name = `${name}_${EventProfiling._idPool++}`;\n EventProfiling.all.add(this);\n }\n start(listenerCount) {\n this._stopWatch = new _stopwatch_js__WEBPACK_IMPORTED_MODULE_4__.StopWatch();\n this.listenerCount = listenerCount;\n }\n stop() {\n if (this._stopWatch) {\n const elapsed = this._stopWatch.elapsed();\n this.durations.push(elapsed);\n this.elapsedOverall += elapsed;\n this.invocationCount += 1;\n this._stopWatch = undefined;\n }\n }\n}\nEventProfiling.all = new Set();\nEventProfiling._idPool = 0;\nlet _globalLeakWarningThreshold = -1;\nclass LeakageMonitor {\n constructor(threshold, name = Math.random().toString(18).slice(2, 5)) {\n this.threshold = threshold;\n this.name = name;\n this._warnCountdown = 0;\n }\n dispose() {\n var _a;\n (_a = this._stacks) === null || _a === void 0 ? void 0 : _a.clear();\n }\n check(stack, listenerCount) {\n const threshold = this.threshold;\n if (threshold <= 0 || listenerCount < threshold) {\n return undefined;\n }\n if (!this._stacks) {\n this._stacks = new Map();\n }\n const count = (this._stacks.get(stack.value) || 0);\n this._stacks.set(stack.value, count + 1);\n this._warnCountdown -= 1;\n if (this._warnCountdown <= 0) {\n // only warn on first exceed and then every time the limit\n // is exceeded by 50% again\n this._warnCountdown = threshold * 0.5;\n // find most frequent listener and print warning\n let topStack;\n let topCount = 0;\n for (const [stack, count] of this._stacks) {\n if (!topStack || topCount < count) {\n topStack = stack;\n topCount = count;\n }\n }\n console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);\n console.warn(topStack);\n }\n return () => {\n const count = (this._stacks.get(stack.value) || 0);\n this._stacks.set(stack.value, count - 1);\n };\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn(this.value.split('\\n').slice(2).join('\\n'));\n }\n}\nclass UniqueContainer {\n constructor(value) {\n this.value = value;\n }\n}\nconst compactionThreshold = 2;\nconst forEachListener = (listeners, fn) => {\n if (listeners instanceof UniqueContainer) {\n fn(listeners);\n }\n else {\n for (let i = 0; i < listeners.length; i++) {\n const l = listeners[i];\n if (l) {\n fn(l);\n }\n }\n }\n};\n/**\n * The Emitter can be used to expose an Event to the public\n * to fire it from the insides.\n * Sample:\n class Document {\n\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\n\n public onDidChange = this._onDidChange.event;\n\n // getter-style\n // get onDidChange(): Event<(value:string)=>any> {\n // \treturn this._onDidChange.event;\n // }\n\n private _doIt() {\n //...\n this._onDidChange.fire(value);\n }\n }\n */\nclass Emitter {\n constructor(options) {\n var _a, _b, _c, _d, _e;\n this._size = 0;\n this._options = options;\n this._leakageMon = _globalLeakWarningThreshold > 0 || ((_a = this._options) === null || _a === void 0 ? void 0 : _a.leakWarningThreshold) ? new LeakageMonitor((_c = (_b = this._options) === null || _b === void 0 ? void 0 : _b.leakWarningThreshold) !== null && _c !== void 0 ? _c : _globalLeakWarningThreshold) : undefined;\n this._perfMon = ((_d = this._options) === null || _d === void 0 ? void 0 : _d._profName) ? new EventProfiling(this._options._profName) : undefined;\n this._deliveryQueue = (_e = this._options) === null || _e === void 0 ? void 0 : _e.deliveryQueue;\n }\n dispose() {\n var _a, _b, _c, _d;\n if (!this._disposed) {\n this._disposed = true;\n // It is bad to have listeners at the time of disposing an emitter, it is worst to have listeners keep the emitter\n // alive via the reference that's embedded in their disposables. Therefore we loop over all remaining listeners and\n // unset their subscriptions/disposables. Looping and blaming remaining listeners is done on next tick because the\n // the following programming pattern is very popular:\n //\n // const someModel = this._disposables.add(new ModelObject()); // (1) create and register model\n // this._disposables.add(someModel.onDidChange(() => { ... }); // (2) subscribe and register model-event listener\n // ...later...\n // this._disposables.dispose(); disposes (1) then (2): don't warn after (1) but after the \"overall dispose\" is done\n if (((_a = this._deliveryQueue) === null || _a === void 0 ? void 0 : _a.current) === this) {\n this._deliveryQueue.reset();\n }\n if (this._listeners) {\n if (_enableDisposeWithListenerWarning) {\n const listeners = this._listeners;\n queueMicrotask(() => {\n forEachListener(listeners, l => { var _a; return (_a = l.stack) === null || _a === void 0 ? void 0 : _a.print(); });\n });\n }\n this._listeners = undefined;\n this._size = 0;\n }\n (_c = (_b = this._options) === null || _b === void 0 ? void 0 : _b.onDidRemoveLastListener) === null || _c === void 0 ? void 0 : _c.call(_b);\n (_d = this._leakageMon) === null || _d === void 0 ? void 0 : _d.dispose();\n }\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n var _a;\n (_a = this._event) !== null && _a !== void 0 ? _a : (this._event = (callback, thisArgs, disposables) => {\n var _a, _b, _c, _d, _e;\n if (this._leakageMon && this._size > this._leakageMon.threshold * 3) {\n console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`);\n return _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable.None;\n }\n if (this._disposed) {\n // todo: should we warn if a listener is added to a disposed emitter? This happens often\n return _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable.None;\n }\n if (thisArgs) {\n callback = callback.bind(thisArgs);\n }\n const contained = new UniqueContainer(callback);\n let removeMonitor;\n let stack;\n if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) {\n // check and record this emitter for potential leakage\n contained.stack = Stacktrace.create();\n removeMonitor = this._leakageMon.check(contained.stack, this._size + 1);\n }\n if (_enableDisposeWithListenerWarning) {\n contained.stack = stack !== null && stack !== void 0 ? stack : Stacktrace.create();\n }\n if (!this._listeners) {\n (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.onWillAddFirstListener) === null || _b === void 0 ? void 0 : _b.call(_a, this);\n this._listeners = contained;\n (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onDidAddFirstListener) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n }\n else if (this._listeners instanceof UniqueContainer) {\n (_e = this._deliveryQueue) !== null && _e !== void 0 ? _e : (this._deliveryQueue = new EventDeliveryQueuePrivate());\n this._listeners = [this._listeners, contained];\n }\n else {\n this._listeners.push(contained);\n }\n this._size++;\n const result = (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.toDisposable)(() => { removeMonitor === null || removeMonitor === void 0 ? void 0 : removeMonitor(); this._removeListener(contained); });\n if (disposables instanceof _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.DisposableStore) {\n disposables.add(result);\n }\n else if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n });\n return this._event;\n }\n _removeListener(listener) {\n var _a, _b, _c, _d;\n (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.onWillRemoveListener) === null || _b === void 0 ? void 0 : _b.call(_a, this);\n if (!this._listeners) {\n return; // expected if a listener gets disposed\n }\n if (this._size === 1) {\n this._listeners = undefined;\n (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onDidRemoveLastListener) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this._size = 0;\n return;\n }\n // size > 1 which requires that listeners be a list:\n const listeners = this._listeners;\n const index = listeners.indexOf(listener);\n if (index === -1) {\n console.log('disposed?', this._disposed);\n console.log('size?', this._size);\n console.log('arr?', JSON.stringify(this._listeners));\n throw new Error('Attempted to dispose unknown listener');\n }\n this._size--;\n listeners[index] = undefined;\n const adjustDeliveryQueue = this._deliveryQueue.current === this;\n if (this._size * compactionThreshold <= listeners.length) {\n let n = 0;\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]) {\n listeners[n++] = listeners[i];\n }\n else if (adjustDeliveryQueue) {\n this._deliveryQueue.end--;\n if (n < this._deliveryQueue.i) {\n this._deliveryQueue.i--;\n }\n }\n }\n listeners.length = n;\n }\n }\n _deliver(listener, value) {\n var _a;\n if (!listener) {\n return;\n }\n const errorHandler = ((_a = this._options) === null || _a === void 0 ? void 0 : _a.onListenerError) || _errors_js__WEBPACK_IMPORTED_MODULE_0__.onUnexpectedError;\n if (!errorHandler) {\n listener.value(value);\n return;\n }\n try {\n listener.value(value);\n }\n catch (e) {\n errorHandler(e);\n }\n }\n /** Delivers items in the queue. Assumes the queue is ready to go. */\n _deliverQueue(dq) {\n const listeners = dq.current._listeners;\n while (dq.i < dq.end) {\n // important: dq.i is incremented before calling deliver() because it might reenter deliverQueue()\n this._deliver(listeners[dq.i++], dq.value);\n }\n dq.reset();\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n var _a, _b, _c, _d;\n if ((_a = this._deliveryQueue) === null || _a === void 0 ? void 0 : _a.current) {\n this._deliverQueue(this._deliveryQueue);\n (_b = this._perfMon) === null || _b === void 0 ? void 0 : _b.stop(); // last fire() will have starting perfmon, stop it before starting the next dispatch\n }\n (_c = this._perfMon) === null || _c === void 0 ? void 0 : _c.start(this._size);\n if (!this._listeners) {\n // no-op\n }\n else if (this._listeners instanceof UniqueContainer) {\n this._deliver(this._listeners, event);\n }\n else {\n const dq = this._deliveryQueue;\n dq.enqueue(this, event, this._listeners.length);\n this._deliverQueue(dq);\n }\n (_d = this._perfMon) === null || _d === void 0 ? void 0 : _d.stop();\n }\n hasListeners() {\n return this._size > 0;\n }\n}\nconst createEventDeliveryQueue = () => new EventDeliveryQueuePrivate();\nclass EventDeliveryQueuePrivate {\n constructor() {\n /**\n * Index in current's listener list.\n */\n this.i = -1;\n /**\n * The last index in the listener's list to deliver.\n */\n this.end = 0;\n }\n enqueue(emitter, value, end) {\n this.i = 0;\n this.end = end;\n this.current = emitter;\n this.value = value;\n }\n reset() {\n this.i = this.end; // force any current emission loop to stop, mainly for during dispose\n this.current = undefined;\n this.value = undefined;\n }\n}\nclass PauseableEmitter extends Emitter {\n constructor(options) {\n super(options);\n this._isPaused = 0;\n this._eventQueue = new _linkedList_js__WEBPACK_IMPORTED_MODULE_3__.LinkedList();\n this._mergeFn = options === null || options === void 0 ? void 0 : options.merge;\n }\n pause() {\n this._isPaused++;\n }\n resume() {\n if (this._isPaused !== 0 && --this._isPaused === 0) {\n if (this._mergeFn) {\n // use the merge function to create a single composite\n // event. make a copy in case firing pauses this emitter\n if (this._eventQueue.size > 0) {\n const events = Array.from(this._eventQueue);\n this._eventQueue.clear();\n super.fire(this._mergeFn(events));\n }\n }\n else {\n // no merging, fire each event individually and test\n // that this emitter isn't paused halfway through\n while (!this._isPaused && this._eventQueue.size !== 0) {\n super.fire(this._eventQueue.shift());\n }\n }\n }\n }\n fire(event) {\n if (this._size) {\n if (this._isPaused !== 0) {\n this._eventQueue.push(event);\n }\n else {\n super.fire(event);\n }\n }\n }\n}\nclass DebounceEmitter extends PauseableEmitter {\n constructor(options) {\n var _a;\n super(options);\n this._delay = (_a = options.delay) !== null && _a !== void 0 ? _a : 100;\n }\n fire(event) {\n if (!this._handle) {\n this.pause();\n this._handle = setTimeout(() => {\n this._handle = undefined;\n this.resume();\n }, this._delay);\n }\n super.fire(event);\n }\n}\n/**\n * An emitter which queue all events and then process them at the\n * end of the event loop.\n */\nclass MicrotaskEmitter extends Emitter {\n constructor(options) {\n super(options);\n this._queuedEvents = [];\n this._mergeFn = options === null || options === void 0 ? void 0 : options.merge;\n }\n fire(event) {\n if (!this.hasListeners()) {\n return;\n }\n this._queuedEvents.push(event);\n if (this._queuedEvents.length === 1) {\n queueMicrotask(() => {\n if (this._mergeFn) {\n super.fire(this._mergeFn(this._queuedEvents));\n }\n else {\n this._queuedEvents.forEach(e => super.fire(e));\n }\n this._queuedEvents = [];\n });\n }\n }\n}\nclass EventMultiplexer {\n constructor() {\n this.hasListeners = false;\n this.events = [];\n this.emitter = new Emitter({\n onWillAddFirstListener: () => this.onFirstListenerAdd(),\n onDidRemoveLastListener: () => this.onLastListenerRemove()\n });\n }\n get event() {\n return this.emitter.event;\n }\n add(event) {\n const e = { event: event, listener: null };\n this.events.push(e);\n if (this.hasListeners) {\n this.hook(e);\n }\n const dispose = () => {\n if (this.hasListeners) {\n this.unhook(e);\n }\n const idx = this.events.indexOf(e);\n this.events.splice(idx, 1);\n };\n return (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.toDisposable)((0,_functional_js__WEBPACK_IMPORTED_MODULE_1__.once)(dispose));\n }\n onFirstListenerAdd() {\n this.hasListeners = true;\n this.events.forEach(e => this.hook(e));\n }\n onLastListenerRemove() {\n this.hasListeners = false;\n this.events.forEach(e => this.unhook(e));\n }\n hook(e) {\n e.listener = e.event(r => this.emitter.fire(r));\n }\n unhook(e) {\n if (e.listener) {\n e.listener.dispose();\n }\n e.listener = null;\n }\n dispose() {\n this.emitter.dispose();\n }\n}\n/**\n * The EventBufferer is useful in situations in which you want\n * to delay firing your events during some code.\n * You can wrap that code and be sure that the event will not\n * be fired during that wrap.\n *\n * ```\n * const emitter: Emitter;\n * const delayer = new EventDelayer();\n * const delayedEvent = delayer.wrapEvent(emitter.event);\n *\n * delayedEvent(console.log);\n *\n * delayer.bufferEvents(() => {\n * emitter.fire(); // event will not be fired yet\n * });\n *\n * // event will only be fired at this point\n * ```\n */\nclass EventBufferer {\n constructor() {\n this.buffers = [];\n }\n wrapEvent(event) {\n return (listener, thisArgs, disposables) => {\n return event(i => {\n const buffer = this.buffers[this.buffers.length - 1];\n if (buffer) {\n buffer.push(() => listener.call(thisArgs, i));\n }\n else {\n listener.call(thisArgs, i);\n }\n }, undefined, disposables);\n };\n }\n bufferEvents(fn) {\n const buffer = [];\n this.buffers.push(buffer);\n const r = fn();\n this.buffers.pop();\n buffer.forEach(flush => flush());\n return r;\n }\n}\n/**\n * A Relay is an event forwarder which functions as a replugabble event pipe.\n * Once created, you can connect an input event to it and it will simply forward\n * events from that input event through its own `event` property. The `input`\n * can be changed at any point in time.\n */\nclass Relay {\n constructor() {\n this.listening = false;\n this.inputEvent = Event.None;\n this.inputEventListener = _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable.None;\n this.emitter = new Emitter({\n onDidAddFirstListener: () => {\n this.listening = true;\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\n },\n onDidRemoveLastListener: () => {\n this.listening = false;\n this.inputEventListener.dispose();\n }\n });\n this.event = this.emitter.event;\n }\n set input(event) {\n this.inputEvent = event;\n if (this.listening) {\n this.inputEventListener.dispose();\n this.inputEventListener = event(this.emitter.fire, this.emitter);\n }\n }\n dispose() {\n this.inputEventListener.dispose();\n this.emitter.dispose();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/event.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/extpath.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/extpath.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getRoot: () => (/* binding */ getRoot),\n/* harmony export */ hasDriveLetter: () => (/* binding */ hasDriveLetter),\n/* harmony export */ isEqualOrParent: () => (/* binding */ isEqualOrParent),\n/* harmony export */ isPathSeparator: () => (/* binding */ isPathSeparator),\n/* harmony export */ isWindowsDriveLetter: () => (/* binding */ isWindowsDriveLetter),\n/* harmony export */ toPosixPath: () => (/* binding */ toPosixPath),\n/* harmony export */ toSlashes: () => (/* binding */ toSlashes)\n/* harmony export */ });\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"./node_modules/monaco-editor/esm/vs/base/common/path.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nfunction isPathSeparator(code) {\n return code === 47 /* CharCode.Slash */ || code === 92 /* CharCode.Backslash */;\n}\n/**\n * Takes a Windows OS path and changes backward slashes to forward slashes.\n * This should only be done for OS paths from Windows (or user provided paths potentially from Windows).\n * Using it on a Linux or MaxOS path might change it.\n */\nfunction toSlashes(osPath) {\n return osPath.replace(/[\\\\/]/g, _path_js__WEBPACK_IMPORTED_MODULE_0__.posix.sep);\n}\n/**\n * Takes a Windows OS path (using backward or forward slashes) and turns it into a posix path:\n * - turns backward slashes into forward slashes\n * - makes it absolute if it starts with a drive letter\n * This should only be done for OS paths from Windows (or user provided paths potentially from Windows).\n * Using it on a Linux or MaxOS path might change it.\n */\nfunction toPosixPath(osPath) {\n if (osPath.indexOf('/') === -1) {\n osPath = toSlashes(osPath);\n }\n if (/^[a-zA-Z]:(\\/|$)/.test(osPath)) { // starts with a drive letter\n osPath = '/' + osPath;\n }\n return osPath;\n}\n/**\n * Computes the _root_ this path, like `getRoot('c:\\files') === c:\\`,\n * `getRoot('files:///files/path') === files:///`,\n * or `getRoot('\\\\server\\shares\\path') === \\\\server\\shares\\`\n */\nfunction getRoot(path, sep = _path_js__WEBPACK_IMPORTED_MODULE_0__.posix.sep) {\n if (!path) {\n return '';\n }\n const len = path.length;\n const firstLetter = path.charCodeAt(0);\n if (isPathSeparator(firstLetter)) {\n if (isPathSeparator(path.charCodeAt(1))) {\n // UNC candidate \\\\localhost\\shares\\ddd\n // ^^^^^^^^^^^^^^^^^^^\n if (!isPathSeparator(path.charCodeAt(2))) {\n let pos = 3;\n const start = pos;\n for (; pos < len; pos++) {\n if (isPathSeparator(path.charCodeAt(pos))) {\n break;\n }\n }\n if (start !== pos && !isPathSeparator(path.charCodeAt(pos + 1))) {\n pos += 1;\n for (; pos < len; pos++) {\n if (isPathSeparator(path.charCodeAt(pos))) {\n return path.slice(0, pos + 1) // consume this separator\n .replace(/[\\\\/]/g, sep);\n }\n }\n }\n }\n }\n // /user/far\n // ^\n return sep;\n }\n else if (isWindowsDriveLetter(firstLetter)) {\n // check for windows drive letter c:\\ or c:\n if (path.charCodeAt(1) === 58 /* CharCode.Colon */) {\n if (isPathSeparator(path.charCodeAt(2))) {\n // C:\\fff\n // ^^^\n return path.slice(0, 2) + sep;\n }\n else {\n // C:\n // ^^\n return path.slice(0, 2);\n }\n }\n }\n // check for URI\n // scheme://authority/path\n // ^^^^^^^^^^^^^^^^^^^\n let pos = path.indexOf('://');\n if (pos !== -1) {\n pos += 3; // 3 -> \"://\".length\n for (; pos < len; pos++) {\n if (isPathSeparator(path.charCodeAt(pos))) {\n return path.slice(0, pos + 1); // consume this separator\n }\n }\n }\n return '';\n}\n/**\n * @deprecated please use `IUriIdentityService.extUri.isEqualOrParent` instead. If\n * you are in a context without services, consider to pass down the `extUri` from the\n * outside, or use `extUriBiasedIgnorePathCase` if you know what you are doing.\n */\nfunction isEqualOrParent(base, parentCandidate, ignoreCase, separator = _path_js__WEBPACK_IMPORTED_MODULE_0__.sep) {\n if (base === parentCandidate) {\n return true;\n }\n if (!base || !parentCandidate) {\n return false;\n }\n if (parentCandidate.length > base.length) {\n return false;\n }\n if (ignoreCase) {\n const beginsWith = (0,_strings_js__WEBPACK_IMPORTED_MODULE_2__.startsWithIgnoreCase)(base, parentCandidate);\n if (!beginsWith) {\n return false;\n }\n if (parentCandidate.length === base.length) {\n return true; // same path, different casing\n }\n let sepOffset = parentCandidate.length;\n if (parentCandidate.charAt(parentCandidate.length - 1) === separator) {\n sepOffset--; // adjust the expected sep offset in case our candidate already ends in separator character\n }\n return base.charAt(sepOffset) === separator;\n }\n if (parentCandidate.charAt(parentCandidate.length - 1) !== separator) {\n parentCandidate += separator;\n }\n return base.indexOf(parentCandidate) === 0;\n}\nfunction isWindowsDriveLetter(char0) {\n return char0 >= 65 /* CharCode.A */ && char0 <= 90 /* CharCode.Z */ || char0 >= 97 /* CharCode.a */ && char0 <= 122 /* CharCode.z */;\n}\nfunction hasDriveLetter(path, isWindowsOS = _platform_js__WEBPACK_IMPORTED_MODULE_1__.isWindows) {\n if (isWindowsOS) {\n return isWindowsDriveLetter(path.charCodeAt(0)) && path.charCodeAt(1) === 58 /* CharCode.Colon */;\n }\n return false;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/extpath.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/filters.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/filters.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FuzzyScore: () => (/* binding */ FuzzyScore),\n/* harmony export */ FuzzyScoreOptions: () => (/* binding */ FuzzyScoreOptions),\n/* harmony export */ anyScore: () => (/* binding */ anyScore),\n/* harmony export */ createMatches: () => (/* binding */ createMatches),\n/* harmony export */ fuzzyScore: () => (/* binding */ fuzzyScore),\n/* harmony export */ fuzzyScoreGracefulAggressive: () => (/* binding */ fuzzyScoreGracefulAggressive),\n/* harmony export */ isPatternInWord: () => (/* binding */ isPatternInWord),\n/* harmony export */ isUpper: () => (/* binding */ isUpper),\n/* harmony export */ matchesCamelCase: () => (/* binding */ matchesCamelCase),\n/* harmony export */ matchesContiguousSubString: () => (/* binding */ matchesContiguousSubString),\n/* harmony export */ matchesFuzzy: () => (/* binding */ matchesFuzzy),\n/* harmony export */ matchesPrefix: () => (/* binding */ matchesPrefix),\n/* harmony export */ matchesStrictPrefix: () => (/* binding */ matchesStrictPrefix),\n/* harmony export */ matchesSubString: () => (/* binding */ matchesSubString),\n/* harmony export */ matchesWords: () => (/* binding */ matchesWords),\n/* harmony export */ or: () => (/* binding */ or)\n/* harmony export */ });\n/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map.js */ \"./node_modules/monaco-editor/esm/vs/base/common/map.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n// Combined filters\n/**\n * @returns A filter which combines the provided set\n * of filters with an or. The *first* filters that\n * matches defined the return value of the returned\n * filter.\n */\nfunction or(...filter) {\n return function (word, wordToMatchAgainst) {\n for (let i = 0, len = filter.length; i < len; i++) {\n const match = filter[i](word, wordToMatchAgainst);\n if (match) {\n return match;\n }\n }\n return null;\n };\n}\n// Prefix\nconst matchesStrictPrefix = _matchesPrefix.bind(undefined, false);\nconst matchesPrefix = _matchesPrefix.bind(undefined, true);\nfunction _matchesPrefix(ignoreCase, word, wordToMatchAgainst) {\n if (!wordToMatchAgainst || wordToMatchAgainst.length < word.length) {\n return null;\n }\n let matches;\n if (ignoreCase) {\n matches = _strings_js__WEBPACK_IMPORTED_MODULE_1__.startsWithIgnoreCase(wordToMatchAgainst, word);\n }\n else {\n matches = wordToMatchAgainst.indexOf(word) === 0;\n }\n if (!matches) {\n return null;\n }\n return word.length > 0 ? [{ start: 0, end: word.length }] : [];\n}\n// Contiguous Substring\nfunction matchesContiguousSubString(word, wordToMatchAgainst) {\n const index = wordToMatchAgainst.toLowerCase().indexOf(word.toLowerCase());\n if (index === -1) {\n return null;\n }\n return [{ start: index, end: index + word.length }];\n}\n// Substring\nfunction matchesSubString(word, wordToMatchAgainst) {\n return _matchesSubString(word.toLowerCase(), wordToMatchAgainst.toLowerCase(), 0, 0);\n}\nfunction _matchesSubString(word, wordToMatchAgainst, i, j) {\n if (i === word.length) {\n return [];\n }\n else if (j === wordToMatchAgainst.length) {\n return null;\n }\n else {\n if (word[i] === wordToMatchAgainst[j]) {\n let result = null;\n if (result = _matchesSubString(word, wordToMatchAgainst, i + 1, j + 1)) {\n return join({ start: j, end: j + 1 }, result);\n }\n return null;\n }\n return _matchesSubString(word, wordToMatchAgainst, i, j + 1);\n }\n}\n// CamelCase\nfunction isLower(code) {\n return 97 /* CharCode.a */ <= code && code <= 122 /* CharCode.z */;\n}\nfunction isUpper(code) {\n return 65 /* CharCode.A */ <= code && code <= 90 /* CharCode.Z */;\n}\nfunction isNumber(code) {\n return 48 /* CharCode.Digit0 */ <= code && code <= 57 /* CharCode.Digit9 */;\n}\nfunction isWhitespace(code) {\n return (code === 32 /* CharCode.Space */\n || code === 9 /* CharCode.Tab */\n || code === 10 /* CharCode.LineFeed */\n || code === 13 /* CharCode.CarriageReturn */);\n}\nconst wordSeparators = new Set();\n// These are chosen as natural word separators based on writen text.\n// It is a subset of the word separators used by the monaco editor.\n'()[]{}<>`\\'\"-/;:,.?!'\n .split('')\n .forEach(s => wordSeparators.add(s.charCodeAt(0)));\nfunction isWordSeparator(code) {\n return isWhitespace(code) || wordSeparators.has(code);\n}\nfunction charactersMatch(codeA, codeB) {\n return (codeA === codeB) || (isWordSeparator(codeA) && isWordSeparator(codeB));\n}\nfunction isAlphanumeric(code) {\n return isLower(code) || isUpper(code) || isNumber(code);\n}\nfunction join(head, tail) {\n if (tail.length === 0) {\n tail = [head];\n }\n else if (head.end === tail[0].start) {\n tail[0].start = head.start;\n }\n else {\n tail.unshift(head);\n }\n return tail;\n}\nfunction nextAnchor(camelCaseWord, start) {\n for (let i = start; i < camelCaseWord.length; i++) {\n const c = camelCaseWord.charCodeAt(i);\n if (isUpper(c) || isNumber(c) || (i > 0 && !isAlphanumeric(camelCaseWord.charCodeAt(i - 1)))) {\n return i;\n }\n }\n return camelCaseWord.length;\n}\nfunction _matchesCamelCase(word, camelCaseWord, i, j) {\n if (i === word.length) {\n return [];\n }\n else if (j === camelCaseWord.length) {\n return null;\n }\n else if (word[i] !== camelCaseWord[j].toLowerCase()) {\n return null;\n }\n else {\n let result = null;\n let nextUpperIndex = j + 1;\n result = _matchesCamelCase(word, camelCaseWord, i + 1, j + 1);\n while (!result && (nextUpperIndex = nextAnchor(camelCaseWord, nextUpperIndex)) < camelCaseWord.length) {\n result = _matchesCamelCase(word, camelCaseWord, i + 1, nextUpperIndex);\n nextUpperIndex++;\n }\n return result === null ? null : join({ start: j, end: j + 1 }, result);\n }\n}\n// Heuristic to avoid computing camel case matcher for words that don't\n// look like camelCaseWords.\nfunction analyzeCamelCaseWord(word) {\n let upper = 0, lower = 0, alpha = 0, numeric = 0, code = 0;\n for (let i = 0; i < word.length; i++) {\n code = word.charCodeAt(i);\n if (isUpper(code)) {\n upper++;\n }\n if (isLower(code)) {\n lower++;\n }\n if (isAlphanumeric(code)) {\n alpha++;\n }\n if (isNumber(code)) {\n numeric++;\n }\n }\n const upperPercent = upper / word.length;\n const lowerPercent = lower / word.length;\n const alphaPercent = alpha / word.length;\n const numericPercent = numeric / word.length;\n return { upperPercent, lowerPercent, alphaPercent, numericPercent };\n}\nfunction isUpperCaseWord(analysis) {\n const { upperPercent, lowerPercent } = analysis;\n return lowerPercent === 0 && upperPercent > 0.6;\n}\nfunction isCamelCaseWord(analysis) {\n const { upperPercent, lowerPercent, alphaPercent, numericPercent } = analysis;\n return lowerPercent > 0.2 && upperPercent < 0.8 && alphaPercent > 0.6 && numericPercent < 0.2;\n}\n// Heuristic to avoid computing camel case matcher for words that don't\n// look like camel case patterns.\nfunction isCamelCasePattern(word) {\n let upper = 0, lower = 0, code = 0, whitespace = 0;\n for (let i = 0; i < word.length; i++) {\n code = word.charCodeAt(i);\n if (isUpper(code)) {\n upper++;\n }\n if (isLower(code)) {\n lower++;\n }\n if (isWhitespace(code)) {\n whitespace++;\n }\n }\n if ((upper === 0 || lower === 0) && whitespace === 0) {\n return word.length <= 30;\n }\n else {\n return upper <= 5;\n }\n}\nfunction matchesCamelCase(word, camelCaseWord) {\n if (!camelCaseWord) {\n return null;\n }\n camelCaseWord = camelCaseWord.trim();\n if (camelCaseWord.length === 0) {\n return null;\n }\n if (!isCamelCasePattern(word)) {\n return null;\n }\n if (camelCaseWord.length > 60) {\n return null;\n }\n const analysis = analyzeCamelCaseWord(camelCaseWord);\n if (!isCamelCaseWord(analysis)) {\n if (!isUpperCaseWord(analysis)) {\n return null;\n }\n camelCaseWord = camelCaseWord.toLowerCase();\n }\n let result = null;\n let i = 0;\n word = word.toLowerCase();\n while (i < camelCaseWord.length && (result = _matchesCamelCase(word, camelCaseWord, 0, i)) === null) {\n i = nextAnchor(camelCaseWord, i + 1);\n }\n return result;\n}\n// Matches beginning of words supporting non-ASCII languages\n// If `contiguous` is true then matches word with beginnings of the words in the target. E.g. \"pul\" will match \"Git: Pull\"\n// Otherwise also matches sub string of the word with beginnings of the words in the target. E.g. \"gp\" or \"g p\" will match \"Git: Pull\"\n// Useful in cases where the target is words (e.g. command labels)\nfunction matchesWords(word, target, contiguous = false) {\n if (!target || target.length === 0) {\n return null;\n }\n let result = null;\n let i = 0;\n word = word.toLowerCase();\n target = target.toLowerCase();\n while (i < target.length && (result = _matchesWords(word, target, 0, i, contiguous)) === null) {\n i = nextWord(target, i + 1);\n }\n return result;\n}\nfunction _matchesWords(word, target, i, j, contiguous) {\n if (i === word.length) {\n return [];\n }\n else if (j === target.length) {\n return null;\n }\n else if (!charactersMatch(word.charCodeAt(i), target.charCodeAt(j))) {\n return null;\n }\n else {\n let result = null;\n let nextWordIndex = j + 1;\n result = _matchesWords(word, target, i + 1, j + 1, contiguous);\n if (!contiguous) {\n while (!result && (nextWordIndex = nextWord(target, nextWordIndex)) < target.length) {\n result = _matchesWords(word, target, i + 1, nextWordIndex, contiguous);\n nextWordIndex++;\n }\n }\n if (!result) {\n return null;\n }\n // If the characters don't exactly match, then they must be word separators (see charactersMatch(...)).\n // We don't want to include this in the matches but we don't want to throw the target out all together so we return `result`.\n if (word.charCodeAt(i) !== target.charCodeAt(j)) {\n return result;\n }\n return join({ start: j, end: j + 1 }, result);\n }\n}\nfunction nextWord(word, start) {\n for (let i = start; i < word.length; i++) {\n if (isWordSeparator(word.charCodeAt(i)) ||\n (i > 0 && isWordSeparator(word.charCodeAt(i - 1)))) {\n return i;\n }\n }\n return word.length;\n}\n// Fuzzy\nconst fuzzyContiguousFilter = or(matchesPrefix, matchesCamelCase, matchesContiguousSubString);\nconst fuzzySeparateFilter = or(matchesPrefix, matchesCamelCase, matchesSubString);\nconst fuzzyRegExpCache = new _map_js__WEBPACK_IMPORTED_MODULE_0__.LRUCache(10000); // bounded to 10000 elements\nfunction matchesFuzzy(word, wordToMatchAgainst, enableSeparateSubstringMatching = false) {\n if (typeof word !== 'string' || typeof wordToMatchAgainst !== 'string') {\n return null; // return early for invalid input\n }\n // Form RegExp for wildcard matches\n let regexp = fuzzyRegExpCache.get(word);\n if (!regexp) {\n regexp = new RegExp(_strings_js__WEBPACK_IMPORTED_MODULE_1__.convertSimple2RegExpPattern(word), 'i');\n fuzzyRegExpCache.set(word, regexp);\n }\n // RegExp Filter\n const match = regexp.exec(wordToMatchAgainst);\n if (match) {\n return [{ start: match.index, end: match.index + match[0].length }];\n }\n // Default Filter\n return enableSeparateSubstringMatching ? fuzzySeparateFilter(word, wordToMatchAgainst) : fuzzyContiguousFilter(word, wordToMatchAgainst);\n}\nfunction anyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos) {\n const max = Math.min(13, pattern.length);\n for (; patternPos < max; patternPos++) {\n const result = fuzzyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos, { firstMatchCanBeWeak: true, boostFullMatch: true });\n if (result) {\n return result;\n }\n }\n return [0, wordPos];\n}\n//#region --- fuzzyScore ---\nfunction createMatches(score) {\n if (typeof score === 'undefined') {\n return [];\n }\n const res = [];\n const wordPos = score[1];\n for (let i = score.length - 1; i > 1; i--) {\n const pos = score[i] + wordPos;\n const last = res[res.length - 1];\n if (last && last.end === pos) {\n last.end = pos + 1;\n }\n else {\n res.push({ start: pos, end: pos + 1 });\n }\n }\n return res;\n}\nconst _maxLen = 128;\nfunction initTable() {\n const table = [];\n const row = [];\n for (let i = 0; i <= _maxLen; i++) {\n row[i] = 0;\n }\n for (let i = 0; i <= _maxLen; i++) {\n table.push(row.slice(0));\n }\n return table;\n}\nfunction initArr(maxLen) {\n const row = [];\n for (let i = 0; i <= maxLen; i++) {\n row[i] = 0;\n }\n return row;\n}\nconst _minWordMatchPos = initArr(2 * _maxLen); // min word position for a certain pattern position\nconst _maxWordMatchPos = initArr(2 * _maxLen); // max word position for a certain pattern position\nconst _diag = initTable(); // the length of a contiguous diagonal match\nconst _table = initTable();\nconst _arrows = initTable();\nconst _debug = false;\nfunction printTable(table, pattern, patternLen, word, wordLen) {\n function pad(s, n, pad = ' ') {\n while (s.length < n) {\n s = pad + s;\n }\n return s;\n }\n let ret = ` | |${word.split('').map(c => pad(c, 3)).join('|')}\\n`;\n for (let i = 0; i <= patternLen; i++) {\n if (i === 0) {\n ret += ' |';\n }\n else {\n ret += `${pattern[i - 1]}|`;\n }\n ret += table[i].slice(0, wordLen + 1).map(n => pad(n.toString(), 3)).join('|') + '\\n';\n }\n return ret;\n}\nfunction printTables(pattern, patternStart, word, wordStart) {\n pattern = pattern.substr(patternStart);\n word = word.substr(wordStart);\n console.log(printTable(_table, pattern, pattern.length, word, word.length));\n console.log(printTable(_arrows, pattern, pattern.length, word, word.length));\n console.log(printTable(_diag, pattern, pattern.length, word, word.length));\n}\nfunction isSeparatorAtPos(value, index) {\n if (index < 0 || index >= value.length) {\n return false;\n }\n const code = value.codePointAt(index);\n switch (code) {\n case 95 /* CharCode.Underline */:\n case 45 /* CharCode.Dash */:\n case 46 /* CharCode.Period */:\n case 32 /* CharCode.Space */:\n case 47 /* CharCode.Slash */:\n case 92 /* CharCode.Backslash */:\n case 39 /* CharCode.SingleQuote */:\n case 34 /* CharCode.DoubleQuote */:\n case 58 /* CharCode.Colon */:\n case 36 /* CharCode.DollarSign */:\n case 60 /* CharCode.LessThan */:\n case 62 /* CharCode.GreaterThan */:\n case 40 /* CharCode.OpenParen */:\n case 41 /* CharCode.CloseParen */:\n case 91 /* CharCode.OpenSquareBracket */:\n case 93 /* CharCode.CloseSquareBracket */:\n case 123 /* CharCode.OpenCurlyBrace */:\n case 125 /* CharCode.CloseCurlyBrace */:\n return true;\n case undefined:\n return false;\n default:\n if (_strings_js__WEBPACK_IMPORTED_MODULE_1__.isEmojiImprecise(code)) {\n return true;\n }\n return false;\n }\n}\nfunction isWhitespaceAtPos(value, index) {\n if (index < 0 || index >= value.length) {\n return false;\n }\n const code = value.charCodeAt(index);\n switch (code) {\n case 32 /* CharCode.Space */:\n case 9 /* CharCode.Tab */:\n return true;\n default:\n return false;\n }\n}\nfunction isUpperCaseAtPos(pos, word, wordLow) {\n return word[pos] !== wordLow[pos];\n}\nfunction isPatternInWord(patternLow, patternPos, patternLen, wordLow, wordPos, wordLen, fillMinWordPosArr = false) {\n while (patternPos < patternLen && wordPos < wordLen) {\n if (patternLow[patternPos] === wordLow[wordPos]) {\n if (fillMinWordPosArr) {\n // Remember the min word position for each pattern position\n _minWordMatchPos[patternPos] = wordPos;\n }\n patternPos += 1;\n }\n wordPos += 1;\n }\n return patternPos === patternLen; // pattern must be exhausted\n}\nvar FuzzyScore;\n(function (FuzzyScore) {\n /**\n * No matches and value `-100`\n */\n FuzzyScore.Default = ([-100, 0]);\n function isDefault(score) {\n return !score || (score.length === 2 && score[0] === -100 && score[1] === 0);\n }\n FuzzyScore.isDefault = isDefault;\n})(FuzzyScore || (FuzzyScore = {}));\nclass FuzzyScoreOptions {\n constructor(firstMatchCanBeWeak, boostFullMatch) {\n this.firstMatchCanBeWeak = firstMatchCanBeWeak;\n this.boostFullMatch = boostFullMatch;\n }\n}\nFuzzyScoreOptions.default = { boostFullMatch: true, firstMatchCanBeWeak: false };\nfunction fuzzyScore(pattern, patternLow, patternStart, word, wordLow, wordStart, options = FuzzyScoreOptions.default) {\n const patternLen = pattern.length > _maxLen ? _maxLen : pattern.length;\n const wordLen = word.length > _maxLen ? _maxLen : word.length;\n if (patternStart >= patternLen || wordStart >= wordLen || (patternLen - patternStart) > (wordLen - wordStart)) {\n return undefined;\n }\n // Run a simple check if the characters of pattern occur\n // (in order) at all in word. If that isn't the case we\n // stop because no match will be possible\n if (!isPatternInWord(patternLow, patternStart, patternLen, wordLow, wordStart, wordLen, true)) {\n return undefined;\n }\n // Find the max matching word position for each pattern position\n // NOTE: the min matching word position was filled in above, in the `isPatternInWord` call\n _fillInMaxWordMatchPos(patternLen, wordLen, patternStart, wordStart, patternLow, wordLow);\n let row = 1;\n let column = 1;\n let patternPos = patternStart;\n let wordPos = wordStart;\n const hasStrongFirstMatch = [false];\n // There will be a match, fill in tables\n for (row = 1, patternPos = patternStart; patternPos < patternLen; row++, patternPos++) {\n // Reduce search space to possible matching word positions and to possible access from next row\n const minWordMatchPos = _minWordMatchPos[patternPos];\n const maxWordMatchPos = _maxWordMatchPos[patternPos];\n const nextMaxWordMatchPos = (patternPos + 1 < patternLen ? _maxWordMatchPos[patternPos + 1] : wordLen);\n for (column = minWordMatchPos - wordStart + 1, wordPos = minWordMatchPos; wordPos < nextMaxWordMatchPos; column++, wordPos++) {\n let score = Number.MIN_SAFE_INTEGER;\n let canComeDiag = false;\n if (wordPos <= maxWordMatchPos) {\n score = _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos, wordLen, wordStart, _diag[row - 1][column - 1] === 0, hasStrongFirstMatch);\n }\n let diagScore = 0;\n if (score !== Number.MAX_SAFE_INTEGER) {\n canComeDiag = true;\n diagScore = score + _table[row - 1][column - 1];\n }\n const canComeLeft = wordPos > minWordMatchPos;\n const leftScore = canComeLeft ? _table[row][column - 1] + (_diag[row][column - 1] > 0 ? -5 : 0) : 0; // penalty for a gap start\n const canComeLeftLeft = wordPos > minWordMatchPos + 1 && _diag[row][column - 1] > 0;\n const leftLeftScore = canComeLeftLeft ? _table[row][column - 2] + (_diag[row][column - 2] > 0 ? -5 : 0) : 0; // penalty for a gap start\n if (canComeLeftLeft && (!canComeLeft || leftLeftScore >= leftScore) && (!canComeDiag || leftLeftScore >= diagScore)) {\n // always prefer choosing left left to jump over a diagonal because that means a match is earlier in the word\n _table[row][column] = leftLeftScore;\n _arrows[row][column] = 3 /* Arrow.LeftLeft */;\n _diag[row][column] = 0;\n }\n else if (canComeLeft && (!canComeDiag || leftScore >= diagScore)) {\n // always prefer choosing left since that means a match is earlier in the word\n _table[row][column] = leftScore;\n _arrows[row][column] = 2 /* Arrow.Left */;\n _diag[row][column] = 0;\n }\n else if (canComeDiag) {\n _table[row][column] = diagScore;\n _arrows[row][column] = 1 /* Arrow.Diag */;\n _diag[row][column] = _diag[row - 1][column - 1] + 1;\n }\n else {\n throw new Error(`not possible`);\n }\n }\n }\n if (_debug) {\n printTables(pattern, patternStart, word, wordStart);\n }\n if (!hasStrongFirstMatch[0] && !options.firstMatchCanBeWeak) {\n return undefined;\n }\n row--;\n column--;\n const result = [_table[row][column], wordStart];\n let backwardsDiagLength = 0;\n let maxMatchColumn = 0;\n while (row >= 1) {\n // Find the column where we go diagonally up\n let diagColumn = column;\n do {\n const arrow = _arrows[row][diagColumn];\n if (arrow === 3 /* Arrow.LeftLeft */) {\n diagColumn = diagColumn - 2;\n }\n else if (arrow === 2 /* Arrow.Left */) {\n diagColumn = diagColumn - 1;\n }\n else {\n // found the diagonal\n break;\n }\n } while (diagColumn >= 1);\n // Overturn the \"forwards\" decision if keeping the \"backwards\" diagonal would give a better match\n if (backwardsDiagLength > 1 // only if we would have a contiguous match of 3 characters\n && patternLow[patternStart + row - 1] === wordLow[wordStart + column - 1] // only if we can do a contiguous match diagonally\n && !isUpperCaseAtPos(diagColumn + wordStart - 1, word, wordLow) // only if the forwards chose diagonal is not an uppercase\n && backwardsDiagLength + 1 > _diag[row][diagColumn] // only if our contiguous match would be longer than the \"forwards\" contiguous match\n ) {\n diagColumn = column;\n }\n if (diagColumn === column) {\n // this is a contiguous match\n backwardsDiagLength++;\n }\n else {\n backwardsDiagLength = 1;\n }\n if (!maxMatchColumn) {\n // remember the last matched column\n maxMatchColumn = diagColumn;\n }\n row--;\n column = diagColumn - 1;\n result.push(column);\n }\n if (wordLen === patternLen && options.boostFullMatch) {\n // the word matches the pattern with all characters!\n // giving the score a total match boost (to come up ahead other words)\n result[0] += 2;\n }\n // Add 1 penalty for each skipped character in the word\n const skippedCharsCount = maxMatchColumn - patternLen;\n result[0] -= skippedCharsCount;\n return result;\n}\nfunction _fillInMaxWordMatchPos(patternLen, wordLen, patternStart, wordStart, patternLow, wordLow) {\n let patternPos = patternLen - 1;\n let wordPos = wordLen - 1;\n while (patternPos >= patternStart && wordPos >= wordStart) {\n if (patternLow[patternPos] === wordLow[wordPos]) {\n _maxWordMatchPos[patternPos] = wordPos;\n patternPos--;\n }\n wordPos--;\n }\n}\nfunction _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos, wordLen, wordStart, newMatchStart, outFirstMatchStrong) {\n if (patternLow[patternPos] !== wordLow[wordPos]) {\n return Number.MIN_SAFE_INTEGER;\n }\n let score = 1;\n let isGapLocation = false;\n if (wordPos === (patternPos - patternStart)) {\n // common prefix: `foobar <-> foobaz`\n // ^^^^^\n score = pattern[patternPos] === word[wordPos] ? 7 : 5;\n }\n else if (isUpperCaseAtPos(wordPos, word, wordLow) && (wordPos === 0 || !isUpperCaseAtPos(wordPos - 1, word, wordLow))) {\n // hitting upper-case: `foo <-> forOthers`\n // ^^ ^\n score = pattern[patternPos] === word[wordPos] ? 7 : 5;\n isGapLocation = true;\n }\n else if (isSeparatorAtPos(wordLow, wordPos) && (wordPos === 0 || !isSeparatorAtPos(wordLow, wordPos - 1))) {\n // hitting a separator: `. <-> foo.bar`\n // ^\n score = 5;\n }\n else if (isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1)) {\n // post separator: `foo <-> bar_foo`\n // ^^^\n score = 5;\n isGapLocation = true;\n }\n if (score > 1 && patternPos === patternStart) {\n outFirstMatchStrong[0] = true;\n }\n if (!isGapLocation) {\n isGapLocation = isUpperCaseAtPos(wordPos, word, wordLow) || isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1);\n }\n //\n if (patternPos === patternStart) { // first character in pattern\n if (wordPos > wordStart) {\n // the first pattern character would match a word character that is not at the word start\n // so introduce a penalty to account for the gap preceding this match\n score -= isGapLocation ? 3 : 5;\n }\n }\n else {\n if (newMatchStart) {\n // this would be the beginning of a new match (i.e. there would be a gap before this location)\n score += isGapLocation ? 2 : 0;\n }\n else {\n // this is part of a contiguous match, so give it a slight bonus, but do so only if it would not be a preferred gap location\n score += isGapLocation ? 0 : 1;\n }\n }\n if (wordPos + 1 === wordLen) {\n // we always penalize gaps, but this gives unfair advantages to a match that would match the last character in the word\n // so pretend there is a gap after the last character in the word to normalize things\n score -= isGapLocation ? 3 : 5;\n }\n return score;\n}\n//#endregion\n//#region --- graceful ---\nfunction fuzzyScoreGracefulAggressive(pattern, lowPattern, patternPos, word, lowWord, wordPos, options) {\n return fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, true, options);\n}\nfunction fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, aggressive, options) {\n let top = fuzzyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos, options);\n if (top && !aggressive) {\n // when using the original pattern yield a result we`\n // return it unless we are aggressive and try to find\n // a better alignment, e.g. `cno` -> `^co^ns^ole` or `^c^o^nsole`.\n return top;\n }\n if (pattern.length >= 3) {\n // When the pattern is long enough then try a few (max 7)\n // permutations of the pattern to find a better match. The\n // permutations only swap neighbouring characters, e.g\n // `cnoso` becomes `conso`, `cnsoo`, `cnoos`.\n const tries = Math.min(7, pattern.length - 1);\n for (let movingPatternPos = patternPos + 1; movingPatternPos < tries; movingPatternPos++) {\n const newPattern = nextTypoPermutation(pattern, movingPatternPos);\n if (newPattern) {\n const candidate = fuzzyScore(newPattern, newPattern.toLowerCase(), patternPos, word, lowWord, wordPos, options);\n if (candidate) {\n candidate[0] -= 3; // permutation penalty\n if (!top || candidate[0] > top[0]) {\n top = candidate;\n }\n }\n }\n }\n }\n return top;\n}\nfunction nextTypoPermutation(pattern, patternPos) {\n if (patternPos + 1 >= pattern.length) {\n return undefined;\n }\n const swap1 = pattern[patternPos];\n const swap2 = pattern[patternPos + 1];\n if (swap1 === swap2) {\n return undefined;\n }\n return pattern.slice(0, patternPos)\n + swap2\n + swap1\n + pattern.slice(patternPos + 2);\n}\n//#endregion\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/filters.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/functional.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/functional.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ once: () => (/* binding */ once)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction once(fn) {\n const _this = this;\n let didCall = false;\n let result;\n return function () {\n if (didCall) {\n return result;\n }\n didCall = true;\n result = fn.apply(_this, arguments);\n return result;\n };\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/functional.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/fuzzyScorer.js": +/*!**********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/fuzzyScorer.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ pieceToQuery: () => (/* binding */ pieceToQuery),\n/* harmony export */ prepareQuery: () => (/* binding */ prepareQuery),\n/* harmony export */ scoreFuzzy2: () => (/* binding */ scoreFuzzy2)\n/* harmony export */ });\n/* harmony import */ var _filters_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filters.js */ \"./node_modules/monaco-editor/esm/vs/base/common/filters.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ \"./node_modules/monaco-editor/esm/vs/base/common/path.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n\n\n\n\nconst NO_SCORE2 = [undefined, []];\nfunction scoreFuzzy2(target, query, patternStart = 0, wordStart = 0) {\n // Score: multiple inputs\n const preparedQuery = query;\n if (preparedQuery.values && preparedQuery.values.length > 1) {\n return doScoreFuzzy2Multiple(target, preparedQuery.values, patternStart, wordStart);\n }\n // Score: single input\n return doScoreFuzzy2Single(target, query, patternStart, wordStart);\n}\nfunction doScoreFuzzy2Multiple(target, query, patternStart, wordStart) {\n let totalScore = 0;\n const totalMatches = [];\n for (const queryPiece of query) {\n const [score, matches] = doScoreFuzzy2Single(target, queryPiece, patternStart, wordStart);\n if (typeof score !== 'number') {\n // if a single query value does not match, return with\n // no score entirely, we require all queries to match\n return NO_SCORE2;\n }\n totalScore += score;\n totalMatches.push(...matches);\n }\n // if we have a score, ensure that the positions are\n // sorted in ascending order and distinct\n return [totalScore, normalizeMatches(totalMatches)];\n}\nfunction doScoreFuzzy2Single(target, query, patternStart, wordStart) {\n const score = (0,_filters_js__WEBPACK_IMPORTED_MODULE_0__.fuzzyScore)(query.original, query.originalLowercase, patternStart, target, target.toLowerCase(), wordStart, { firstMatchCanBeWeak: true, boostFullMatch: true });\n if (!score) {\n return NO_SCORE2;\n }\n return [score[0], (0,_filters_js__WEBPACK_IMPORTED_MODULE_0__.createMatches)(score)];\n}\nconst NO_ITEM_SCORE = Object.freeze({ score: 0 });\nfunction normalizeMatches(matches) {\n // sort matches by start to be able to normalize\n const sortedMatches = matches.sort((matchA, matchB) => {\n return matchA.start - matchB.start;\n });\n // merge matches that overlap\n const normalizedMatches = [];\n let currentMatch = undefined;\n for (const match of sortedMatches) {\n // if we have no current match or the matches\n // do not overlap, we take it as is and remember\n // it for future merging\n if (!currentMatch || !matchOverlaps(currentMatch, match)) {\n currentMatch = match;\n normalizedMatches.push(match);\n }\n // otherwise we merge the matches\n else {\n currentMatch.start = Math.min(currentMatch.start, match.start);\n currentMatch.end = Math.max(currentMatch.end, match.end);\n }\n }\n return normalizedMatches;\n}\nfunction matchOverlaps(matchA, matchB) {\n if (matchA.end < matchB.start) {\n return false; // A ends before B starts\n }\n if (matchB.end < matchA.start) {\n return false; // B ends before A starts\n }\n return true;\n}\n/*\n * If a query is wrapped in quotes, the user does not want to\n * use fuzzy search for this query.\n */\nfunction queryExpectsExactMatch(query) {\n return query.startsWith('\"') && query.endsWith('\"');\n}\n/**\n * Helper function to prepare a search value for scoring by removing unwanted characters\n * and allowing to score on multiple pieces separated by whitespace character.\n */\nconst MULTIPLE_QUERY_VALUES_SEPARATOR = ' ';\nfunction prepareQuery(original) {\n if (typeof original !== 'string') {\n original = '';\n }\n const originalLowercase = original.toLowerCase();\n const { pathNormalized, normalized, normalizedLowercase } = normalizeQuery(original);\n const containsPathSeparator = pathNormalized.indexOf(_path_js__WEBPACK_IMPORTED_MODULE_1__.sep) >= 0;\n const expectExactMatch = queryExpectsExactMatch(original);\n let values = undefined;\n const originalSplit = original.split(MULTIPLE_QUERY_VALUES_SEPARATOR);\n if (originalSplit.length > 1) {\n for (const originalPiece of originalSplit) {\n const expectExactMatchPiece = queryExpectsExactMatch(originalPiece);\n const { pathNormalized: pathNormalizedPiece, normalized: normalizedPiece, normalizedLowercase: normalizedLowercasePiece } = normalizeQuery(originalPiece);\n if (normalizedPiece) {\n if (!values) {\n values = [];\n }\n values.push({\n original: originalPiece,\n originalLowercase: originalPiece.toLowerCase(),\n pathNormalized: pathNormalizedPiece,\n normalized: normalizedPiece,\n normalizedLowercase: normalizedLowercasePiece,\n expectContiguousMatch: expectExactMatchPiece\n });\n }\n }\n }\n return { original, originalLowercase, pathNormalized, normalized, normalizedLowercase, values, containsPathSeparator, expectContiguousMatch: expectExactMatch };\n}\nfunction normalizeQuery(original) {\n let pathNormalized;\n if (_platform_js__WEBPACK_IMPORTED_MODULE_2__.isWindows) {\n pathNormalized = original.replace(/\\//g, _path_js__WEBPACK_IMPORTED_MODULE_1__.sep); // Help Windows users to search for paths when using slash\n }\n else {\n pathNormalized = original.replace(/\\\\/g, _path_js__WEBPACK_IMPORTED_MODULE_1__.sep); // Help macOS/Linux users to search for paths when using backslash\n }\n // we remove quotes here because quotes are used for exact match search\n const normalized = (0,_strings_js__WEBPACK_IMPORTED_MODULE_3__.stripWildcards)(pathNormalized).replace(/\\s|\"/g, '');\n return {\n pathNormalized,\n normalized,\n normalizedLowercase: normalized.toLowerCase()\n };\n}\nfunction pieceToQuery(arg1) {\n if (Array.isArray(arg1)) {\n return prepareQuery(arg1.map(piece => piece.original).join(MULTIPLE_QUERY_VALUES_SEPARATOR));\n }\n return prepareQuery(arg1.original);\n}\n//#endregion\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/fuzzyScorer.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/glob.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/glob.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GLOBSTAR: () => (/* binding */ GLOBSTAR),\n/* harmony export */ GLOB_SPLIT: () => (/* binding */ GLOB_SPLIT),\n/* harmony export */ isRelativePattern: () => (/* binding */ isRelativePattern),\n/* harmony export */ match: () => (/* binding */ match),\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ splitGlobAware: () => (/* binding */ splitGlobAware)\n/* harmony export */ });\n/* harmony import */ var _async_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _extpath_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./extpath.js */ \"./node_modules/monaco-editor/esm/vs/base/common/extpath.js\");\n/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ \"./node_modules/monaco-editor/esm/vs/base/common/map.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path.js */ \"./node_modules/monaco-editor/esm/vs/base/common/path.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\nconst GLOBSTAR = '**';\nconst GLOB_SPLIT = '/';\nconst PATH_REGEX = '[/\\\\\\\\]'; // any slash or backslash\nconst NO_PATH_REGEX = '[^/\\\\\\\\]'; // any non-slash and non-backslash\nconst ALL_FORWARD_SLASHES = /\\//g;\nfunction starsToRegExp(starCount, isLastPattern) {\n switch (starCount) {\n case 0:\n return '';\n case 1:\n return `${NO_PATH_REGEX}*?`; // 1 star matches any number of characters except path separator (/ and \\) - non greedy (?)\n default:\n // Matches: (Path Sep OR Path Val followed by Path Sep) 0-many times except when it's the last pattern\n // in which case also matches (Path Sep followed by Path Val)\n // Group is non capturing because we don't need to capture at all (?:...)\n // Overall we use non-greedy matching because it could be that we match too much\n return `(?:${PATH_REGEX}|${NO_PATH_REGEX}+${PATH_REGEX}${isLastPattern ? `|${PATH_REGEX}${NO_PATH_REGEX}+` : ''})*?`;\n }\n}\nfunction splitGlobAware(pattern, splitChar) {\n if (!pattern) {\n return [];\n }\n const segments = [];\n let inBraces = false;\n let inBrackets = false;\n let curVal = '';\n for (const char of pattern) {\n switch (char) {\n case splitChar:\n if (!inBraces && !inBrackets) {\n segments.push(curVal);\n curVal = '';\n continue;\n }\n break;\n case '{':\n inBraces = true;\n break;\n case '}':\n inBraces = false;\n break;\n case '[':\n inBrackets = true;\n break;\n case ']':\n inBrackets = false;\n break;\n }\n curVal += char;\n }\n // Tail\n if (curVal) {\n segments.push(curVal);\n }\n return segments;\n}\nfunction parseRegExp(pattern) {\n if (!pattern) {\n return '';\n }\n let regEx = '';\n // Split up into segments for each slash found\n const segments = splitGlobAware(pattern, GLOB_SPLIT);\n // Special case where we only have globstars\n if (segments.every(segment => segment === GLOBSTAR)) {\n regEx = '.*';\n }\n // Build regex over segments\n else {\n let previousSegmentWasGlobStar = false;\n segments.forEach((segment, index) => {\n // Treat globstar specially\n if (segment === GLOBSTAR) {\n // if we have more than one globstar after another, just ignore it\n if (previousSegmentWasGlobStar) {\n return;\n }\n regEx += starsToRegExp(2, index === segments.length - 1);\n }\n // Anything else, not globstar\n else {\n // States\n let inBraces = false;\n let braceVal = '';\n let inBrackets = false;\n let bracketVal = '';\n for (const char of segment) {\n // Support brace expansion\n if (char !== '}' && inBraces) {\n braceVal += char;\n continue;\n }\n // Support brackets\n if (inBrackets && (char !== ']' || !bracketVal) /* ] is literally only allowed as first character in brackets to match it */) {\n let res;\n // range operator\n if (char === '-') {\n res = char;\n }\n // negation operator (only valid on first index in bracket)\n else if ((char === '^' || char === '!') && !bracketVal) {\n res = '^';\n }\n // glob split matching is not allowed within character ranges\n // see http://man7.org/linux/man-pages/man7/glob.7.html\n else if (char === GLOB_SPLIT) {\n res = '';\n }\n // anything else gets escaped\n else {\n res = (0,_strings_js__WEBPACK_IMPORTED_MODULE_5__.escapeRegExpCharacters)(char);\n }\n bracketVal += res;\n continue;\n }\n switch (char) {\n case '{':\n inBraces = true;\n continue;\n case '[':\n inBrackets = true;\n continue;\n case '}': {\n const choices = splitGlobAware(braceVal, ',');\n // Converts {foo,bar} => [foo|bar]\n const braceRegExp = `(?:${choices.map(choice => parseRegExp(choice)).join('|')})`;\n regEx += braceRegExp;\n inBraces = false;\n braceVal = '';\n break;\n }\n case ']': {\n regEx += ('[' + bracketVal + ']');\n inBrackets = false;\n bracketVal = '';\n break;\n }\n case '?':\n regEx += NO_PATH_REGEX; // 1 ? matches any single character except path separator (/ and \\)\n continue;\n case '*':\n regEx += starsToRegExp(1);\n continue;\n default:\n regEx += (0,_strings_js__WEBPACK_IMPORTED_MODULE_5__.escapeRegExpCharacters)(char);\n }\n }\n // Tail: Add the slash we had split on if there is more to\n // come and the remaining pattern is not a globstar\n // For example if pattern: some/**/*.js we want the \"/\" after\n // some to be included in the RegEx to prevent a folder called\n // \"something\" to match as well.\n if (index < segments.length - 1 && // more segments to come after this\n (segments[index + 1] !== GLOBSTAR || // next segment is not **, or...\n index + 2 < segments.length // ...next segment is ** but there is more segments after that\n )) {\n regEx += PATH_REGEX;\n }\n }\n // update globstar state\n previousSegmentWasGlobStar = (segment === GLOBSTAR);\n });\n }\n return regEx;\n}\n// regexes to check for trivial glob patterns that just check for String#endsWith\nconst T1 = /^\\*\\*\\/\\*\\.[\\w\\.-]+$/; // **/*.something\nconst T2 = /^\\*\\*\\/([\\w\\.-]+)\\/?$/; // **/something\nconst T3 = /^{\\*\\*\\/\\*?[\\w\\.-]+\\/?(,\\*\\*\\/\\*?[\\w\\.-]+\\/?)*}$/; // {**/*.something,**/*.else} or {**/package.json,**/project.json}\nconst T3_2 = /^{\\*\\*\\/\\*?[\\w\\.-]+(\\/(\\*\\*)?)?(,\\*\\*\\/\\*?[\\w\\.-]+(\\/(\\*\\*)?)?)*}$/; // Like T3, with optional trailing /**\nconst T4 = /^\\*\\*((\\/[\\w\\.-]+)+)\\/?$/; // **/something/else\nconst T5 = /^([\\w\\.-]+(\\/[\\w\\.-]+)*)\\/?$/; // something/else\nconst CACHE = new _map_js__WEBPACK_IMPORTED_MODULE_2__.LRUCache(10000); // bounded to 10000 elements\nconst FALSE = function () {\n return false;\n};\nconst NULL = function () {\n return null;\n};\nfunction parsePattern(arg1, options) {\n if (!arg1) {\n return NULL;\n }\n // Handle relative patterns\n let pattern;\n if (typeof arg1 !== 'string') {\n pattern = arg1.pattern;\n }\n else {\n pattern = arg1;\n }\n // Whitespace trimming\n pattern = pattern.trim();\n // Check cache\n const patternKey = `${pattern}_${!!options.trimForExclusions}`;\n let parsedPattern = CACHE.get(patternKey);\n if (parsedPattern) {\n return wrapRelativePattern(parsedPattern, arg1);\n }\n // Check for Trivials\n let match;\n if (T1.test(pattern)) {\n parsedPattern = trivia1(pattern.substr(4), pattern); // common pattern: **/*.txt just need endsWith check\n }\n else if (match = T2.exec(trimForExclusions(pattern, options))) { // common pattern: **/some.txt just need basename check\n parsedPattern = trivia2(match[1], pattern);\n }\n else if ((options.trimForExclusions ? T3_2 : T3).test(pattern)) { // repetition of common patterns (see above) {**/*.txt,**/*.png}\n parsedPattern = trivia3(pattern, options);\n }\n else if (match = T4.exec(trimForExclusions(pattern, options))) { // common pattern: **/something/else just need endsWith check\n parsedPattern = trivia4and5(match[1].substr(1), pattern, true);\n }\n else if (match = T5.exec(trimForExclusions(pattern, options))) { // common pattern: something/else just need equals check\n parsedPattern = trivia4and5(match[1], pattern, false);\n }\n // Otherwise convert to pattern\n else {\n parsedPattern = toRegExp(pattern);\n }\n // Cache\n CACHE.set(patternKey, parsedPattern);\n return wrapRelativePattern(parsedPattern, arg1);\n}\nfunction wrapRelativePattern(parsedPattern, arg2) {\n if (typeof arg2 === 'string') {\n return parsedPattern;\n }\n const wrappedPattern = function (path, basename) {\n if (!(0,_extpath_js__WEBPACK_IMPORTED_MODULE_1__.isEqualOrParent)(path, arg2.base, !_platform_js__WEBPACK_IMPORTED_MODULE_4__.isLinux)) {\n // skip glob matching if `base` is not a parent of `path`\n return null;\n }\n // Given we have checked `base` being a parent of `path`,\n // we can now remove the `base` portion of the `path`\n // and only match on the remaining path components\n // For that we try to extract the portion of the `path`\n // that comes after the `base` portion. We have to account\n // for the fact that `base` might end in a path separator\n // (https://github.com/microsoft/vscode/issues/162498)\n return parsedPattern((0,_strings_js__WEBPACK_IMPORTED_MODULE_5__.ltrim)(path.substr(arg2.base.length), _path_js__WEBPACK_IMPORTED_MODULE_3__.sep), basename);\n };\n // Make sure to preserve associated metadata\n wrappedPattern.allBasenames = parsedPattern.allBasenames;\n wrappedPattern.allPaths = parsedPattern.allPaths;\n wrappedPattern.basenames = parsedPattern.basenames;\n wrappedPattern.patterns = parsedPattern.patterns;\n return wrappedPattern;\n}\nfunction trimForExclusions(pattern, options) {\n return options.trimForExclusions && pattern.endsWith('/**') ? pattern.substr(0, pattern.length - 2) : pattern; // dropping **, tailing / is dropped later\n}\n// common pattern: **/*.txt just need endsWith check\nfunction trivia1(base, pattern) {\n return function (path, basename) {\n return typeof path === 'string' && path.endsWith(base) ? pattern : null;\n };\n}\n// common pattern: **/some.txt just need basename check\nfunction trivia2(base, pattern) {\n const slashBase = `/${base}`;\n const backslashBase = `\\\\${base}`;\n const parsedPattern = function (path, basename) {\n if (typeof path !== 'string') {\n return null;\n }\n if (basename) {\n return basename === base ? pattern : null;\n }\n return path === base || path.endsWith(slashBase) || path.endsWith(backslashBase) ? pattern : null;\n };\n const basenames = [base];\n parsedPattern.basenames = basenames;\n parsedPattern.patterns = [pattern];\n parsedPattern.allBasenames = basenames;\n return parsedPattern;\n}\n// repetition of common patterns (see above) {**/*.txt,**/*.png}\nfunction trivia3(pattern, options) {\n const parsedPatterns = aggregateBasenameMatches(pattern.slice(1, -1)\n .split(',')\n .map(pattern => parsePattern(pattern, options))\n .filter(pattern => pattern !== NULL), pattern);\n const patternsLength = parsedPatterns.length;\n if (!patternsLength) {\n return NULL;\n }\n if (patternsLength === 1) {\n return parsedPatterns[0];\n }\n const parsedPattern = function (path, basename) {\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\n if (parsedPatterns[i](path, basename)) {\n return pattern;\n }\n }\n return null;\n };\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\n if (withBasenames) {\n parsedPattern.allBasenames = withBasenames.allBasenames;\n }\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\n if (allPaths.length) {\n parsedPattern.allPaths = allPaths;\n }\n return parsedPattern;\n}\n// common patterns: **/something/else just need endsWith check, something/else just needs and equals check\nfunction trivia4and5(targetPath, pattern, matchPathEnds) {\n const usingPosixSep = _path_js__WEBPACK_IMPORTED_MODULE_3__.sep === _path_js__WEBPACK_IMPORTED_MODULE_3__.posix.sep;\n const nativePath = usingPosixSep ? targetPath : targetPath.replace(ALL_FORWARD_SLASHES, _path_js__WEBPACK_IMPORTED_MODULE_3__.sep);\n const nativePathEnd = _path_js__WEBPACK_IMPORTED_MODULE_3__.sep + nativePath;\n const targetPathEnd = _path_js__WEBPACK_IMPORTED_MODULE_3__.posix.sep + targetPath;\n let parsedPattern;\n if (matchPathEnds) {\n parsedPattern = function (path, basename) {\n return typeof path === 'string' && ((path === nativePath || path.endsWith(nativePathEnd)) || !usingPosixSep && (path === targetPath || path.endsWith(targetPathEnd))) ? pattern : null;\n };\n }\n else {\n parsedPattern = function (path, basename) {\n return typeof path === 'string' && (path === nativePath || (!usingPosixSep && path === targetPath)) ? pattern : null;\n };\n }\n parsedPattern.allPaths = [(matchPathEnds ? '*/' : './') + targetPath];\n return parsedPattern;\n}\nfunction toRegExp(pattern) {\n try {\n const regExp = new RegExp(`^${parseRegExp(pattern)}$`);\n return function (path) {\n regExp.lastIndex = 0; // reset RegExp to its initial state to reuse it!\n return typeof path === 'string' && regExp.test(path) ? pattern : null;\n };\n }\n catch (error) {\n return NULL;\n }\n}\nfunction match(arg1, path, hasSibling) {\n if (!arg1 || typeof path !== 'string') {\n return false;\n }\n return parse(arg1)(path, undefined, hasSibling);\n}\nfunction parse(arg1, options = {}) {\n if (!arg1) {\n return FALSE;\n }\n // Glob with String\n if (typeof arg1 === 'string' || isRelativePattern(arg1)) {\n const parsedPattern = parsePattern(arg1, options);\n if (parsedPattern === NULL) {\n return FALSE;\n }\n const resultPattern = function (path, basename) {\n return !!parsedPattern(path, basename);\n };\n if (parsedPattern.allBasenames) {\n resultPattern.allBasenames = parsedPattern.allBasenames;\n }\n if (parsedPattern.allPaths) {\n resultPattern.allPaths = parsedPattern.allPaths;\n }\n return resultPattern;\n }\n // Glob with Expression\n return parsedExpression(arg1, options);\n}\nfunction isRelativePattern(obj) {\n const rp = obj;\n if (!rp) {\n return false;\n }\n return typeof rp.base === 'string' && typeof rp.pattern === 'string';\n}\nfunction parsedExpression(expression, options) {\n const parsedPatterns = aggregateBasenameMatches(Object.getOwnPropertyNames(expression)\n .map(pattern => parseExpressionPattern(pattern, expression[pattern], options))\n .filter(pattern => pattern !== NULL));\n const patternsLength = parsedPatterns.length;\n if (!patternsLength) {\n return NULL;\n }\n if (!parsedPatterns.some(parsedPattern => !!parsedPattern.requiresSiblings)) {\n if (patternsLength === 1) {\n return parsedPatterns[0];\n }\n const resultExpression = function (path, basename) {\n let resultPromises = undefined;\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\n const result = parsedPatterns[i](path, basename);\n if (typeof result === 'string') {\n return result; // immediately return as soon as the first expression matches\n }\n // If the result is a promise, we have to keep it for\n // later processing and await the result properly.\n if ((0,_async_js__WEBPACK_IMPORTED_MODULE_0__.isThenable)(result)) {\n if (!resultPromises) {\n resultPromises = [];\n }\n resultPromises.push(result);\n }\n }\n // With result promises, we have to loop over each and\n // await the result before we can return any result.\n if (resultPromises) {\n return (() => __awaiter(this, void 0, void 0, function* () {\n for (const resultPromise of resultPromises) {\n const result = yield resultPromise;\n if (typeof result === 'string') {\n return result;\n }\n }\n return null;\n }))();\n }\n return null;\n };\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\n if (withBasenames) {\n resultExpression.allBasenames = withBasenames.allBasenames;\n }\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\n if (allPaths.length) {\n resultExpression.allPaths = allPaths;\n }\n return resultExpression;\n }\n const resultExpression = function (path, base, hasSibling) {\n let name = undefined;\n let resultPromises = undefined;\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\n // Pattern matches path\n const parsedPattern = parsedPatterns[i];\n if (parsedPattern.requiresSiblings && hasSibling) {\n if (!base) {\n base = (0,_path_js__WEBPACK_IMPORTED_MODULE_3__.basename)(path);\n }\n if (!name) {\n name = base.substr(0, base.length - (0,_path_js__WEBPACK_IMPORTED_MODULE_3__.extname)(path).length);\n }\n }\n const result = parsedPattern(path, base, name, hasSibling);\n if (typeof result === 'string') {\n return result; // immediately return as soon as the first expression matches\n }\n // If the result is a promise, we have to keep it for\n // later processing and await the result properly.\n if ((0,_async_js__WEBPACK_IMPORTED_MODULE_0__.isThenable)(result)) {\n if (!resultPromises) {\n resultPromises = [];\n }\n resultPromises.push(result);\n }\n }\n // With result promises, we have to loop over each and\n // await the result before we can return any result.\n if (resultPromises) {\n return (() => __awaiter(this, void 0, void 0, function* () {\n for (const resultPromise of resultPromises) {\n const result = yield resultPromise;\n if (typeof result === 'string') {\n return result;\n }\n }\n return null;\n }))();\n }\n return null;\n };\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\n if (withBasenames) {\n resultExpression.allBasenames = withBasenames.allBasenames;\n }\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\n if (allPaths.length) {\n resultExpression.allPaths = allPaths;\n }\n return resultExpression;\n}\nfunction parseExpressionPattern(pattern, value, options) {\n if (value === false) {\n return NULL; // pattern is disabled\n }\n const parsedPattern = parsePattern(pattern, options);\n if (parsedPattern === NULL) {\n return NULL;\n }\n // Expression Pattern is \n if (typeof value === 'boolean') {\n return parsedPattern;\n }\n // Expression Pattern is \n if (value) {\n const when = value.when;\n if (typeof when === 'string') {\n const result = (path, basename, name, hasSibling) => {\n if (!hasSibling || !parsedPattern(path, basename)) {\n return null;\n }\n const clausePattern = when.replace('$(basename)', () => name);\n const matched = hasSibling(clausePattern);\n return (0,_async_js__WEBPACK_IMPORTED_MODULE_0__.isThenable)(matched) ?\n matched.then(match => match ? pattern : null) :\n matched ? pattern : null;\n };\n result.requiresSiblings = true;\n return result;\n }\n }\n // Expression is anything\n return parsedPattern;\n}\nfunction aggregateBasenameMatches(parsedPatterns, result) {\n const basenamePatterns = parsedPatterns.filter(parsedPattern => !!parsedPattern.basenames);\n if (basenamePatterns.length < 2) {\n return parsedPatterns;\n }\n const basenames = basenamePatterns.reduce((all, current) => {\n const basenames = current.basenames;\n return basenames ? all.concat(basenames) : all;\n }, []);\n let patterns;\n if (result) {\n patterns = [];\n for (let i = 0, n = basenames.length; i < n; i++) {\n patterns.push(result);\n }\n }\n else {\n patterns = basenamePatterns.reduce((all, current) => {\n const patterns = current.patterns;\n return patterns ? all.concat(patterns) : all;\n }, []);\n }\n const aggregate = function (path, basename) {\n if (typeof path !== 'string') {\n return null;\n }\n if (!basename) {\n let i;\n for (i = path.length; i > 0; i--) {\n const ch = path.charCodeAt(i - 1);\n if (ch === 47 /* CharCode.Slash */ || ch === 92 /* CharCode.Backslash */) {\n break;\n }\n }\n basename = path.substr(i);\n }\n const index = basenames.indexOf(basename);\n return index !== -1 ? patterns[index] : null;\n };\n aggregate.basenames = basenames;\n aggregate.patterns = patterns;\n aggregate.allBasenames = basenames;\n const aggregatedPatterns = parsedPatterns.filter(parsedPattern => !parsedPattern.basenames);\n aggregatedPatterns.push(aggregate);\n return aggregatedPatterns;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/glob.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/hash.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/hash.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StringSHA1: () => (/* binding */ StringSHA1),\n/* harmony export */ doHash: () => (/* binding */ doHash),\n/* harmony export */ hash: () => (/* binding */ hash),\n/* harmony export */ numberHash: () => (/* binding */ numberHash),\n/* harmony export */ stringHash: () => (/* binding */ stringHash),\n/* harmony export */ toHexString: () => (/* binding */ toHexString)\n/* harmony export */ });\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/**\n * Return a hash value for an object.\n */\nfunction hash(obj) {\n return doHash(obj, 0);\n}\nfunction doHash(obj, hashVal) {\n switch (typeof obj) {\n case 'object':\n if (obj === null) {\n return numberHash(349, hashVal);\n }\n else if (Array.isArray(obj)) {\n return arrayHash(obj, hashVal);\n }\n return objectHash(obj, hashVal);\n case 'string':\n return stringHash(obj, hashVal);\n case 'boolean':\n return booleanHash(obj, hashVal);\n case 'number':\n return numberHash(obj, hashVal);\n case 'undefined':\n return numberHash(937, hashVal);\n default:\n return numberHash(617, hashVal);\n }\n}\nfunction numberHash(val, initialHashVal) {\n return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32\n}\nfunction booleanHash(b, initialHashVal) {\n return numberHash(b ? 433 : 863, initialHashVal);\n}\nfunction stringHash(s, hashVal) {\n hashVal = numberHash(149417, hashVal);\n for (let i = 0, length = s.length; i < length; i++) {\n hashVal = numberHash(s.charCodeAt(i), hashVal);\n }\n return hashVal;\n}\nfunction arrayHash(arr, initialHashVal) {\n initialHashVal = numberHash(104579, initialHashVal);\n return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);\n}\nfunction objectHash(obj, initialHashVal) {\n initialHashVal = numberHash(181387, initialHashVal);\n return Object.keys(obj).sort().reduce((hashVal, key) => {\n hashVal = stringHash(key, hashVal);\n return doHash(obj[key], hashVal);\n }, initialHashVal);\n}\nfunction leftRotate(value, bits, totalBits = 32) {\n // delta + bits = totalBits\n const delta = totalBits - bits;\n // All ones, expect `delta` zeros aligned to the right\n const mask = ~((1 << delta) - 1);\n // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)\n return ((value << bits) | ((mask & value) >>> delta)) >>> 0;\n}\nfunction fill(dest, index = 0, count = dest.byteLength, value = 0) {\n for (let i = 0; i < count; i++) {\n dest[index + i] = value;\n }\n}\nfunction leftPad(value, length, char = '0') {\n while (value.length < length) {\n value = char + value;\n }\n return value;\n}\nfunction toHexString(bufferOrValue, bitsize = 32) {\n if (bufferOrValue instanceof ArrayBuffer) {\n return Array.from(new Uint8Array(bufferOrValue)).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n return leftPad((bufferOrValue >>> 0).toString(16), bitsize / 4);\n}\n/**\n * A SHA1 implementation that works with strings and does not allocate.\n */\nclass StringSHA1 {\n constructor() {\n this._h0 = 0x67452301;\n this._h1 = 0xEFCDAB89;\n this._h2 = 0x98BADCFE;\n this._h3 = 0x10325476;\n this._h4 = 0xC3D2E1F0;\n this._buff = new Uint8Array(64 /* SHA1Constant.BLOCK_SIZE */ + 3 /* to fit any utf-8 */);\n this._buffDV = new DataView(this._buff.buffer);\n this._buffLen = 0;\n this._totalLen = 0;\n this._leftoverHighSurrogate = 0;\n this._finished = false;\n }\n update(str) {\n const strLen = str.length;\n if (strLen === 0) {\n return;\n }\n const buff = this._buff;\n let buffLen = this._buffLen;\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\n let charCode;\n let offset;\n if (leftoverHighSurrogate !== 0) {\n charCode = leftoverHighSurrogate;\n offset = -1;\n leftoverHighSurrogate = 0;\n }\n else {\n charCode = str.charCodeAt(0);\n offset = 0;\n }\n while (true) {\n let codePoint = charCode;\n if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.isHighSurrogate(charCode)) {\n if (offset + 1 < strLen) {\n const nextCharCode = str.charCodeAt(offset + 1);\n if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.isLowSurrogate(nextCharCode)) {\n offset++;\n codePoint = _strings_js__WEBPACK_IMPORTED_MODULE_0__.computeCodePoint(charCode, nextCharCode);\n }\n else {\n // illegal => unicode replacement character\n codePoint = 65533 /* SHA1Constant.UNICODE_REPLACEMENT */;\n }\n }\n else {\n // last character is a surrogate pair\n leftoverHighSurrogate = charCode;\n break;\n }\n }\n else if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.isLowSurrogate(charCode)) {\n // illegal => unicode replacement character\n codePoint = 65533 /* SHA1Constant.UNICODE_REPLACEMENT */;\n }\n buffLen = this._push(buff, buffLen, codePoint);\n offset++;\n if (offset < strLen) {\n charCode = str.charCodeAt(offset);\n }\n else {\n break;\n }\n }\n this._buffLen = buffLen;\n this._leftoverHighSurrogate = leftoverHighSurrogate;\n }\n _push(buff, buffLen, codePoint) {\n if (codePoint < 0x0080) {\n buff[buffLen++] = codePoint;\n }\n else if (codePoint < 0x0800) {\n buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\n }\n else if (codePoint < 0x10000) {\n buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\n }\n else {\n buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\n }\n if (buffLen >= 64 /* SHA1Constant.BLOCK_SIZE */) {\n this._step();\n buffLen -= 64 /* SHA1Constant.BLOCK_SIZE */;\n this._totalLen += 64 /* SHA1Constant.BLOCK_SIZE */;\n // take last 3 in case of UTF8 overflow\n buff[0] = buff[64 /* SHA1Constant.BLOCK_SIZE */ + 0];\n buff[1] = buff[64 /* SHA1Constant.BLOCK_SIZE */ + 1];\n buff[2] = buff[64 /* SHA1Constant.BLOCK_SIZE */ + 2];\n }\n return buffLen;\n }\n digest() {\n if (!this._finished) {\n this._finished = true;\n if (this._leftoverHighSurrogate) {\n // illegal => unicode replacement character\n this._leftoverHighSurrogate = 0;\n this._buffLen = this._push(this._buff, this._buffLen, 65533 /* SHA1Constant.UNICODE_REPLACEMENT */);\n }\n this._totalLen += this._buffLen;\n this._wrapUp();\n }\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\n }\n _wrapUp() {\n this._buff[this._buffLen++] = 0x80;\n fill(this._buff, this._buffLen);\n if (this._buffLen > 56) {\n this._step();\n fill(this._buff);\n }\n // this will fit because the mantissa can cover up to 52 bits\n const ml = 8 * this._totalLen;\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\n this._buffDV.setUint32(60, ml % 4294967296, false);\n this._step();\n }\n _step() {\n const bigBlock32 = StringSHA1._bigBlock32;\n const data = this._buffDV;\n for (let j = 0; j < 64 /* 16*4 */; j += 4) {\n bigBlock32.setUint32(j, data.getUint32(j, false), false);\n }\n for (let j = 64; j < 320 /* 80*4 */; j += 4) {\n bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);\n }\n let a = this._h0;\n let b = this._h1;\n let c = this._h2;\n let d = this._h3;\n let e = this._h4;\n let f, k;\n let temp;\n for (let j = 0; j < 80; j++) {\n if (j < 20) {\n f = (b & c) | ((~b) & d);\n k = 0x5A827999;\n }\n else if (j < 40) {\n f = b ^ c ^ d;\n k = 0x6ED9EBA1;\n }\n else if (j < 60) {\n f = (b & c) | (b & d) | (c & d);\n k = 0x8F1BBCDC;\n }\n else {\n f = b ^ c ^ d;\n k = 0xCA62C1D6;\n }\n temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;\n e = d;\n d = c;\n c = leftRotate(b, 30);\n b = a;\n a = temp;\n }\n this._h0 = (this._h0 + a) & 0xffffffff;\n this._h1 = (this._h1 + b) & 0xffffffff;\n this._h2 = (this._h2 + c) & 0xffffffff;\n this._h3 = (this._h3 + d) & 0xffffffff;\n this._h4 = (this._h4 + e) & 0xffffffff;\n }\n}\nStringSHA1._bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/hash.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/history.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/history.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HistoryNavigator: () => (/* binding */ HistoryNavigator)\n/* harmony export */ });\n/* harmony import */ var _navigator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./navigator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/navigator.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nclass HistoryNavigator {\n constructor(history = [], limit = 10) {\n this._initialize(history);\n this._limit = limit;\n this._onChange();\n }\n getHistory() {\n return this._elements;\n }\n add(t) {\n this._history.delete(t);\n this._history.add(t);\n this._onChange();\n }\n next() {\n // This will navigate past the end of the last element, and in that case the input should be cleared\n return this._navigator.next();\n }\n previous() {\n if (this._currentPosition() !== 0) {\n return this._navigator.previous();\n }\n return null;\n }\n current() {\n return this._navigator.current();\n }\n first() {\n return this._navigator.first();\n }\n last() {\n return this._navigator.last();\n }\n isLast() {\n return this._currentPosition() >= this._elements.length - 1;\n }\n isNowhere() {\n return this._navigator.current() === null;\n }\n has(t) {\n return this._history.has(t);\n }\n _onChange() {\n this._reduceToLimit();\n const elements = this._elements;\n this._navigator = new _navigator_js__WEBPACK_IMPORTED_MODULE_0__.ArrayNavigator(elements, 0, elements.length, elements.length);\n }\n _reduceToLimit() {\n const data = this._elements;\n if (data.length > this._limit) {\n this._initialize(data.slice(data.length - this._limit));\n }\n }\n _currentPosition() {\n const currentElement = this._navigator.current();\n if (!currentElement) {\n return -1;\n }\n return this._elements.indexOf(currentElement);\n }\n _initialize(history) {\n this._history = new Set();\n for (const entry of history) {\n this._history.add(entry);\n }\n }\n get _elements() {\n const elements = [];\n this._history.forEach(e => elements.push(e));\n return elements;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/history.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js": +/*!**********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MarkdownString: () => (/* binding */ MarkdownString),\n/* harmony export */ escapeDoubleQuotes: () => (/* binding */ escapeDoubleQuotes),\n/* harmony export */ escapeMarkdownSyntaxTokens: () => (/* binding */ escapeMarkdownSyntaxTokens),\n/* harmony export */ isEmptyMarkdownString: () => (/* binding */ isEmptyMarkdownString),\n/* harmony export */ isMarkdownString: () => (/* binding */ isMarkdownString),\n/* harmony export */ markdownStringEqual: () => (/* binding */ markdownStringEqual),\n/* harmony export */ parseHrefAndDimensions: () => (/* binding */ parseHrefAndDimensions),\n/* harmony export */ removeMarkdownEscapes: () => (/* binding */ removeMarkdownEscapes)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _iconLabels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./iconLabels.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js\");\n/* harmony import */ var _resources_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resources.js */ \"./node_modules/monaco-editor/esm/vs/base/common/resources.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/* harmony import */ var _uri_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uri.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uri.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nclass MarkdownString {\n constructor(value = '', isTrustedOrOptions = false) {\n var _a, _b, _c;\n this.value = value;\n if (typeof this.value !== 'string') {\n throw (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.illegalArgument)('value');\n }\n if (typeof isTrustedOrOptions === 'boolean') {\n this.isTrusted = isTrustedOrOptions;\n this.supportThemeIcons = false;\n this.supportHtml = false;\n }\n else {\n this.isTrusted = (_a = isTrustedOrOptions.isTrusted) !== null && _a !== void 0 ? _a : undefined;\n this.supportThemeIcons = (_b = isTrustedOrOptions.supportThemeIcons) !== null && _b !== void 0 ? _b : false;\n this.supportHtml = (_c = isTrustedOrOptions.supportHtml) !== null && _c !== void 0 ? _c : false;\n }\n }\n appendText(value, newlineStyle = 0 /* MarkdownStringTextNewlineStyle.Paragraph */) {\n this.value += escapeMarkdownSyntaxTokens(this.supportThemeIcons ? (0,_iconLabels_js__WEBPACK_IMPORTED_MODULE_1__.escapeIcons)(value) : value)\n .replace(/([ \\t]+)/g, (_match, g1) => ' '.repeat(g1.length))\n .replace(/\\>/gm, '\\\\>')\n .replace(/\\n/g, newlineStyle === 1 /* MarkdownStringTextNewlineStyle.Break */ ? '\\\\\\n' : '\\n\\n');\n return this;\n }\n appendMarkdown(value) {\n this.value += value;\n return this;\n }\n appendCodeblock(langId, code) {\n this.value += '\\n```';\n this.value += langId;\n this.value += '\\n';\n this.value += code;\n this.value += '\\n```\\n';\n return this;\n }\n appendLink(target, label, title) {\n this.value += '[';\n this.value += this._escape(label, ']');\n this.value += '](';\n this.value += this._escape(String(target), ')');\n if (title) {\n this.value += ` \"${this._escape(this._escape(title, '\"'), ')')}\"`;\n }\n this.value += ')';\n return this;\n }\n _escape(value, ch) {\n const r = new RegExp((0,_strings_js__WEBPACK_IMPORTED_MODULE_3__.escapeRegExpCharacters)(ch), 'g');\n return value.replace(r, (match, offset) => {\n if (value.charAt(offset - 1) !== '\\\\') {\n return `\\\\${match}`;\n }\n else {\n return match;\n }\n });\n }\n}\nfunction isEmptyMarkdownString(oneOrMany) {\n if (isMarkdownString(oneOrMany)) {\n return !oneOrMany.value;\n }\n else if (Array.isArray(oneOrMany)) {\n return oneOrMany.every(isEmptyMarkdownString);\n }\n else {\n return true;\n }\n}\nfunction isMarkdownString(thing) {\n if (thing instanceof MarkdownString) {\n return true;\n }\n else if (thing && typeof thing === 'object') {\n return typeof thing.value === 'string'\n && (typeof thing.isTrusted === 'boolean' || typeof thing.isTrusted === 'object' || thing.isTrusted === undefined)\n && (typeof thing.supportThemeIcons === 'boolean' || thing.supportThemeIcons === undefined);\n }\n return false;\n}\nfunction markdownStringEqual(a, b) {\n if (a === b) {\n return true;\n }\n else if (!a || !b) {\n return false;\n }\n else {\n return a.value === b.value\n && a.isTrusted === b.isTrusted\n && a.supportThemeIcons === b.supportThemeIcons\n && a.supportHtml === b.supportHtml\n && (a.baseUri === b.baseUri || !!a.baseUri && !!b.baseUri && (0,_resources_js__WEBPACK_IMPORTED_MODULE_2__.isEqual)(_uri_js__WEBPACK_IMPORTED_MODULE_4__.URI.from(a.baseUri), _uri_js__WEBPACK_IMPORTED_MODULE_4__.URI.from(b.baseUri)));\n }\n}\nfunction escapeMarkdownSyntaxTokens(text) {\n // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n return text.replace(/[\\\\`*_{}[\\]()#+\\-!~]/g, '\\\\$&'); // CodeQL [SM02383] Backslash is escaped in the character class\n}\nfunction escapeDoubleQuotes(input) {\n return input.replace(/\"/g, '"');\n}\nfunction removeMarkdownEscapes(text) {\n if (!text) {\n return text;\n }\n return text.replace(/\\\\([\\\\`*_{}[\\]()#+\\-.!~])/g, '$1');\n}\nfunction parseHrefAndDimensions(href) {\n const dimensions = [];\n const splitted = href.split('|').map(s => s.trim());\n href = splitted[0];\n const parameters = splitted[1];\n if (parameters) {\n const heightFromParams = /height=(\\d+)/.exec(parameters);\n const widthFromParams = /width=(\\d+)/.exec(parameters);\n const height = heightFromParams ? heightFromParams[1] : '';\n const width = widthFromParams ? widthFromParams[1] : '';\n const widthIsFinite = isFinite(parseInt(width));\n const heightIsFinite = isFinite(parseInt(height));\n if (widthIsFinite) {\n dimensions.push(`width=\"${width}\"`);\n }\n if (heightIsFinite) {\n dimensions.push(`height=\"${height}\"`);\n }\n }\n return { href, dimensions };\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ escapeIcons: () => (/* binding */ escapeIcons),\n/* harmony export */ getCodiconAriaLabel: () => (/* binding */ getCodiconAriaLabel),\n/* harmony export */ markdownEscapeEscapedIcons: () => (/* binding */ markdownEscapeEscapedIcons),\n/* harmony export */ matchesFuzzyIconAware: () => (/* binding */ matchesFuzzyIconAware),\n/* harmony export */ parseLabelWithIcons: () => (/* binding */ parseLabelWithIcons),\n/* harmony export */ stripIcons: () => (/* binding */ stripIcons)\n/* harmony export */ });\n/* harmony import */ var _filters_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filters.js */ \"./node_modules/monaco-editor/esm/vs/base/common/filters.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/* harmony import */ var _themables_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./themables.js */ \"./node_modules/monaco-editor/esm/vs/base/common/themables.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nconst iconStartMarker = '$(';\nconst iconsRegex = new RegExp(`\\\\$\\\\(${_themables_js__WEBPACK_IMPORTED_MODULE_2__.ThemeIcon.iconNameExpression}(?:${_themables_js__WEBPACK_IMPORTED_MODULE_2__.ThemeIcon.iconModifierExpression})?\\\\)`, 'g'); // no capturing groups\nconst escapeIconsRegex = new RegExp(`(\\\\\\\\)?${iconsRegex.source}`, 'g');\nfunction escapeIcons(text) {\n return text.replace(escapeIconsRegex, (match, escaped) => escaped ? match : `\\\\${match}`);\n}\nconst markdownEscapedIconsRegex = new RegExp(`\\\\\\\\${iconsRegex.source}`, 'g');\nfunction markdownEscapeEscapedIcons(text) {\n // Need to add an extra \\ for escaping in markdown\n return text.replace(markdownEscapedIconsRegex, match => `\\\\${match}`);\n}\nconst stripIconsRegex = new RegExp(`(\\\\s)?(\\\\\\\\)?${iconsRegex.source}(\\\\s)?`, 'g');\n/**\n * Takes a label with icons (`$(iconId)xyz`) and strips the icons out (`xyz`)\n */\nfunction stripIcons(text) {\n if (text.indexOf(iconStartMarker) === -1) {\n return text;\n }\n return text.replace(stripIconsRegex, (match, preWhitespace, escaped, postWhitespace) => escaped ? match : preWhitespace || postWhitespace || '');\n}\n/**\n * Takes a label with icons (`$(iconId)xyz`), removes the icon syntax adds whitespace so that screen readers can read the text better.\n */\nfunction getCodiconAriaLabel(text) {\n if (!text) {\n return '';\n }\n return text.replace(/\\$\\((.*?)\\)/g, (_match, codiconName) => ` ${codiconName} `).trim();\n}\nconst _parseIconsRegex = new RegExp(`\\\\$\\\\(${_themables_js__WEBPACK_IMPORTED_MODULE_2__.ThemeIcon.iconNameCharacter}+\\\\)`, 'g');\n/**\n * Takes a label with icons (`abc $(iconId)xyz`) and returns the text (`abc xyz`) and the offsets of the icons (`[3]`)\n */\nfunction parseLabelWithIcons(input) {\n _parseIconsRegex.lastIndex = 0;\n let text = '';\n const iconOffsets = [];\n let iconsOffset = 0;\n while (true) {\n const pos = _parseIconsRegex.lastIndex;\n const match = _parseIconsRegex.exec(input);\n const chars = input.substring(pos, match === null || match === void 0 ? void 0 : match.index);\n if (chars.length > 0) {\n text += chars;\n for (let i = 0; i < chars.length; i++) {\n iconOffsets.push(iconsOffset);\n }\n }\n if (!match) {\n break;\n }\n iconsOffset += match[0].length;\n }\n return { text, iconOffsets };\n}\nfunction matchesFuzzyIconAware(query, target, enableSeparateSubstringMatching = false) {\n const { text, iconOffsets } = target;\n // Return early if there are no icon markers in the word to match against\n if (!iconOffsets || iconOffsets.length === 0) {\n return (0,_filters_js__WEBPACK_IMPORTED_MODULE_0__.matchesFuzzy)(query, text, enableSeparateSubstringMatching);\n }\n // Trim the word to match against because it could have leading\n // whitespace now if the word started with an icon\n const wordToMatchAgainstWithoutIconsTrimmed = (0,_strings_js__WEBPACK_IMPORTED_MODULE_1__.ltrim)(text, ' ');\n const leadingWhitespaceOffset = text.length - wordToMatchAgainstWithoutIconsTrimmed.length;\n // match on value without icon\n const matches = (0,_filters_js__WEBPACK_IMPORTED_MODULE_0__.matchesFuzzy)(query, wordToMatchAgainstWithoutIconsTrimmed, enableSeparateSubstringMatching);\n // Map matches back to offsets with icon and trimming\n if (matches) {\n for (const match of matches) {\n const iconOffset = iconOffsets[match.start + leadingWhitespaceOffset] /* icon offsets at index */ + leadingWhitespaceOffset /* overall leading whitespace offset */;\n match.start += iconOffset;\n match.end += iconOffset;\n }\n }\n return matches;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/idGenerator.js": +/*!**********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/idGenerator.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IdGenerator: () => (/* binding */ IdGenerator),\n/* harmony export */ defaultGenerator: () => (/* binding */ defaultGenerator)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass IdGenerator {\n constructor(prefix) {\n this._prefix = prefix;\n this._lastId = 0;\n }\n nextId() {\n return this._prefix + (++this._lastId);\n }\n}\nconst defaultGenerator = new IdGenerator('id#');\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/idGenerator.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/ime.js": +/*!**************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/ime.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IME: () => (/* binding */ IME),\n/* harmony export */ IMEImpl: () => (/* binding */ IMEImpl)\n/* harmony export */ });\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nclass IMEImpl {\n constructor() {\n this._onDidChange = new _event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter();\n this.onDidChange = this._onDidChange.event;\n this._enabled = true;\n }\n get enabled() {\n return this._enabled;\n }\n /**\n * Enable IME\n */\n enable() {\n this._enabled = true;\n this._onDidChange.fire();\n }\n /**\n * Disable IME\n */\n disable() {\n this._enabled = false;\n this._onDidChange.fire();\n }\n}\nconst IME = new IMEImpl();\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/ime.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/iterator.js": +/*!*******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/iterator.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Iterable: () => (/* binding */ Iterable)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar Iterable;\n(function (Iterable) {\n function is(thing) {\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\n }\n Iterable.is = is;\n const _empty = Object.freeze([]);\n function empty() {\n return _empty;\n }\n Iterable.empty = empty;\n function* single(element) {\n yield element;\n }\n Iterable.single = single;\n function wrap(iterableOrElement) {\n if (is(iterableOrElement)) {\n return iterableOrElement;\n }\n else {\n return single(iterableOrElement);\n }\n }\n Iterable.wrap = wrap;\n function from(iterable) {\n return iterable || _empty;\n }\n Iterable.from = from;\n function isEmpty(iterable) {\n return !iterable || iterable[Symbol.iterator]().next().done === true;\n }\n Iterable.isEmpty = isEmpty;\n function first(iterable) {\n return iterable[Symbol.iterator]().next().value;\n }\n Iterable.first = first;\n function some(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n return true;\n }\n }\n return false;\n }\n Iterable.some = some;\n function find(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n return element;\n }\n }\n return undefined;\n }\n Iterable.find = find;\n function* filter(iterable, predicate) {\n for (const element of iterable) {\n if (predicate(element)) {\n yield element;\n }\n }\n }\n Iterable.filter = filter;\n function* map(iterable, fn) {\n let index = 0;\n for (const element of iterable) {\n yield fn(element, index++);\n }\n }\n Iterable.map = map;\n function* concat(...iterables) {\n for (const iterable of iterables) {\n for (const element of iterable) {\n yield element;\n }\n }\n }\n Iterable.concat = concat;\n function reduce(iterable, reducer, initialValue) {\n let value = initialValue;\n for (const element of iterable) {\n value = reducer(value, element);\n }\n return value;\n }\n Iterable.reduce = reduce;\n /**\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\n */\n function* slice(arr, from, to = arr.length) {\n if (from < 0) {\n from += arr.length;\n }\n if (to < 0) {\n to += arr.length;\n }\n else if (to > arr.length) {\n to = arr.length;\n }\n for (; from < to; from++) {\n yield arr[from];\n }\n }\n Iterable.slice = slice;\n /**\n * Consumes `atMost` elements from iterable and returns the consumed elements,\n * and an iterable for the rest of the elements.\n */\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\n const consumed = [];\n if (atMost === 0) {\n return [consumed, iterable];\n }\n const iterator = iterable[Symbol.iterator]();\n for (let i = 0; i < atMost; i++) {\n const next = iterator.next();\n if (next.done) {\n return [consumed, Iterable.empty()];\n }\n consumed.push(next.value);\n }\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\n }\n Iterable.consume = consume;\n})(Iterable || (Iterable = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/iterator.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js": +/*!*******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EVENT_KEY_CODE_MAP: () => (/* binding */ EVENT_KEY_CODE_MAP),\n/* harmony export */ IMMUTABLE_CODE_TO_KEY_CODE: () => (/* binding */ IMMUTABLE_CODE_TO_KEY_CODE),\n/* harmony export */ IMMUTABLE_KEY_CODE_TO_CODE: () => (/* binding */ IMMUTABLE_KEY_CODE_TO_CODE),\n/* harmony export */ KeyChord: () => (/* binding */ KeyChord),\n/* harmony export */ KeyCodeUtils: () => (/* binding */ KeyCodeUtils),\n/* harmony export */ NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE: () => (/* binding */ NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass KeyCodeStrMap {\n constructor() {\n this._keyCodeToStr = [];\n this._strToKeyCode = Object.create(null);\n }\n define(keyCode, str) {\n this._keyCodeToStr[keyCode] = str;\n this._strToKeyCode[str.toLowerCase()] = keyCode;\n }\n keyCodeToStr(keyCode) {\n return this._keyCodeToStr[keyCode];\n }\n strToKeyCode(str) {\n return this._strToKeyCode[str.toLowerCase()] || 0 /* KeyCode.Unknown */;\n }\n}\nconst uiMap = new KeyCodeStrMap();\nconst userSettingsUSMap = new KeyCodeStrMap();\nconst userSettingsGeneralMap = new KeyCodeStrMap();\nconst EVENT_KEY_CODE_MAP = new Array(230);\nconst NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE = {};\nconst scanCodeIntToStr = [];\nconst scanCodeStrToInt = Object.create(null);\nconst scanCodeLowerCaseStrToInt = Object.create(null);\n/**\n * -1 if a ScanCode => KeyCode mapping depends on kb layout.\n */\nconst IMMUTABLE_CODE_TO_KEY_CODE = [];\n/**\n * -1 if a KeyCode => ScanCode mapping depends on kb layout.\n */\nconst IMMUTABLE_KEY_CODE_TO_CODE = [];\nfor (let i = 0; i <= 193 /* ScanCode.MAX_VALUE */; i++) {\n IMMUTABLE_CODE_TO_KEY_CODE[i] = -1 /* KeyCode.DependsOnKbLayout */;\n}\nfor (let i = 0; i <= 132 /* KeyCode.MAX_VALUE */; i++) {\n IMMUTABLE_KEY_CODE_TO_CODE[i] = -1 /* ScanCode.DependsOnKbLayout */;\n}\n(function () {\n // See https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\n // See https://github.com/microsoft/node-native-keymap/blob/88c0b0e5/deps/chromium/keyboard_codes_win.h\n const empty = '';\n const mappings = [\n // immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel\n [1, 0 /* ScanCode.None */, 'None', 0 /* KeyCode.Unknown */, 'unknown', 0, 'VK_UNKNOWN', empty, empty],\n [1, 1 /* ScanCode.Hyper */, 'Hyper', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 2 /* ScanCode.Super */, 'Super', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 3 /* ScanCode.Fn */, 'Fn', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 4 /* ScanCode.FnLock */, 'FnLock', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 5 /* ScanCode.Suspend */, 'Suspend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 6 /* ScanCode.Resume */, 'Resume', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 7 /* ScanCode.Turbo */, 'Turbo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 8 /* ScanCode.Sleep */, 'Sleep', 0 /* KeyCode.Unknown */, empty, 0, 'VK_SLEEP', empty, empty],\n [1, 9 /* ScanCode.WakeUp */, 'WakeUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [0, 10 /* ScanCode.KeyA */, 'KeyA', 31 /* KeyCode.KeyA */, 'A', 65, 'VK_A', empty, empty],\n [0, 11 /* ScanCode.KeyB */, 'KeyB', 32 /* KeyCode.KeyB */, 'B', 66, 'VK_B', empty, empty],\n [0, 12 /* ScanCode.KeyC */, 'KeyC', 33 /* KeyCode.KeyC */, 'C', 67, 'VK_C', empty, empty],\n [0, 13 /* ScanCode.KeyD */, 'KeyD', 34 /* KeyCode.KeyD */, 'D', 68, 'VK_D', empty, empty],\n [0, 14 /* ScanCode.KeyE */, 'KeyE', 35 /* KeyCode.KeyE */, 'E', 69, 'VK_E', empty, empty],\n [0, 15 /* ScanCode.KeyF */, 'KeyF', 36 /* KeyCode.KeyF */, 'F', 70, 'VK_F', empty, empty],\n [0, 16 /* ScanCode.KeyG */, 'KeyG', 37 /* KeyCode.KeyG */, 'G', 71, 'VK_G', empty, empty],\n [0, 17 /* ScanCode.KeyH */, 'KeyH', 38 /* KeyCode.KeyH */, 'H', 72, 'VK_H', empty, empty],\n [0, 18 /* ScanCode.KeyI */, 'KeyI', 39 /* KeyCode.KeyI */, 'I', 73, 'VK_I', empty, empty],\n [0, 19 /* ScanCode.KeyJ */, 'KeyJ', 40 /* KeyCode.KeyJ */, 'J', 74, 'VK_J', empty, empty],\n [0, 20 /* ScanCode.KeyK */, 'KeyK', 41 /* KeyCode.KeyK */, 'K', 75, 'VK_K', empty, empty],\n [0, 21 /* ScanCode.KeyL */, 'KeyL', 42 /* KeyCode.KeyL */, 'L', 76, 'VK_L', empty, empty],\n [0, 22 /* ScanCode.KeyM */, 'KeyM', 43 /* KeyCode.KeyM */, 'M', 77, 'VK_M', empty, empty],\n [0, 23 /* ScanCode.KeyN */, 'KeyN', 44 /* KeyCode.KeyN */, 'N', 78, 'VK_N', empty, empty],\n [0, 24 /* ScanCode.KeyO */, 'KeyO', 45 /* KeyCode.KeyO */, 'O', 79, 'VK_O', empty, empty],\n [0, 25 /* ScanCode.KeyP */, 'KeyP', 46 /* KeyCode.KeyP */, 'P', 80, 'VK_P', empty, empty],\n [0, 26 /* ScanCode.KeyQ */, 'KeyQ', 47 /* KeyCode.KeyQ */, 'Q', 81, 'VK_Q', empty, empty],\n [0, 27 /* ScanCode.KeyR */, 'KeyR', 48 /* KeyCode.KeyR */, 'R', 82, 'VK_R', empty, empty],\n [0, 28 /* ScanCode.KeyS */, 'KeyS', 49 /* KeyCode.KeyS */, 'S', 83, 'VK_S', empty, empty],\n [0, 29 /* ScanCode.KeyT */, 'KeyT', 50 /* KeyCode.KeyT */, 'T', 84, 'VK_T', empty, empty],\n [0, 30 /* ScanCode.KeyU */, 'KeyU', 51 /* KeyCode.KeyU */, 'U', 85, 'VK_U', empty, empty],\n [0, 31 /* ScanCode.KeyV */, 'KeyV', 52 /* KeyCode.KeyV */, 'V', 86, 'VK_V', empty, empty],\n [0, 32 /* ScanCode.KeyW */, 'KeyW', 53 /* KeyCode.KeyW */, 'W', 87, 'VK_W', empty, empty],\n [0, 33 /* ScanCode.KeyX */, 'KeyX', 54 /* KeyCode.KeyX */, 'X', 88, 'VK_X', empty, empty],\n [0, 34 /* ScanCode.KeyY */, 'KeyY', 55 /* KeyCode.KeyY */, 'Y', 89, 'VK_Y', empty, empty],\n [0, 35 /* ScanCode.KeyZ */, 'KeyZ', 56 /* KeyCode.KeyZ */, 'Z', 90, 'VK_Z', empty, empty],\n [0, 36 /* ScanCode.Digit1 */, 'Digit1', 22 /* KeyCode.Digit1 */, '1', 49, 'VK_1', empty, empty],\n [0, 37 /* ScanCode.Digit2 */, 'Digit2', 23 /* KeyCode.Digit2 */, '2', 50, 'VK_2', empty, empty],\n [0, 38 /* ScanCode.Digit3 */, 'Digit3', 24 /* KeyCode.Digit3 */, '3', 51, 'VK_3', empty, empty],\n [0, 39 /* ScanCode.Digit4 */, 'Digit4', 25 /* KeyCode.Digit4 */, '4', 52, 'VK_4', empty, empty],\n [0, 40 /* ScanCode.Digit5 */, 'Digit5', 26 /* KeyCode.Digit5 */, '5', 53, 'VK_5', empty, empty],\n [0, 41 /* ScanCode.Digit6 */, 'Digit6', 27 /* KeyCode.Digit6 */, '6', 54, 'VK_6', empty, empty],\n [0, 42 /* ScanCode.Digit7 */, 'Digit7', 28 /* KeyCode.Digit7 */, '7', 55, 'VK_7', empty, empty],\n [0, 43 /* ScanCode.Digit8 */, 'Digit8', 29 /* KeyCode.Digit8 */, '8', 56, 'VK_8', empty, empty],\n [0, 44 /* ScanCode.Digit9 */, 'Digit9', 30 /* KeyCode.Digit9 */, '9', 57, 'VK_9', empty, empty],\n [0, 45 /* ScanCode.Digit0 */, 'Digit0', 21 /* KeyCode.Digit0 */, '0', 48, 'VK_0', empty, empty],\n [1, 46 /* ScanCode.Enter */, 'Enter', 3 /* KeyCode.Enter */, 'Enter', 13, 'VK_RETURN', empty, empty],\n [1, 47 /* ScanCode.Escape */, 'Escape', 9 /* KeyCode.Escape */, 'Escape', 27, 'VK_ESCAPE', empty, empty],\n [1, 48 /* ScanCode.Backspace */, 'Backspace', 1 /* KeyCode.Backspace */, 'Backspace', 8, 'VK_BACK', empty, empty],\n [1, 49 /* ScanCode.Tab */, 'Tab', 2 /* KeyCode.Tab */, 'Tab', 9, 'VK_TAB', empty, empty],\n [1, 50 /* ScanCode.Space */, 'Space', 10 /* KeyCode.Space */, 'Space', 32, 'VK_SPACE', empty, empty],\n [0, 51 /* ScanCode.Minus */, 'Minus', 88 /* KeyCode.Minus */, '-', 189, 'VK_OEM_MINUS', '-', 'OEM_MINUS'],\n [0, 52 /* ScanCode.Equal */, 'Equal', 86 /* KeyCode.Equal */, '=', 187, 'VK_OEM_PLUS', '=', 'OEM_PLUS'],\n [0, 53 /* ScanCode.BracketLeft */, 'BracketLeft', 92 /* KeyCode.BracketLeft */, '[', 219, 'VK_OEM_4', '[', 'OEM_4'],\n [0, 54 /* ScanCode.BracketRight */, 'BracketRight', 94 /* KeyCode.BracketRight */, ']', 221, 'VK_OEM_6', ']', 'OEM_6'],\n [0, 55 /* ScanCode.Backslash */, 'Backslash', 93 /* KeyCode.Backslash */, '\\\\', 220, 'VK_OEM_5', '\\\\', 'OEM_5'],\n [0, 56 /* ScanCode.IntlHash */, 'IntlHash', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [0, 57 /* ScanCode.Semicolon */, 'Semicolon', 85 /* KeyCode.Semicolon */, ';', 186, 'VK_OEM_1', ';', 'OEM_1'],\n [0, 58 /* ScanCode.Quote */, 'Quote', 95 /* KeyCode.Quote */, '\\'', 222, 'VK_OEM_7', '\\'', 'OEM_7'],\n [0, 59 /* ScanCode.Backquote */, 'Backquote', 91 /* KeyCode.Backquote */, '`', 192, 'VK_OEM_3', '`', 'OEM_3'],\n [0, 60 /* ScanCode.Comma */, 'Comma', 87 /* KeyCode.Comma */, ',', 188, 'VK_OEM_COMMA', ',', 'OEM_COMMA'],\n [0, 61 /* ScanCode.Period */, 'Period', 89 /* KeyCode.Period */, '.', 190, 'VK_OEM_PERIOD', '.', 'OEM_PERIOD'],\n [0, 62 /* ScanCode.Slash */, 'Slash', 90 /* KeyCode.Slash */, '/', 191, 'VK_OEM_2', '/', 'OEM_2'],\n [1, 63 /* ScanCode.CapsLock */, 'CapsLock', 8 /* KeyCode.CapsLock */, 'CapsLock', 20, 'VK_CAPITAL', empty, empty],\n [1, 64 /* ScanCode.F1 */, 'F1', 59 /* KeyCode.F1 */, 'F1', 112, 'VK_F1', empty, empty],\n [1, 65 /* ScanCode.F2 */, 'F2', 60 /* KeyCode.F2 */, 'F2', 113, 'VK_F2', empty, empty],\n [1, 66 /* ScanCode.F3 */, 'F3', 61 /* KeyCode.F3 */, 'F3', 114, 'VK_F3', empty, empty],\n [1, 67 /* ScanCode.F4 */, 'F4', 62 /* KeyCode.F4 */, 'F4', 115, 'VK_F4', empty, empty],\n [1, 68 /* ScanCode.F5 */, 'F5', 63 /* KeyCode.F5 */, 'F5', 116, 'VK_F5', empty, empty],\n [1, 69 /* ScanCode.F6 */, 'F6', 64 /* KeyCode.F6 */, 'F6', 117, 'VK_F6', empty, empty],\n [1, 70 /* ScanCode.F7 */, 'F7', 65 /* KeyCode.F7 */, 'F7', 118, 'VK_F7', empty, empty],\n [1, 71 /* ScanCode.F8 */, 'F8', 66 /* KeyCode.F8 */, 'F8', 119, 'VK_F8', empty, empty],\n [1, 72 /* ScanCode.F9 */, 'F9', 67 /* KeyCode.F9 */, 'F9', 120, 'VK_F9', empty, empty],\n [1, 73 /* ScanCode.F10 */, 'F10', 68 /* KeyCode.F10 */, 'F10', 121, 'VK_F10', empty, empty],\n [1, 74 /* ScanCode.F11 */, 'F11', 69 /* KeyCode.F11 */, 'F11', 122, 'VK_F11', empty, empty],\n [1, 75 /* ScanCode.F12 */, 'F12', 70 /* KeyCode.F12 */, 'F12', 123, 'VK_F12', empty, empty],\n [1, 76 /* ScanCode.PrintScreen */, 'PrintScreen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 77 /* ScanCode.ScrollLock */, 'ScrollLock', 84 /* KeyCode.ScrollLock */, 'ScrollLock', 145, 'VK_SCROLL', empty, empty],\n [1, 78 /* ScanCode.Pause */, 'Pause', 7 /* KeyCode.PauseBreak */, 'PauseBreak', 19, 'VK_PAUSE', empty, empty],\n [1, 79 /* ScanCode.Insert */, 'Insert', 19 /* KeyCode.Insert */, 'Insert', 45, 'VK_INSERT', empty, empty],\n [1, 80 /* ScanCode.Home */, 'Home', 14 /* KeyCode.Home */, 'Home', 36, 'VK_HOME', empty, empty],\n [1, 81 /* ScanCode.PageUp */, 'PageUp', 11 /* KeyCode.PageUp */, 'PageUp', 33, 'VK_PRIOR', empty, empty],\n [1, 82 /* ScanCode.Delete */, 'Delete', 20 /* KeyCode.Delete */, 'Delete', 46, 'VK_DELETE', empty, empty],\n [1, 83 /* ScanCode.End */, 'End', 13 /* KeyCode.End */, 'End', 35, 'VK_END', empty, empty],\n [1, 84 /* ScanCode.PageDown */, 'PageDown', 12 /* KeyCode.PageDown */, 'PageDown', 34, 'VK_NEXT', empty, empty],\n [1, 85 /* ScanCode.ArrowRight */, 'ArrowRight', 17 /* KeyCode.RightArrow */, 'RightArrow', 39, 'VK_RIGHT', 'Right', empty],\n [1, 86 /* ScanCode.ArrowLeft */, 'ArrowLeft', 15 /* KeyCode.LeftArrow */, 'LeftArrow', 37, 'VK_LEFT', 'Left', empty],\n [1, 87 /* ScanCode.ArrowDown */, 'ArrowDown', 18 /* KeyCode.DownArrow */, 'DownArrow', 40, 'VK_DOWN', 'Down', empty],\n [1, 88 /* ScanCode.ArrowUp */, 'ArrowUp', 16 /* KeyCode.UpArrow */, 'UpArrow', 38, 'VK_UP', 'Up', empty],\n [1, 89 /* ScanCode.NumLock */, 'NumLock', 83 /* KeyCode.NumLock */, 'NumLock', 144, 'VK_NUMLOCK', empty, empty],\n [1, 90 /* ScanCode.NumpadDivide */, 'NumpadDivide', 113 /* KeyCode.NumpadDivide */, 'NumPad_Divide', 111, 'VK_DIVIDE', empty, empty],\n [1, 91 /* ScanCode.NumpadMultiply */, 'NumpadMultiply', 108 /* KeyCode.NumpadMultiply */, 'NumPad_Multiply', 106, 'VK_MULTIPLY', empty, empty],\n [1, 92 /* ScanCode.NumpadSubtract */, 'NumpadSubtract', 111 /* KeyCode.NumpadSubtract */, 'NumPad_Subtract', 109, 'VK_SUBTRACT', empty, empty],\n [1, 93 /* ScanCode.NumpadAdd */, 'NumpadAdd', 109 /* KeyCode.NumpadAdd */, 'NumPad_Add', 107, 'VK_ADD', empty, empty],\n [1, 94 /* ScanCode.NumpadEnter */, 'NumpadEnter', 3 /* KeyCode.Enter */, empty, 0, empty, empty, empty],\n [1, 95 /* ScanCode.Numpad1 */, 'Numpad1', 99 /* KeyCode.Numpad1 */, 'NumPad1', 97, 'VK_NUMPAD1', empty, empty],\n [1, 96 /* ScanCode.Numpad2 */, 'Numpad2', 100 /* KeyCode.Numpad2 */, 'NumPad2', 98, 'VK_NUMPAD2', empty, empty],\n [1, 97 /* ScanCode.Numpad3 */, 'Numpad3', 101 /* KeyCode.Numpad3 */, 'NumPad3', 99, 'VK_NUMPAD3', empty, empty],\n [1, 98 /* ScanCode.Numpad4 */, 'Numpad4', 102 /* KeyCode.Numpad4 */, 'NumPad4', 100, 'VK_NUMPAD4', empty, empty],\n [1, 99 /* ScanCode.Numpad5 */, 'Numpad5', 103 /* KeyCode.Numpad5 */, 'NumPad5', 101, 'VK_NUMPAD5', empty, empty],\n [1, 100 /* ScanCode.Numpad6 */, 'Numpad6', 104 /* KeyCode.Numpad6 */, 'NumPad6', 102, 'VK_NUMPAD6', empty, empty],\n [1, 101 /* ScanCode.Numpad7 */, 'Numpad7', 105 /* KeyCode.Numpad7 */, 'NumPad7', 103, 'VK_NUMPAD7', empty, empty],\n [1, 102 /* ScanCode.Numpad8 */, 'Numpad8', 106 /* KeyCode.Numpad8 */, 'NumPad8', 104, 'VK_NUMPAD8', empty, empty],\n [1, 103 /* ScanCode.Numpad9 */, 'Numpad9', 107 /* KeyCode.Numpad9 */, 'NumPad9', 105, 'VK_NUMPAD9', empty, empty],\n [1, 104 /* ScanCode.Numpad0 */, 'Numpad0', 98 /* KeyCode.Numpad0 */, 'NumPad0', 96, 'VK_NUMPAD0', empty, empty],\n [1, 105 /* ScanCode.NumpadDecimal */, 'NumpadDecimal', 112 /* KeyCode.NumpadDecimal */, 'NumPad_Decimal', 110, 'VK_DECIMAL', empty, empty],\n [0, 106 /* ScanCode.IntlBackslash */, 'IntlBackslash', 97 /* KeyCode.IntlBackslash */, 'OEM_102', 226, 'VK_OEM_102', empty, empty],\n [1, 107 /* ScanCode.ContextMenu */, 'ContextMenu', 58 /* KeyCode.ContextMenu */, 'ContextMenu', 93, empty, empty, empty],\n [1, 108 /* ScanCode.Power */, 'Power', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 109 /* ScanCode.NumpadEqual */, 'NumpadEqual', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 110 /* ScanCode.F13 */, 'F13', 71 /* KeyCode.F13 */, 'F13', 124, 'VK_F13', empty, empty],\n [1, 111 /* ScanCode.F14 */, 'F14', 72 /* KeyCode.F14 */, 'F14', 125, 'VK_F14', empty, empty],\n [1, 112 /* ScanCode.F15 */, 'F15', 73 /* KeyCode.F15 */, 'F15', 126, 'VK_F15', empty, empty],\n [1, 113 /* ScanCode.F16 */, 'F16', 74 /* KeyCode.F16 */, 'F16', 127, 'VK_F16', empty, empty],\n [1, 114 /* ScanCode.F17 */, 'F17', 75 /* KeyCode.F17 */, 'F17', 128, 'VK_F17', empty, empty],\n [1, 115 /* ScanCode.F18 */, 'F18', 76 /* KeyCode.F18 */, 'F18', 129, 'VK_F18', empty, empty],\n [1, 116 /* ScanCode.F19 */, 'F19', 77 /* KeyCode.F19 */, 'F19', 130, 'VK_F19', empty, empty],\n [1, 117 /* ScanCode.F20 */, 'F20', 78 /* KeyCode.F20 */, 'F20', 131, 'VK_F20', empty, empty],\n [1, 118 /* ScanCode.F21 */, 'F21', 79 /* KeyCode.F21 */, 'F21', 132, 'VK_F21', empty, empty],\n [1, 119 /* ScanCode.F22 */, 'F22', 80 /* KeyCode.F22 */, 'F22', 133, 'VK_F22', empty, empty],\n [1, 120 /* ScanCode.F23 */, 'F23', 81 /* KeyCode.F23 */, 'F23', 134, 'VK_F23', empty, empty],\n [1, 121 /* ScanCode.F24 */, 'F24', 82 /* KeyCode.F24 */, 'F24', 135, 'VK_F24', empty, empty],\n [1, 122 /* ScanCode.Open */, 'Open', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 123 /* ScanCode.Help */, 'Help', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 124 /* ScanCode.Select */, 'Select', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 125 /* ScanCode.Again */, 'Again', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 126 /* ScanCode.Undo */, 'Undo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 127 /* ScanCode.Cut */, 'Cut', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 128 /* ScanCode.Copy */, 'Copy', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 129 /* ScanCode.Paste */, 'Paste', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 130 /* ScanCode.Find */, 'Find', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 131 /* ScanCode.AudioVolumeMute */, 'AudioVolumeMute', 117 /* KeyCode.AudioVolumeMute */, 'AudioVolumeMute', 173, 'VK_VOLUME_MUTE', empty, empty],\n [1, 132 /* ScanCode.AudioVolumeUp */, 'AudioVolumeUp', 118 /* KeyCode.AudioVolumeUp */, 'AudioVolumeUp', 175, 'VK_VOLUME_UP', empty, empty],\n [1, 133 /* ScanCode.AudioVolumeDown */, 'AudioVolumeDown', 119 /* KeyCode.AudioVolumeDown */, 'AudioVolumeDown', 174, 'VK_VOLUME_DOWN', empty, empty],\n [1, 134 /* ScanCode.NumpadComma */, 'NumpadComma', 110 /* KeyCode.NUMPAD_SEPARATOR */, 'NumPad_Separator', 108, 'VK_SEPARATOR', empty, empty],\n [0, 135 /* ScanCode.IntlRo */, 'IntlRo', 115 /* KeyCode.ABNT_C1 */, 'ABNT_C1', 193, 'VK_ABNT_C1', empty, empty],\n [1, 136 /* ScanCode.KanaMode */, 'KanaMode', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [0, 137 /* ScanCode.IntlYen */, 'IntlYen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 138 /* ScanCode.Convert */, 'Convert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 139 /* ScanCode.NonConvert */, 'NonConvert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 140 /* ScanCode.Lang1 */, 'Lang1', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 141 /* ScanCode.Lang2 */, 'Lang2', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 142 /* ScanCode.Lang3 */, 'Lang3', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 143 /* ScanCode.Lang4 */, 'Lang4', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 144 /* ScanCode.Lang5 */, 'Lang5', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 145 /* ScanCode.Abort */, 'Abort', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 146 /* ScanCode.Props */, 'Props', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 147 /* ScanCode.NumpadParenLeft */, 'NumpadParenLeft', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 148 /* ScanCode.NumpadParenRight */, 'NumpadParenRight', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 149 /* ScanCode.NumpadBackspace */, 'NumpadBackspace', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 150 /* ScanCode.NumpadMemoryStore */, 'NumpadMemoryStore', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 151 /* ScanCode.NumpadMemoryRecall */, 'NumpadMemoryRecall', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 152 /* ScanCode.NumpadMemoryClear */, 'NumpadMemoryClear', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 153 /* ScanCode.NumpadMemoryAdd */, 'NumpadMemoryAdd', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 154 /* ScanCode.NumpadMemorySubtract */, 'NumpadMemorySubtract', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 155 /* ScanCode.NumpadClear */, 'NumpadClear', 131 /* KeyCode.Clear */, 'Clear', 12, 'VK_CLEAR', empty, empty],\n [1, 156 /* ScanCode.NumpadClearEntry */, 'NumpadClearEntry', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 0 /* ScanCode.None */, empty, 5 /* KeyCode.Ctrl */, 'Ctrl', 17, 'VK_CONTROL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 4 /* KeyCode.Shift */, 'Shift', 16, 'VK_SHIFT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 6 /* KeyCode.Alt */, 'Alt', 18, 'VK_MENU', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 57 /* KeyCode.Meta */, 'Meta', 91, 'VK_COMMAND', empty, empty],\n [1, 157 /* ScanCode.ControlLeft */, 'ControlLeft', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_LCONTROL', empty, empty],\n [1, 158 /* ScanCode.ShiftLeft */, 'ShiftLeft', 4 /* KeyCode.Shift */, empty, 0, 'VK_LSHIFT', empty, empty],\n [1, 159 /* ScanCode.AltLeft */, 'AltLeft', 6 /* KeyCode.Alt */, empty, 0, 'VK_LMENU', empty, empty],\n [1, 160 /* ScanCode.MetaLeft */, 'MetaLeft', 57 /* KeyCode.Meta */, empty, 0, 'VK_LWIN', empty, empty],\n [1, 161 /* ScanCode.ControlRight */, 'ControlRight', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_RCONTROL', empty, empty],\n [1, 162 /* ScanCode.ShiftRight */, 'ShiftRight', 4 /* KeyCode.Shift */, empty, 0, 'VK_RSHIFT', empty, empty],\n [1, 163 /* ScanCode.AltRight */, 'AltRight', 6 /* KeyCode.Alt */, empty, 0, 'VK_RMENU', empty, empty],\n [1, 164 /* ScanCode.MetaRight */, 'MetaRight', 57 /* KeyCode.Meta */, empty, 0, 'VK_RWIN', empty, empty],\n [1, 165 /* ScanCode.BrightnessUp */, 'BrightnessUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 166 /* ScanCode.BrightnessDown */, 'BrightnessDown', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 167 /* ScanCode.MediaPlay */, 'MediaPlay', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 168 /* ScanCode.MediaRecord */, 'MediaRecord', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 169 /* ScanCode.MediaFastForward */, 'MediaFastForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 170 /* ScanCode.MediaRewind */, 'MediaRewind', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 171 /* ScanCode.MediaTrackNext */, 'MediaTrackNext', 124 /* KeyCode.MediaTrackNext */, 'MediaTrackNext', 176, 'VK_MEDIA_NEXT_TRACK', empty, empty],\n [1, 172 /* ScanCode.MediaTrackPrevious */, 'MediaTrackPrevious', 125 /* KeyCode.MediaTrackPrevious */, 'MediaTrackPrevious', 177, 'VK_MEDIA_PREV_TRACK', empty, empty],\n [1, 173 /* ScanCode.MediaStop */, 'MediaStop', 126 /* KeyCode.MediaStop */, 'MediaStop', 178, 'VK_MEDIA_STOP', empty, empty],\n [1, 174 /* ScanCode.Eject */, 'Eject', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 175 /* ScanCode.MediaPlayPause */, 'MediaPlayPause', 127 /* KeyCode.MediaPlayPause */, 'MediaPlayPause', 179, 'VK_MEDIA_PLAY_PAUSE', empty, empty],\n [1, 176 /* ScanCode.MediaSelect */, 'MediaSelect', 128 /* KeyCode.LaunchMediaPlayer */, 'LaunchMediaPlayer', 181, 'VK_MEDIA_LAUNCH_MEDIA_SELECT', empty, empty],\n [1, 177 /* ScanCode.LaunchMail */, 'LaunchMail', 129 /* KeyCode.LaunchMail */, 'LaunchMail', 180, 'VK_MEDIA_LAUNCH_MAIL', empty, empty],\n [1, 178 /* ScanCode.LaunchApp2 */, 'LaunchApp2', 130 /* KeyCode.LaunchApp2 */, 'LaunchApp2', 183, 'VK_MEDIA_LAUNCH_APP2', empty, empty],\n [1, 179 /* ScanCode.LaunchApp1 */, 'LaunchApp1', 0 /* KeyCode.Unknown */, empty, 0, 'VK_MEDIA_LAUNCH_APP1', empty, empty],\n [1, 180 /* ScanCode.SelectTask */, 'SelectTask', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 181 /* ScanCode.LaunchScreenSaver */, 'LaunchScreenSaver', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 182 /* ScanCode.BrowserSearch */, 'BrowserSearch', 120 /* KeyCode.BrowserSearch */, 'BrowserSearch', 170, 'VK_BROWSER_SEARCH', empty, empty],\n [1, 183 /* ScanCode.BrowserHome */, 'BrowserHome', 121 /* KeyCode.BrowserHome */, 'BrowserHome', 172, 'VK_BROWSER_HOME', empty, empty],\n [1, 184 /* ScanCode.BrowserBack */, 'BrowserBack', 122 /* KeyCode.BrowserBack */, 'BrowserBack', 166, 'VK_BROWSER_BACK', empty, empty],\n [1, 185 /* ScanCode.BrowserForward */, 'BrowserForward', 123 /* KeyCode.BrowserForward */, 'BrowserForward', 167, 'VK_BROWSER_FORWARD', empty, empty],\n [1, 186 /* ScanCode.BrowserStop */, 'BrowserStop', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_STOP', empty, empty],\n [1, 187 /* ScanCode.BrowserRefresh */, 'BrowserRefresh', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_REFRESH', empty, empty],\n [1, 188 /* ScanCode.BrowserFavorites */, 'BrowserFavorites', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_FAVORITES', empty, empty],\n [1, 189 /* ScanCode.ZoomToggle */, 'ZoomToggle', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 190 /* ScanCode.MailReply */, 'MailReply', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 191 /* ScanCode.MailForward */, 'MailForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n [1, 192 /* ScanCode.MailSend */, 'MailSend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty],\n // See https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n // If an Input Method Editor is processing key input and the event is keydown, return 229.\n [1, 0 /* ScanCode.None */, empty, 114 /* KeyCode.KEY_IN_COMPOSITION */, 'KeyInComposition', 229, empty, empty, empty],\n [1, 0 /* ScanCode.None */, empty, 116 /* KeyCode.ABNT_C2 */, 'ABNT_C2', 194, 'VK_ABNT_C2', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 96 /* KeyCode.OEM_8 */, 'OEM_8', 223, 'VK_OEM_8', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANA', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANGUL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_JUNJA', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_FINAL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANJA', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANJI', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CONVERT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONCONVERT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ACCEPT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_MODECHANGE', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SELECT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PRINT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXECUTE', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SNAPSHOT', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HELP', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_APPS', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PROCESSKEY', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PACKET', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_SBCSCHAR', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_DBCSCHAR', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ATTN', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CRSEL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXSEL', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EREOF', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PLAY', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ZOOM', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONAME', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PA1', empty, empty],\n [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_OEM_CLEAR', empty, empty],\n ];\n const seenKeyCode = [];\n const seenScanCode = [];\n for (const mapping of mappings) {\n const [immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel] = mapping;\n if (!seenScanCode[scanCode]) {\n seenScanCode[scanCode] = true;\n scanCodeIntToStr[scanCode] = scanCodeStr;\n scanCodeStrToInt[scanCodeStr] = scanCode;\n scanCodeLowerCaseStrToInt[scanCodeStr.toLowerCase()] = scanCode;\n if (immutable) {\n IMMUTABLE_CODE_TO_KEY_CODE[scanCode] = keyCode;\n if ((keyCode !== 0 /* KeyCode.Unknown */)\n && (keyCode !== 3 /* KeyCode.Enter */)\n && (keyCode !== 5 /* KeyCode.Ctrl */)\n && (keyCode !== 4 /* KeyCode.Shift */)\n && (keyCode !== 6 /* KeyCode.Alt */)\n && (keyCode !== 57 /* KeyCode.Meta */)) {\n IMMUTABLE_KEY_CODE_TO_CODE[keyCode] = scanCode;\n }\n }\n }\n if (!seenKeyCode[keyCode]) {\n seenKeyCode[keyCode] = true;\n if (!keyCodeStr) {\n throw new Error(`String representation missing for key code ${keyCode} around scan code ${scanCodeStr}`);\n }\n uiMap.define(keyCode, keyCodeStr);\n userSettingsUSMap.define(keyCode, usUserSettingsLabel || keyCodeStr);\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel || usUserSettingsLabel || keyCodeStr);\n }\n if (eventKeyCode) {\n EVENT_KEY_CODE_MAP[eventKeyCode] = keyCode;\n }\n if (vkey) {\n NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE[vkey] = keyCode;\n }\n }\n // Manually added due to the exclusion above (due to duplication with NumpadEnter)\n IMMUTABLE_KEY_CODE_TO_CODE[3 /* KeyCode.Enter */] = 46 /* ScanCode.Enter */;\n})();\nvar KeyCodeUtils;\n(function (KeyCodeUtils) {\n function toString(keyCode) {\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toString = toString;\n function fromString(key) {\n return uiMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromString = fromString;\n function toUserSettingsUS(keyCode) {\n return userSettingsUSMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\n function toUserSettingsGeneral(keyCode) {\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\n function fromUserSettings(key) {\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\n }\n KeyCodeUtils.fromUserSettings = fromUserSettings;\n function toElectronAccelerator(keyCode) {\n if (keyCode >= 98 /* KeyCode.Numpad0 */ && keyCode <= 113 /* KeyCode.NumpadDivide */) {\n // [Electron Accelerators] Electron is able to parse numpad keys, but unfortunately it\n // renders them just as regular keys in menus. For example, num0 is rendered as \"0\",\n // numdiv is rendered as \"/\", numsub is rendered as \"-\".\n //\n // This can lead to incredible confusion, as it makes numpad based keybindings indistinguishable\n // from keybindings based on regular keys.\n //\n // We therefore need to fall back to custom rendering for numpad keys.\n return null;\n }\n switch (keyCode) {\n case 16 /* KeyCode.UpArrow */:\n return 'Up';\n case 18 /* KeyCode.DownArrow */:\n return 'Down';\n case 15 /* KeyCode.LeftArrow */:\n return 'Left';\n case 17 /* KeyCode.RightArrow */:\n return 'Right';\n }\n return uiMap.keyCodeToStr(keyCode);\n }\n KeyCodeUtils.toElectronAccelerator = toElectronAccelerator;\n})(KeyCodeUtils || (KeyCodeUtils = {}));\nfunction KeyChord(firstPart, secondPart) {\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\n return (firstPart | chordPart) >>> 0;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js": +/*!***************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AriaLabelProvider: () => (/* binding */ AriaLabelProvider),\n/* harmony export */ ElectronAcceleratorLabelProvider: () => (/* binding */ ElectronAcceleratorLabelProvider),\n/* harmony export */ ModifierLabelProvider: () => (/* binding */ ModifierLabelProvider),\n/* harmony export */ UILabelProvider: () => (/* binding */ UILabelProvider),\n/* harmony export */ UserSettingsLabelProvider: () => (/* binding */ UserSettingsLabelProvider)\n/* harmony export */ });\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nclass ModifierLabelProvider {\n constructor(mac, windows, linux = windows) {\n this.modifierLabels = [null]; // index 0 will never me accessed.\n this.modifierLabels[2 /* OperatingSystem.Macintosh */] = mac;\n this.modifierLabels[1 /* OperatingSystem.Windows */] = windows;\n this.modifierLabels[3 /* OperatingSystem.Linux */] = linux;\n }\n toLabel(OS, chords, keyLabelProvider) {\n if (chords.length === 0) {\n return null;\n }\n const result = [];\n for (let i = 0, len = chords.length; i < len; i++) {\n const chord = chords[i];\n const keyLabel = keyLabelProvider(chord);\n if (keyLabel === null) {\n // this keybinding cannot be expressed...\n return null;\n }\n result[i] = _simpleAsString(chord, keyLabel, this.modifierLabels[OS]);\n }\n return result.join(' ');\n }\n}\n/**\n * A label provider that prints modifiers in a suitable format for displaying in the UI.\n */\nconst UILabelProvider = new ModifierLabelProvider({\n ctrlKey: '\\u2303',\n shiftKey: '⇧',\n altKey: '⌥',\n metaKey: '⌘',\n separator: '',\n}, {\n ctrlKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\n shiftKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'windowsKey', comment: ['This is the short form for the Windows key on the keyboard'] }, \"Windows\"),\n separator: '+',\n}, {\n ctrlKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\n shiftKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'superKey', comment: ['This is the short form for the Super key on the keyboard'] }, \"Super\"),\n separator: '+',\n});\n/**\n * A label provider that prints modifiers in a suitable format for ARIA.\n */\nconst AriaLabelProvider = new ModifierLabelProvider({\n ctrlKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\n shiftKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'optKey.long', comment: ['This is the long form for the Alt/Option key on the keyboard'] }, \"Option\"),\n metaKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'cmdKey.long', comment: ['This is the long form for the Command key on the keyboard'] }, \"Command\"),\n separator: '+',\n}, {\n ctrlKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\n shiftKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'windowsKey.long', comment: ['This is the long form for the Windows key on the keyboard'] }, \"Windows\"),\n separator: '+',\n}, {\n ctrlKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\n shiftKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\n altKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\n metaKey: _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'superKey.long', comment: ['This is the long form for the Super key on the keyboard'] }, \"Super\"),\n separator: '+',\n});\n/**\n * A label provider that prints modifiers in a suitable format for Electron Accelerators.\n * See https://github.com/electron/electron/blob/master/docs/api/accelerator.md\n */\nconst ElectronAcceleratorLabelProvider = new ModifierLabelProvider({\n ctrlKey: 'Ctrl',\n shiftKey: 'Shift',\n altKey: 'Alt',\n metaKey: 'Cmd',\n separator: '+',\n}, {\n ctrlKey: 'Ctrl',\n shiftKey: 'Shift',\n altKey: 'Alt',\n metaKey: 'Super',\n separator: '+',\n});\n/**\n * A label provider that prints modifiers in a suitable format for user settings.\n */\nconst UserSettingsLabelProvider = new ModifierLabelProvider({\n ctrlKey: 'ctrl',\n shiftKey: 'shift',\n altKey: 'alt',\n metaKey: 'cmd',\n separator: '+',\n}, {\n ctrlKey: 'ctrl',\n shiftKey: 'shift',\n altKey: 'alt',\n metaKey: 'win',\n separator: '+',\n}, {\n ctrlKey: 'ctrl',\n shiftKey: 'shift',\n altKey: 'alt',\n metaKey: 'meta',\n separator: '+',\n});\nfunction _simpleAsString(modifiers, key, labels) {\n if (key === null) {\n return '';\n }\n const result = [];\n // translate modifier keys: Ctrl-Shift-Alt-Meta\n if (modifiers.ctrlKey) {\n result.push(labels.ctrlKey);\n }\n if (modifiers.shiftKey) {\n result.push(labels.shiftKey);\n }\n if (modifiers.altKey) {\n result.push(labels.altKey);\n }\n if (modifiers.metaKey) {\n result.push(labels.metaKey);\n }\n // the actual key\n if (key !== '') {\n result.push(key);\n }\n return result.join(labels.separator);\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/keybindings.js": +/*!**********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/keybindings.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ KeyCodeChord: () => (/* binding */ KeyCodeChord),\n/* harmony export */ Keybinding: () => (/* binding */ Keybinding),\n/* harmony export */ ResolvedChord: () => (/* binding */ ResolvedChord),\n/* harmony export */ ResolvedKeybinding: () => (/* binding */ ResolvedKeybinding),\n/* harmony export */ ScanCodeChord: () => (/* binding */ ScanCodeChord),\n/* harmony export */ createSimpleKeybinding: () => (/* binding */ createSimpleKeybinding),\n/* harmony export */ decodeKeybinding: () => (/* binding */ decodeKeybinding)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction decodeKeybinding(keybinding, OS) {\n if (typeof keybinding === 'number') {\n if (keybinding === 0) {\n return null;\n }\n const firstChord = (keybinding & 0x0000FFFF) >>> 0;\n const secondChord = (keybinding & 0xFFFF0000) >>> 16;\n if (secondChord !== 0) {\n return new Keybinding([\n createSimpleKeybinding(firstChord, OS),\n createSimpleKeybinding(secondChord, OS)\n ]);\n }\n return new Keybinding([createSimpleKeybinding(firstChord, OS)]);\n }\n else {\n const chords = [];\n for (let i = 0; i < keybinding.length; i++) {\n chords.push(createSimpleKeybinding(keybinding[i], OS));\n }\n return new Keybinding(chords);\n }\n}\nfunction createSimpleKeybinding(keybinding, OS) {\n const ctrlCmd = (keybinding & 2048 /* BinaryKeybindingsMask.CtrlCmd */ ? true : false);\n const winCtrl = (keybinding & 256 /* BinaryKeybindingsMask.WinCtrl */ ? true : false);\n const ctrlKey = (OS === 2 /* OperatingSystem.Macintosh */ ? winCtrl : ctrlCmd);\n const shiftKey = (keybinding & 1024 /* BinaryKeybindingsMask.Shift */ ? true : false);\n const altKey = (keybinding & 512 /* BinaryKeybindingsMask.Alt */ ? true : false);\n const metaKey = (OS === 2 /* OperatingSystem.Macintosh */ ? ctrlCmd : winCtrl);\n const keyCode = (keybinding & 255 /* BinaryKeybindingsMask.KeyCode */);\n return new KeyCodeChord(ctrlKey, shiftKey, altKey, metaKey, keyCode);\n}\n/**\n * Represents a chord which uses the `keyCode` field of keyboard events.\n * A chord is a combination of keys pressed simultaneously.\n */\nclass KeyCodeChord {\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\n this.ctrlKey = ctrlKey;\n this.shiftKey = shiftKey;\n this.altKey = altKey;\n this.metaKey = metaKey;\n this.keyCode = keyCode;\n }\n equals(other) {\n return (other instanceof KeyCodeChord\n && this.ctrlKey === other.ctrlKey\n && this.shiftKey === other.shiftKey\n && this.altKey === other.altKey\n && this.metaKey === other.metaKey\n && this.keyCode === other.keyCode);\n }\n isModifierKey() {\n return (this.keyCode === 0 /* KeyCode.Unknown */\n || this.keyCode === 5 /* KeyCode.Ctrl */\n || this.keyCode === 57 /* KeyCode.Meta */\n || this.keyCode === 6 /* KeyCode.Alt */\n || this.keyCode === 4 /* KeyCode.Shift */);\n }\n /**\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\n */\n isDuplicateModifierCase() {\n return ((this.ctrlKey && this.keyCode === 5 /* KeyCode.Ctrl */)\n || (this.shiftKey && this.keyCode === 4 /* KeyCode.Shift */)\n || (this.altKey && this.keyCode === 6 /* KeyCode.Alt */)\n || (this.metaKey && this.keyCode === 57 /* KeyCode.Meta */));\n }\n}\n/**\n * Represents a chord which uses the `code` field of keyboard events.\n * A chord is a combination of keys pressed simultaneously.\n */\nclass ScanCodeChord {\n constructor(ctrlKey, shiftKey, altKey, metaKey, scanCode) {\n this.ctrlKey = ctrlKey;\n this.shiftKey = shiftKey;\n this.altKey = altKey;\n this.metaKey = metaKey;\n this.scanCode = scanCode;\n }\n /**\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\n */\n isDuplicateModifierCase() {\n return ((this.ctrlKey && (this.scanCode === 157 /* ScanCode.ControlLeft */ || this.scanCode === 161 /* ScanCode.ControlRight */))\n || (this.shiftKey && (this.scanCode === 158 /* ScanCode.ShiftLeft */ || this.scanCode === 162 /* ScanCode.ShiftRight */))\n || (this.altKey && (this.scanCode === 159 /* ScanCode.AltLeft */ || this.scanCode === 163 /* ScanCode.AltRight */))\n || (this.metaKey && (this.scanCode === 160 /* ScanCode.MetaLeft */ || this.scanCode === 164 /* ScanCode.MetaRight */)));\n }\n}\n/**\n * A keybinding is a sequence of chords.\n */\nclass Keybinding {\n constructor(chords) {\n if (chords.length === 0) {\n throw (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.illegalArgument)(`chords`);\n }\n this.chords = chords;\n }\n}\nclass ResolvedChord {\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyLabel, keyAriaLabel) {\n this.ctrlKey = ctrlKey;\n this.shiftKey = shiftKey;\n this.altKey = altKey;\n this.metaKey = metaKey;\n this.keyLabel = keyLabel;\n this.keyAriaLabel = keyAriaLabel;\n }\n}\n/**\n * A resolved keybinding. Consists of one or multiple chords.\n */\nclass ResolvedKeybinding {\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/keybindings.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/labels.js": +/*!*****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/labels.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ normalizeDriveLetter: () => (/* binding */ normalizeDriveLetter)\n/* harmony export */ });\n/* harmony import */ var _extpath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./extpath.js */ \"./node_modules/monaco-editor/esm/vs/base/common/extpath.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n\n\nfunction normalizeDriveLetter(path, isWindowsOS = _platform_js__WEBPACK_IMPORTED_MODULE_1__.isWindows) {\n if ((0,_extpath_js__WEBPACK_IMPORTED_MODULE_0__.hasDriveLetter)(path, isWindowsOS)) {\n return path.charAt(0).toUpperCase() + path.slice(1);\n }\n return path;\n}\nlet normalizedUserHomeCached = Object.create(null);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/labels.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/lazy.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/lazy.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Lazy: () => (/* binding */ Lazy)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass Lazy {\n constructor(executor) {\n this.executor = executor;\n this._didRun = false;\n }\n /**\n * Get the wrapped value.\n *\n * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only\n * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value\n */\n get value() {\n if (!this._didRun) {\n try {\n this._value = this.executor();\n }\n catch (err) {\n this._error = err;\n }\n finally {\n this._didRun = true;\n }\n }\n if (this._error) {\n throw this._error;\n }\n return this._value;\n }\n /**\n * Get the wrapped value without forcing evaluation.\n */\n get rawValue() { return this._value; }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/lazy.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js": +/*!********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Disposable: () => (/* binding */ Disposable),\n/* harmony export */ DisposableMap: () => (/* binding */ DisposableMap),\n/* harmony export */ DisposableStore: () => (/* binding */ DisposableStore),\n/* harmony export */ ImmortalReference: () => (/* binding */ ImmortalReference),\n/* harmony export */ MutableDisposable: () => (/* binding */ MutableDisposable),\n/* harmony export */ RefCountedDisposable: () => (/* binding */ RefCountedDisposable),\n/* harmony export */ combinedDisposable: () => (/* binding */ combinedDisposable),\n/* harmony export */ dispose: () => (/* binding */ dispose),\n/* harmony export */ isDisposable: () => (/* binding */ isDisposable),\n/* harmony export */ markAsSingleton: () => (/* binding */ markAsSingleton),\n/* harmony export */ setDisposableTracker: () => (/* binding */ setDisposableTracker),\n/* harmony export */ toDisposable: () => (/* binding */ toDisposable)\n/* harmony export */ });\n/* harmony import */ var _functional_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./functional.js */ \"./node_modules/monaco-editor/esm/vs/base/common/functional.js\");\n/* harmony import */ var _iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./iterator.js */ \"./node_modules/monaco-editor/esm/vs/base/common/iterator.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n// #region Disposable Tracking\n/**\n * Enables logging of potentially leaked disposables.\n *\n * A disposable is considered leaked if it is not disposed or not registered as the child of\n * another disposable. This tracking is very simple an only works for classes that either\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\n */\nconst TRACK_DISPOSABLES = false;\nlet disposableTracker = null;\nfunction setDisposableTracker(tracker) {\n disposableTracker = tracker;\n}\nif (TRACK_DISPOSABLES) {\n const __is_disposable_tracked__ = '__is_disposable_tracked__';\n setDisposableTracker(new class {\n trackDisposable(x) {\n const stack = new Error('Potentially leaked disposable').stack;\n setTimeout(() => {\n if (!x[__is_disposable_tracked__]) {\n console.log(stack);\n }\n }, 3000);\n }\n setParent(child, parent) {\n if (child && child !== Disposable.None) {\n try {\n child[__is_disposable_tracked__] = true;\n }\n catch (_a) {\n // noop\n }\n }\n }\n markAsDisposed(disposable) {\n if (disposable && disposable !== Disposable.None) {\n try {\n disposable[__is_disposable_tracked__] = true;\n }\n catch (_a) {\n // noop\n }\n }\n }\n markAsSingleton(disposable) { }\n });\n}\nfunction trackDisposable(x) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.trackDisposable(x);\n return x;\n}\nfunction markAsDisposed(disposable) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsDisposed(disposable);\n}\nfunction setParentOfDisposable(child, parent) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.setParent(child, parent);\n}\nfunction setParentOfDisposables(children, parent) {\n if (!disposableTracker) {\n return;\n }\n for (const child of children) {\n disposableTracker.setParent(child, parent);\n }\n}\n/**\n * Indicates that the given object is a singleton which does not need to be disposed.\n*/\nfunction markAsSingleton(singleton) {\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsSingleton(singleton);\n return singleton;\n}\n/**\n * Check if `thing` is {@link IDisposable disposable}.\n */\nfunction isDisposable(thing) {\n return typeof thing.dispose === 'function' && thing.dispose.length === 0;\n}\nfunction dispose(arg) {\n if (_iterator_js__WEBPACK_IMPORTED_MODULE_1__.Iterable.is(arg)) {\n const errors = [];\n for (const d of arg) {\n if (d) {\n try {\n d.dispose();\n }\n catch (e) {\n errors.push(e);\n }\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n }\n else if (errors.length > 1) {\n throw new AggregateError(errors, 'Encountered errors while disposing of store');\n }\n return Array.isArray(arg) ? [] : arg;\n }\n else if (arg) {\n arg.dispose();\n return arg;\n }\n}\n/**\n * Combine multiple disposable values into a single {@link IDisposable}.\n */\nfunction combinedDisposable(...disposables) {\n const parent = toDisposable(() => dispose(disposables));\n setParentOfDisposables(disposables, parent);\n return parent;\n}\n/**\n * Turn a function that implements dispose into an {@link IDisposable}.\n *\n * @param fn Clean up function, guaranteed to be called only **once**.\n */\nfunction toDisposable(fn) {\n const self = trackDisposable({\n dispose: (0,_functional_js__WEBPACK_IMPORTED_MODULE_0__.once)(() => {\n markAsDisposed(self);\n fn();\n })\n });\n return self;\n}\n/**\n * Manages a collection of disposable values.\n *\n * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an\n * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a\n * store that has already been disposed of.\n */\nclass DisposableStore {\n constructor() {\n this._toDispose = new Set();\n this._isDisposed = false;\n trackDisposable(this);\n }\n /**\n * Dispose of all registered disposables and mark this object as disposed.\n *\n * Any future disposables added to this object will be disposed of on `add`.\n */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n markAsDisposed(this);\n this._isDisposed = true;\n this.clear();\n }\n /**\n * @return `true` if this object has been disposed of.\n */\n get isDisposed() {\n return this._isDisposed;\n }\n /**\n * Dispose of all registered disposables but do not mark this object as disposed.\n */\n clear() {\n if (this._toDispose.size === 0) {\n return;\n }\n try {\n dispose(this._toDispose);\n }\n finally {\n this._toDispose.clear();\n }\n }\n /**\n * Add a new {@link IDisposable disposable} to the collection.\n */\n add(o) {\n if (!o) {\n return o;\n }\n if (o === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n setParentOfDisposable(o, this);\n if (this._isDisposed) {\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\n }\n }\n else {\n this._toDispose.add(o);\n }\n return o;\n }\n}\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\n/**\n * Abstract base class for a {@link IDisposable disposable} object.\n *\n * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of.\n */\nclass Disposable {\n constructor() {\n this._store = new DisposableStore();\n trackDisposable(this);\n setParentOfDisposable(this._store, this);\n }\n dispose() {\n markAsDisposed(this);\n this._store.dispose();\n }\n /**\n * Adds `o` to the collection of disposables managed by this object.\n */\n _register(o) {\n if (o === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n return this._store.add(o);\n }\n}\n/**\n * A disposable that does nothing when it is disposed of.\n *\n * TODO: This should not be a static property.\n */\nDisposable.None = Object.freeze({ dispose() { } });\n/**\n * Manages the lifecycle of a disposable value that may be changed.\n *\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\n */\nclass MutableDisposable {\n constructor() {\n this._isDisposed = false;\n trackDisposable(this);\n }\n get value() {\n return this._isDisposed ? undefined : this._value;\n }\n set value(value) {\n var _a;\n if (this._isDisposed || value === this._value) {\n return;\n }\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\n if (value) {\n setParentOfDisposable(value, this);\n }\n this._value = value;\n }\n /**\n * Resets the stored value and disposed of the previously stored value.\n */\n clear() {\n this.value = undefined;\n }\n dispose() {\n var _a;\n this._isDisposed = true;\n markAsDisposed(this);\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\n this._value = undefined;\n }\n}\nclass RefCountedDisposable {\n constructor(_disposable) {\n this._disposable = _disposable;\n this._counter = 1;\n }\n acquire() {\n this._counter++;\n return this;\n }\n release() {\n if (--this._counter === 0) {\n this._disposable.dispose();\n }\n return this;\n }\n}\nclass ImmortalReference {\n constructor(object) {\n this.object = object;\n }\n dispose() { }\n}\n/**\n * A map the manages the lifecycle of the values that it stores.\n */\nclass DisposableMap {\n constructor() {\n this._store = new Map();\n this._isDisposed = false;\n trackDisposable(this);\n }\n /**\n * Disposes of all stored values and mark this object as disposed.\n *\n * Trying to use this object after it has been disposed of is an error.\n */\n dispose() {\n markAsDisposed(this);\n this._isDisposed = true;\n this.clearAndDisposeAll();\n }\n /**\n * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed.\n */\n clearAndDisposeAll() {\n if (!this._store.size) {\n return;\n }\n try {\n dispose(this._store.values());\n }\n finally {\n this._store.clear();\n }\n }\n get(key) {\n return this._store.get(key);\n }\n set(key, value, skipDisposeOnOverwrite = false) {\n var _a;\n if (this._isDisposed) {\n console.warn(new Error('Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!').stack);\n }\n if (!skipDisposeOnOverwrite) {\n (_a = this._store.get(key)) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n this._store.set(key, value);\n }\n /**\n * Delete the value stored for `key` from this map and also dispose of it.\n */\n deleteAndDispose(key) {\n var _a;\n (_a = this._store.get(key)) === null || _a === void 0 ? void 0 : _a.dispose();\n this._store.delete(key);\n }\n [Symbol.iterator]() {\n return this._store[Symbol.iterator]();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/linkedList.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/linkedList.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LinkedList: () => (/* binding */ LinkedList)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass Node {\n constructor(element) {\n this.element = element;\n this.next = Node.Undefined;\n this.prev = Node.Undefined;\n }\n}\nNode.Undefined = new Node(undefined);\nclass LinkedList {\n constructor() {\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n get size() {\n return this._size;\n }\n isEmpty() {\n return this._first === Node.Undefined;\n }\n clear() {\n let node = this._first;\n while (node !== Node.Undefined) {\n const next = node.next;\n node.prev = Node.Undefined;\n node.next = Node.Undefined;\n node = next;\n }\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n this._size = 0;\n }\n unshift(element) {\n return this._insert(element, false);\n }\n push(element) {\n return this._insert(element, true);\n }\n _insert(element, atTheEnd) {\n const newNode = new Node(element);\n if (this._first === Node.Undefined) {\n this._first = newNode;\n this._last = newNode;\n }\n else if (atTheEnd) {\n // push\n const oldLast = this._last;\n this._last = newNode;\n newNode.prev = oldLast;\n oldLast.next = newNode;\n }\n else {\n // unshift\n const oldFirst = this._first;\n this._first = newNode;\n newNode.next = oldFirst;\n oldFirst.prev = newNode;\n }\n this._size += 1;\n let didRemove = false;\n return () => {\n if (!didRemove) {\n didRemove = true;\n this._remove(newNode);\n }\n };\n }\n shift() {\n if (this._first === Node.Undefined) {\n return undefined;\n }\n else {\n const res = this._first.element;\n this._remove(this._first);\n return res;\n }\n }\n pop() {\n if (this._last === Node.Undefined) {\n return undefined;\n }\n else {\n const res = this._last.element;\n this._remove(this._last);\n return res;\n }\n }\n _remove(node) {\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\n // middle\n const anchor = node.prev;\n anchor.next = node.next;\n node.next.prev = anchor;\n }\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\n // only node\n this._first = Node.Undefined;\n this._last = Node.Undefined;\n }\n else if (node.next === Node.Undefined) {\n // last\n this._last = this._last.prev;\n this._last.next = Node.Undefined;\n }\n else if (node.prev === Node.Undefined) {\n // first\n this._first = this._first.next;\n this._first.prev = Node.Undefined;\n }\n // done\n this._size -= 1;\n }\n *[Symbol.iterator]() {\n let node = this._first;\n while (node !== Node.Undefined) {\n yield node.element;\n node = node.next;\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/linkedList.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/linkedText.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/linkedText.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LinkedText: () => (/* binding */ LinkedText),\n/* harmony export */ parseLinkedText: () => (/* binding */ parseLinkedText)\n/* harmony export */ });\n/* harmony import */ var _decorators_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decorators.js */ \"./node_modules/monaco-editor/esm/vs/base/common/decorators.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\nclass LinkedText {\n constructor(nodes) {\n this.nodes = nodes;\n }\n toString() {\n return this.nodes.map(node => typeof node === 'string' ? node : node.label).join('');\n }\n}\n__decorate([\n _decorators_js__WEBPACK_IMPORTED_MODULE_0__.memoize\n], LinkedText.prototype, \"toString\", null);\nconst LINK_REGEX = /\\[([^\\]]+)\\]\\(((?:https?:\\/\\/|command:|file:)[^\\)\\s]+)(?: ([\"'])(.+?)(\\3))?\\)/gi;\nfunction parseLinkedText(text) {\n const result = [];\n let index = 0;\n let match;\n while (match = LINK_REGEX.exec(text)) {\n if (match.index - index > 0) {\n result.push(text.substring(index, match.index));\n }\n const [, label, href, , title] = match;\n if (title) {\n result.push({ label, href, title });\n }\n else {\n result.push({ label, href });\n }\n index = match.index + match[0].length;\n }\n if (index < text.length) {\n result.push(text.substring(index));\n }\n return new LinkedText(result);\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/linkedText.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/map.js": +/*!**************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/map.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LRUCache: () => (/* binding */ LRUCache),\n/* harmony export */ LinkedMap: () => (/* binding */ LinkedMap),\n/* harmony export */ ResourceMap: () => (/* binding */ ResourceMap)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a, _b;\nclass ResourceMapEntry {\n constructor(uri, value) {\n this.uri = uri;\n this.value = value;\n }\n}\nclass ResourceMap {\n constructor(mapOrKeyFn, toKey) {\n this[_a] = 'ResourceMap';\n if (mapOrKeyFn instanceof ResourceMap) {\n this.map = new Map(mapOrKeyFn.map);\n this.toKey = toKey !== null && toKey !== void 0 ? toKey : ResourceMap.defaultToKey;\n }\n else {\n this.map = new Map();\n this.toKey = mapOrKeyFn !== null && mapOrKeyFn !== void 0 ? mapOrKeyFn : ResourceMap.defaultToKey;\n }\n }\n set(resource, value) {\n this.map.set(this.toKey(resource), new ResourceMapEntry(resource, value));\n return this;\n }\n get(resource) {\n var _c;\n return (_c = this.map.get(this.toKey(resource))) === null || _c === void 0 ? void 0 : _c.value;\n }\n has(resource) {\n return this.map.has(this.toKey(resource));\n }\n get size() {\n return this.map.size;\n }\n clear() {\n this.map.clear();\n }\n delete(resource) {\n return this.map.delete(this.toKey(resource));\n }\n forEach(clb, thisArg) {\n if (typeof thisArg !== 'undefined') {\n clb = clb.bind(thisArg);\n }\n for (const [_, entry] of this.map) {\n clb(entry.value, entry.uri, this);\n }\n }\n *values() {\n for (const entry of this.map.values()) {\n yield entry.value;\n }\n }\n *keys() {\n for (const entry of this.map.values()) {\n yield entry.uri;\n }\n }\n *entries() {\n for (const entry of this.map.values()) {\n yield [entry.uri, entry.value];\n }\n }\n *[(_a = Symbol.toStringTag, Symbol.iterator)]() {\n for (const [, entry] of this.map) {\n yield [entry.uri, entry.value];\n }\n }\n}\nResourceMap.defaultToKey = (resource) => resource.toString();\nclass LinkedMap {\n constructor() {\n this[_b] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n var _c;\n return (_c = this._head) === null || _c === void 0 ? void 0 : _c.value;\n }\n get last() {\n var _c;\n return (_c = this._tail) === null || _c === void 0 ? void 0 : _c.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = 0 /* Touch.None */) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== 0 /* Touch.None */) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = 0 /* Touch.None */) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== 0 /* Touch.None */) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case 0 /* Touch.None */:\n this.addItemLast(item);\n break;\n case 1 /* Touch.AsOld */:\n this.addItemFirst(item);\n break;\n case 2 /* Touch.AsNew */:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const map = this;\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]() {\n return iterator;\n },\n next() {\n if (map._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_b = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happen if size === 1 which is handled\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happen if size === 1 which is handled\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== 1 /* Touch.AsOld */ && touch !== 2 /* Touch.AsNew */)) {\n return;\n }\n if (touch === 1 /* Touch.AsOld */) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === 2 /* Touch.AsNew */) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nclass LRUCache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get(key, touch = 2 /* Touch.AsNew */) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, 0 /* Touch.None */);\n }\n set(key, value) {\n super.set(key, value, 2 /* Touch.AsNew */);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/map.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/marked/marked.js": +/*!************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/marked/marked.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Lexer: () => (/* binding */ Lexer),\n/* harmony export */ Parser: () => (/* binding */ Parser),\n/* harmony export */ Renderer: () => (/* binding */ Renderer),\n/* harmony export */ Slugger: () => (/* binding */ Slugger),\n/* harmony export */ TextRenderer: () => (/* binding */ TextRenderer),\n/* harmony export */ Tokenizer: () => (/* binding */ Tokenizer),\n/* harmony export */ getDefaults: () => (/* binding */ getDefaults),\n/* harmony export */ lexer: () => (/* binding */ lexer),\n/* harmony export */ marked: () => (/* binding */ marked),\n/* harmony export */ options: () => (/* binding */ options),\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ parseInline: () => (/* binding */ parseInline),\n/* harmony export */ parser: () => (/* binding */ parser),\n/* harmony export */ setOptions: () => (/* binding */ setOptions),\n/* harmony export */ use: () => (/* binding */ use),\n/* harmony export */ walkTokens: () => (/* binding */ walkTokens)\n/* harmony export */ });\n/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n// ESM-uncomment-begin\nlet __marked_exports = {};\n(function() {\n function define(deps, factory) {\n factory(__marked_exports);\n }\n define.amd = true;\n// ESM-uncomment-end\n\n (function (global, factory) {\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n typeof exports === 'object' && \"object\" !== 'undefined' ? factory(exports) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n exports.defaults = getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n /**\n * @param {string} html\n */\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n var caret = /(^|[^\\[])\\^/g;\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n /**\n * @param {string} base\n * @param {string} href\n */\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n var noopTest = {\n exec: function noopTest() {}\n };\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n /**\n * @param {string} pattern\n * @param {number} count\n */\n\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); // Check if current bullet point can start a new List Item\n\n while (src) {\n endEarly = false;\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:```|~~~)\");\n var headingBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}#\"); // Check if following lines should be included in List Item\n\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine; // Re-align to follow commonmark nesting rules\n\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found code fences\n\n\n if (fencesBeginRegex.test(line)) {\n break;\n } // End list item if found start of new heading\n\n\n if (headingBeginRegex.test(line)) {\n break;\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(line)) {\n break;\n } // Horizontal rule found\n\n\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) {\n // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else {\n // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.every(function (t) {\n var chars = t.raw.split('');\n var lineBreaks = 0;\n\n for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {\n var _char = _step.value;\n\n if (_char === '\\n') {\n lineBreaks += 1;\n }\n\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n };\n\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = src.slice(1, lLength + match.index + rLength);\n\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: _text,\n tokens: this.lexer.inlineTokens(_text)\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n /**\n * Renderer\n */\n\n var Renderer = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '

' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n /**\n * @param {string} quote\n */\n ;\n\n _proto.blockquote = function blockquote(quote) {\n return \"
\\n\" + quote + \"
\\n\";\n };\n\n _proto.html = function html(_html) {\n return _html;\n }\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n ;\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n } // ignore IDs\n\n\n return \"\" + text + \"\\n\";\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n /**\n * @param {string} header\n * @param {string} body\n */\n ;\n\n _proto.table = function table(header, body) {\n if (body) body = \"\" + body + \"\";\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n /**\n * @param {string} content\n */\n ;\n\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n /**\n * span level renderer\n * @param {string} text\n */\n ;\n\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = \"\\\"\"' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * @param {string} value\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n /**\n * Parsing & Compiling\n */\n\n var Parser = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n function onError(e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n if (opt.async) {\n return Promise.all(marked.walkTokens(_tokens, opt.walkTokens)).then(function () {\n return Parser.parse(_tokens, opt);\n })[\"catch\"](onError);\n }\n\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n onError(e);\n }\n }\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n var values = [];\n values.push(pack.walkTokens.call(this, token));\n\n if (_walkTokens) {\n values = values.concat(_walkTokens.call(this, token));\n }\n\n return values;\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var values = [];\n\n var _loop3 = function _loop3() {\n var token = _step.value;\n values = values.concat(callback.call(marked, token));\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n values = values.concat(marked.walkTokens(_cell.tokens, callback));\n }\n }\n\n break;\n }\n\n case 'list':\n {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n\n return values;\n };\n /**\n * Parse Inline\n * @param {string} src\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n\n// ESM-uncomment-begin\n})();\nvar Lexer = (__marked_exports.Lexer || exports.Lexer);\nvar Parser = (__marked_exports.Parser || exports.Parser);\nvar Renderer = (__marked_exports.Renderer || exports.Renderer);\nvar Slugger = (__marked_exports.Slugger || exports.Slugger);\nvar TextRenderer = (__marked_exports.TextRenderer || exports.TextRenderer);\nvar Tokenizer = (__marked_exports.Tokenizer || exports.Tokenizer);\nvar getDefaults = (__marked_exports.getDefaults || exports.getDefaults);\nvar lexer = (__marked_exports.lexer || exports.lexer);\nvar marked = (__marked_exports.marked || exports.marked);\nvar options = (__marked_exports.options || exports.options);\nvar parse = (__marked_exports.parse || exports.parse);\nvar parseInline = (__marked_exports.parseInline || exports.parseInline);\nvar parser = (__marked_exports.parser || exports.parser);\nvar setOptions = (__marked_exports.setOptions || exports.setOptions);\nvar use = (__marked_exports.use || exports.use);\nvar walkTokens = (__marked_exports.walkTokens || exports.walkTokens);\n// ESM-uncomment-end\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/marked/marked.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/marshalling.js": +/*!**********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/marshalling.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ revive: () => (/* binding */ revive),\n/* harmony export */ stringify: () => (/* binding */ stringify)\n/* harmony export */ });\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buffer.js */ \"./node_modules/monaco-editor/esm/vs/base/common/buffer.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/* harmony import */ var _uri_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uri.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uri.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nfunction stringify(obj) {\n return JSON.stringify(obj, replacer);\n}\nfunction parse(text) {\n let data = JSON.parse(text);\n data = revive(data);\n return data;\n}\nfunction replacer(key, value) {\n // URI is done via toJSON-member\n if (value instanceof RegExp) {\n return {\n $mid: 2 /* MarshalledId.Regexp */,\n source: value.source,\n flags: (0,_strings_js__WEBPACK_IMPORTED_MODULE_1__.regExpFlags)(value),\n };\n }\n return value;\n}\nfunction revive(obj, depth = 0) {\n if (!obj || depth > 200) {\n return obj;\n }\n if (typeof obj === 'object') {\n switch (obj.$mid) {\n case 1 /* MarshalledId.Uri */: return _uri_js__WEBPACK_IMPORTED_MODULE_2__.URI.revive(obj);\n case 2 /* MarshalledId.Regexp */: return new RegExp(obj.source, obj.flags);\n case 16 /* MarshalledId.Date */: return new Date(obj.source);\n }\n if (obj instanceof _buffer_js__WEBPACK_IMPORTED_MODULE_0__.VSBuffer\n || obj instanceof Uint8Array) {\n return obj;\n }\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; ++i) {\n obj[i] = revive(obj[i], depth + 1);\n }\n }\n else {\n // walk object\n for (const key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n obj[key] = revive(obj[key], depth + 1);\n }\n }\n }\n }\n return obj;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/marshalling.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/mime.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/mime.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Mimes: () => (/* binding */ Mimes)\n/* harmony export */ });\nconst Mimes = Object.freeze({\n text: 'text/plain',\n binary: 'application/octet-stream',\n unknown: 'application/unknown',\n markdown: 'text/markdown',\n latex: 'text/latex',\n uriList: 'text/uri-list',\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/mime.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/navigator.js": +/*!********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/navigator.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ArrayNavigator: () => (/* binding */ ArrayNavigator)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass ArrayNavigator {\n constructor(items, start = 0, end = items.length, index = start - 1) {\n this.items = items;\n this.start = start;\n this.end = end;\n this.index = index;\n }\n current() {\n if (this.index === this.start - 1 || this.index === this.end) {\n return null;\n }\n return this.items[this.index];\n }\n next() {\n this.index = Math.min(this.index + 1, this.end);\n return this.current();\n }\n previous() {\n this.index = Math.max(this.index - 1, this.start - 1);\n return this.current();\n }\n first() {\n this.index = this.start;\n return this.current();\n }\n last() {\n this.index = this.end - 1;\n return this.current();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/navigator.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/network.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/network.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COI: () => (/* binding */ COI),\n/* harmony export */ FileAccess: () => (/* binding */ FileAccess),\n/* harmony export */ RemoteAuthorities: () => (/* binding */ RemoteAuthorities),\n/* harmony export */ Schemas: () => (/* binding */ Schemas),\n/* harmony export */ connectionTokenQueryName: () => (/* binding */ connectionTokenQueryName)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _uri_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uri.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uri.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nvar Schemas;\n(function (Schemas) {\n /**\n * A schema that is used for models that exist in memory\n * only and that have no correspondence on a server or such.\n */\n Schemas.inMemory = 'inmemory';\n /**\n * A schema that is used for setting files\n */\n Schemas.vscode = 'vscode';\n /**\n * A schema that is used for internal private files\n */\n Schemas.internal = 'private';\n /**\n * A walk-through document.\n */\n Schemas.walkThrough = 'walkThrough';\n /**\n * An embedded code snippet.\n */\n Schemas.walkThroughSnippet = 'walkThroughSnippet';\n Schemas.http = 'http';\n Schemas.https = 'https';\n Schemas.file = 'file';\n Schemas.mailto = 'mailto';\n Schemas.untitled = 'untitled';\n Schemas.data = 'data';\n Schemas.command = 'command';\n Schemas.vscodeRemote = 'vscode-remote';\n Schemas.vscodeRemoteResource = 'vscode-remote-resource';\n Schemas.vscodeManagedRemoteResource = 'vscode-managed-remote-resource';\n Schemas.vscodeUserData = 'vscode-userdata';\n Schemas.vscodeCustomEditor = 'vscode-custom-editor';\n Schemas.vscodeNotebookCell = 'vscode-notebook-cell';\n Schemas.vscodeNotebookCellMetadata = 'vscode-notebook-cell-metadata';\n Schemas.vscodeNotebookCellOutput = 'vscode-notebook-cell-output';\n Schemas.vscodeInteractiveInput = 'vscode-interactive-input';\n Schemas.vscodeSettings = 'vscode-settings';\n Schemas.vscodeWorkspaceTrust = 'vscode-workspace-trust';\n Schemas.vscodeTerminal = 'vscode-terminal';\n Schemas.vscodeChatSesssion = 'vscode-chat-editor';\n /**\n * Scheme used internally for webviews that aren't linked to a resource (i.e. not custom editors)\n */\n Schemas.webviewPanel = 'webview-panel';\n /**\n * Scheme used for loading the wrapper html and script in webviews.\n */\n Schemas.vscodeWebview = 'vscode-webview';\n /**\n * Scheme used for extension pages\n */\n Schemas.extension = 'extension';\n /**\n * Scheme used as a replacement of `file` scheme to load\n * files with our custom protocol handler (desktop only).\n */\n Schemas.vscodeFileResource = 'vscode-file';\n /**\n * Scheme used for temporary resources\n */\n Schemas.tmp = 'tmp';\n /**\n * Scheme used vs live share\n */\n Schemas.vsls = 'vsls';\n /**\n * Scheme used for the Source Control commit input's text document\n */\n Schemas.vscodeSourceControl = 'vscode-scm';\n})(Schemas || (Schemas = {}));\nconst connectionTokenQueryName = 'tkn';\nclass RemoteAuthoritiesImpl {\n constructor() {\n this._hosts = Object.create(null);\n this._ports = Object.create(null);\n this._connectionTokens = Object.create(null);\n this._preferredWebSchema = 'http';\n this._delegate = null;\n this._remoteResourcesPath = `/${Schemas.vscodeRemoteResource}`;\n }\n setPreferredWebSchema(schema) {\n this._preferredWebSchema = schema;\n }\n rewrite(uri) {\n if (this._delegate) {\n try {\n return this._delegate(uri);\n }\n catch (err) {\n _errors_js__WEBPACK_IMPORTED_MODULE_0__.onUnexpectedError(err);\n return uri;\n }\n }\n const authority = uri.authority;\n let host = this._hosts[authority];\n if (host && host.indexOf(':') !== -1 && host.indexOf('[') === -1) {\n host = `[${host}]`;\n }\n const port = this._ports[authority];\n const connectionToken = this._connectionTokens[authority];\n let query = `path=${encodeURIComponent(uri.path)}`;\n if (typeof connectionToken === 'string') {\n query += `&${connectionTokenQueryName}=${encodeURIComponent(connectionToken)}`;\n }\n return _uri_js__WEBPACK_IMPORTED_MODULE_2__.URI.from({\n scheme: _platform_js__WEBPACK_IMPORTED_MODULE_1__.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource,\n authority: `${host}:${port}`,\n path: this._remoteResourcesPath,\n query\n });\n }\n}\nconst RemoteAuthorities = new RemoteAuthoritiesImpl();\nclass FileAccessImpl {\n /**\n * Returns a URI to use in contexts where the browser is responsible\n * for loading (e.g. fetch()) or when used within the DOM.\n *\n * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context.\n */\n uriToBrowserUri(uri) {\n // Handle remote URIs via `RemoteAuthorities`\n if (uri.scheme === Schemas.vscodeRemote) {\n return RemoteAuthorities.rewrite(uri);\n }\n // Convert to `vscode-file` resource..\n if (\n // ...only ever for `file` resources\n uri.scheme === Schemas.file &&\n (\n // ...and we run in native environments\n _platform_js__WEBPACK_IMPORTED_MODULE_1__.isNative ||\n // ...or web worker extensions on desktop\n (_platform_js__WEBPACK_IMPORTED_MODULE_1__.isWebWorker && _platform_js__WEBPACK_IMPORTED_MODULE_1__.globals.origin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`))) {\n return uri.with({\n scheme: Schemas.vscodeFileResource,\n // We need to provide an authority here so that it can serve\n // as origin for network and loading matters in chromium.\n // If the URI is not coming with an authority already, we\n // add our own\n authority: uri.authority || FileAccessImpl.FALLBACK_AUTHORITY,\n query: null,\n fragment: null\n });\n }\n return uri;\n }\n}\nFileAccessImpl.FALLBACK_AUTHORITY = 'vscode-app';\nconst FileAccess = new FileAccessImpl();\nvar COI;\n(function (COI) {\n const coiHeaders = new Map([\n ['1', { 'Cross-Origin-Opener-Policy': 'same-origin' }],\n ['2', { 'Cross-Origin-Embedder-Policy': 'require-corp' }],\n ['3', { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }],\n ]);\n COI.CoopAndCoep = Object.freeze(coiHeaders.get('3'));\n const coiSearchParamName = 'vscode-coi';\n /**\n * Extract desired headers from `vscode-coi` invocation\n */\n function getHeadersFromQuery(url) {\n let params;\n if (typeof url === 'string') {\n params = new URL(url).searchParams;\n }\n else if (url instanceof URL) {\n params = url.searchParams;\n }\n else if (_uri_js__WEBPACK_IMPORTED_MODULE_2__.URI.isUri(url)) {\n params = new URL(url.toString(true)).searchParams;\n }\n const value = params === null || params === void 0 ? void 0 : params.get(coiSearchParamName);\n if (!value) {\n return undefined;\n }\n return coiHeaders.get(value);\n }\n COI.getHeadersFromQuery = getHeadersFromQuery;\n /**\n * Add the `vscode-coi` query attribute based on wanting `COOP` and `COEP`. Will be a noop when `crossOriginIsolated`\n * isn't enabled the current context\n */\n function addSearchParam(urlOrSearch, coop, coep) {\n if (!globalThis.crossOriginIsolated) {\n // depends on the current context being COI\n return;\n }\n const value = coop && coep ? '3' : coep ? '2' : '1';\n if (urlOrSearch instanceof URLSearchParams) {\n urlOrSearch.set(coiSearchParamName, value);\n }\n else {\n urlOrSearch[coiSearchParamName] = value;\n }\n }\n COI.addSearchParam = addSearchParam;\n})(COI || (COI = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/network.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/numbers.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/numbers.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MovingAverage: () => (/* binding */ MovingAverage),\n/* harmony export */ SlidingWindowAverage: () => (/* binding */ SlidingWindowAverage),\n/* harmony export */ clamp: () => (/* binding */ clamp)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\nclass MovingAverage {\n constructor() {\n this._n = 1;\n this._val = 0;\n }\n update(value) {\n this._val = this._val + (value - this._val) / this._n;\n this._n += 1;\n return this._val;\n }\n get value() {\n return this._val;\n }\n}\nclass SlidingWindowAverage {\n constructor(size) {\n this._n = 0;\n this._val = 0;\n this._values = [];\n this._index = 0;\n this._sum = 0;\n this._values = new Array(size);\n this._values.fill(0, 0, size);\n }\n update(value) {\n const oldValue = this._values[this._index];\n this._values[this._index] = value;\n this._index = (this._index + 1) % this._values.length;\n this._sum -= oldValue;\n this._sum += value;\n if (this._n < this._values.length) {\n this._n += 1;\n }\n this._val = this._sum / this._n;\n return this._val;\n }\n get value() {\n return this._val;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/numbers.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/objects.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/objects.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cloneAndChange: () => (/* binding */ cloneAndChange),\n/* harmony export */ createProxyObject: () => (/* binding */ createProxyObject),\n/* harmony export */ deepClone: () => (/* binding */ deepClone),\n/* harmony export */ deepFreeze: () => (/* binding */ deepFreeze),\n/* harmony export */ equals: () => (/* binding */ equals),\n/* harmony export */ getAllMethodNames: () => (/* binding */ getAllMethodNames),\n/* harmony export */ getAllPropertyNames: () => (/* binding */ getAllPropertyNames),\n/* harmony export */ mixin: () => (/* binding */ mixin)\n/* harmony export */ });\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction deepClone(obj) {\n if (!obj || typeof obj !== 'object') {\n return obj;\n }\n if (obj instanceof RegExp) {\n return obj;\n }\n const result = Array.isArray(obj) ? [] : {};\n Object.entries(obj).forEach(([key, value]) => {\n result[key] = value && typeof value === 'object' ? deepClone(value) : value;\n });\n return result;\n}\nfunction deepFreeze(obj) {\n if (!obj || typeof obj !== 'object') {\n return obj;\n }\n const stack = [obj];\n while (stack.length > 0) {\n const obj = stack.shift();\n Object.freeze(obj);\n for (const key in obj) {\n if (_hasOwnProperty.call(obj, key)) {\n const prop = obj[key];\n if (typeof prop === 'object' && !Object.isFrozen(prop) && !(0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isTypedArray)(prop)) {\n stack.push(prop);\n }\n }\n }\n }\n return obj;\n}\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction cloneAndChange(obj, changer) {\n return _cloneAndChange(obj, changer, new Set());\n}\nfunction _cloneAndChange(obj, changer, seen) {\n if ((0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isUndefinedOrNull)(obj)) {\n return obj;\n }\n const changed = changer(obj);\n if (typeof changed !== 'undefined') {\n return changed;\n }\n if (Array.isArray(obj)) {\n const r1 = [];\n for (const e of obj) {\n r1.push(_cloneAndChange(e, changer, seen));\n }\n return r1;\n }\n if ((0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(obj)) {\n if (seen.has(obj)) {\n throw new Error('Cannot clone recursive data-structure');\n }\n seen.add(obj);\n const r2 = {};\n for (const i2 in obj) {\n if (_hasOwnProperty.call(obj, i2)) {\n r2[i2] = _cloneAndChange(obj[i2], changer, seen);\n }\n }\n seen.delete(obj);\n return r2;\n }\n return obj;\n}\n/**\n * Copies all properties of source into destination. The optional parameter \"overwrite\" allows to control\n * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite).\n */\nfunction mixin(destination, source, overwrite = true) {\n if (!(0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(destination)) {\n return source;\n }\n if ((0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(source)) {\n Object.keys(source).forEach(key => {\n if (key in destination) {\n if (overwrite) {\n if ((0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(destination[key]) && (0,_types_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(source[key])) {\n mixin(destination[key], source[key], overwrite);\n }\n else {\n destination[key] = source[key];\n }\n }\n }\n else {\n destination[key] = source[key];\n }\n });\n }\n return destination;\n}\nfunction equals(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== 'object') {\n return false;\n }\n if ((Array.isArray(one)) !== (Array.isArray(other))) {\n return false;\n }\n let i;\n let key;\n if (Array.isArray(one)) {\n if (one.length !== other.length) {\n return false;\n }\n for (i = 0; i < one.length; i++) {\n if (!equals(one[i], other[i])) {\n return false;\n }\n }\n }\n else {\n const oneKeys = [];\n for (key in one) {\n oneKeys.push(key);\n }\n oneKeys.sort();\n const otherKeys = [];\n for (key in other) {\n otherKeys.push(key);\n }\n otherKeys.sort();\n if (!equals(oneKeys, otherKeys)) {\n return false;\n }\n for (i = 0; i < oneKeys.length; i++) {\n if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {\n return false;\n }\n }\n }\n return true;\n}\nfunction getAllPropertyNames(obj) {\n let res = [];\n let proto = Object.getPrototypeOf(obj);\n while (Object.prototype !== proto) {\n res = res.concat(Object.getOwnPropertyNames(proto));\n proto = Object.getPrototypeOf(proto);\n }\n return res;\n}\nfunction getAllMethodNames(obj) {\n const methods = [];\n for (const prop of getAllPropertyNames(obj)) {\n if (typeof obj[prop] === 'function') {\n methods.push(prop);\n }\n }\n return methods;\n}\nfunction createProxyObject(methodNames, invoke) {\n const createProxyMethod = (method) => {\n return function () {\n const args = Array.prototype.slice.call(arguments, 0);\n return invoke(method, args);\n };\n };\n const result = {};\n for (const methodName of methodNames) {\n result[methodName] = createProxyMethod(methodName);\n }\n return result;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/objects.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/observable.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/observable.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FromEventObservable: () => (/* reexport safe */ _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__.FromEventObservable),\n/* harmony export */ autorun: () => (/* reexport safe */ _observableImpl_autorun_js__WEBPACK_IMPORTED_MODULE_2__.autorun),\n/* harmony export */ autorunHandleChanges: () => (/* reexport safe */ _observableImpl_autorun_js__WEBPACK_IMPORTED_MODULE_2__.autorunHandleChanges),\n/* harmony export */ autorunWithStore: () => (/* reexport safe */ _observableImpl_autorun_js__WEBPACK_IMPORTED_MODULE_2__.autorunWithStore),\n/* harmony export */ constObservable: () => (/* reexport safe */ _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__.constObservable),\n/* harmony export */ derived: () => (/* reexport safe */ _observableImpl_derived_js__WEBPACK_IMPORTED_MODULE_1__.derived),\n/* harmony export */ keepAlive: () => (/* reexport safe */ _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__.keepAlive),\n/* harmony export */ observableFromEvent: () => (/* reexport safe */ _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__.observableFromEvent),\n/* harmony export */ observableSignal: () => (/* reexport safe */ _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__.observableSignal),\n/* harmony export */ observableSignalFromEvent: () => (/* reexport safe */ _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__.observableSignalFromEvent),\n/* harmony export */ observableValue: () => (/* reexport safe */ _observableImpl_base_js__WEBPACK_IMPORTED_MODULE_0__.observableValue),\n/* harmony export */ transaction: () => (/* reexport safe */ _observableImpl_base_js__WEBPACK_IMPORTED_MODULE_0__.transaction),\n/* harmony export */ waitForState: () => (/* reexport safe */ _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__.waitForState)\n/* harmony export */ });\n/* harmony import */ var _observableImpl_base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observableImpl/base.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/base.js\");\n/* harmony import */ var _observableImpl_derived_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./observableImpl/derived.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/derived.js\");\n/* harmony import */ var _observableImpl_autorun_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./observableImpl/autorun.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/autorun.js\");\n/* harmony import */ var _observableImpl_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./observableImpl/utils.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/utils.js\");\n/* harmony import */ var _observableImpl_logging_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./observableImpl/logging.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\nconst enableLogging = false;\nif (enableLogging) {\n (0,_observableImpl_logging_js__WEBPACK_IMPORTED_MODULE_4__.setLogger)(new _observableImpl_logging_js__WEBPACK_IMPORTED_MODULE_4__.ConsoleObservableLogger());\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/observable.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/observableImpl/autorun.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/observableImpl/autorun.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AutorunObserver: () => (/* binding */ AutorunObserver),\n/* harmony export */ autorun: () => (/* binding */ autorun),\n/* harmony export */ autorunHandleChanges: () => (/* binding */ autorunHandleChanges),\n/* harmony export */ autorunWithStore: () => (/* binding */ autorunWithStore),\n/* harmony export */ autorunWithStore2: () => (/* binding */ autorunWithStore2)\n/* harmony export */ });\n/* harmony import */ var _assert_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assert.js */ \"./node_modules/monaco-editor/esm/vs/base/common/assert.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _logging_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logging.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nfunction autorun(debugName, fn) {\n return new AutorunObserver(debugName, fn, undefined, undefined);\n}\nfunction autorunHandleChanges(debugName, options, fn) {\n return new AutorunObserver(debugName, fn, options.createEmptyChangeSummary, options.handleChange);\n}\n// TODO@hediet rename to autorunWithStore\nfunction autorunWithStore2(debugName, fn) {\n return autorunWithStore(fn, debugName);\n}\n// TODO@hediet deprecate, rename to autorunWithStoreEx\nfunction autorunWithStore(fn, debugName) {\n const store = new _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.DisposableStore();\n const disposable = autorun(debugName, reader => {\n store.clear();\n fn(reader, store);\n });\n return (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.toDisposable)(() => {\n disposable.dispose();\n store.dispose();\n });\n}\nclass AutorunObserver {\n constructor(debugName, runFn, createChangeSummary, _handleChange) {\n var _a, _b;\n this.debugName = debugName;\n this.runFn = runFn;\n this.createChangeSummary = createChangeSummary;\n this._handleChange = _handleChange;\n this.state = 2 /* AutorunState.stale */;\n this.updateCount = 0;\n this.disposed = false;\n this.dependencies = new Set();\n this.dependenciesToBeRemoved = new Set();\n this.changeSummary = (_a = this.createChangeSummary) === null || _a === void 0 ? void 0 : _a.call(this);\n (_b = (0,_logging_js__WEBPACK_IMPORTED_MODULE_2__.getLogger)()) === null || _b === void 0 ? void 0 : _b.handleAutorunCreated(this);\n this._runIfNeeded();\n }\n dispose() {\n this.disposed = true;\n for (const o of this.dependencies) {\n o.removeObserver(this);\n }\n this.dependencies.clear();\n }\n _runIfNeeded() {\n var _a, _b;\n if (this.state === 3 /* AutorunState.upToDate */) {\n return;\n }\n const emptySet = this.dependenciesToBeRemoved;\n this.dependenciesToBeRemoved = this.dependencies;\n this.dependencies = emptySet;\n this.state = 3 /* AutorunState.upToDate */;\n (_a = (0,_logging_js__WEBPACK_IMPORTED_MODULE_2__.getLogger)()) === null || _a === void 0 ? void 0 : _a.handleAutorunTriggered(this);\n try {\n const changeSummary = this.changeSummary;\n this.changeSummary = (_b = this.createChangeSummary) === null || _b === void 0 ? void 0 : _b.call(this);\n this.runFn(this, changeSummary);\n }\n finally {\n // We don't want our observed observables to think that they are (not even temporarily) not being observed.\n // Thus, we only unsubscribe from observables that are definitely not read anymore.\n for (const o of this.dependenciesToBeRemoved) {\n o.removeObserver(this);\n }\n this.dependenciesToBeRemoved.clear();\n }\n }\n toString() {\n return `Autorun<${this.debugName}>`;\n }\n // IObserver implementation\n beginUpdate() {\n if (this.state === 3 /* AutorunState.upToDate */) {\n this.state = 1 /* AutorunState.dependenciesMightHaveChanged */;\n }\n this.updateCount++;\n }\n endUpdate() {\n if (this.updateCount === 1) {\n do {\n if (this.state === 1 /* AutorunState.dependenciesMightHaveChanged */) {\n this.state = 3 /* AutorunState.upToDate */;\n for (const d of this.dependencies) {\n d.reportChanges();\n if (this.state === 2 /* AutorunState.stale */) {\n // The other dependencies will refresh on demand\n break;\n }\n }\n }\n this._runIfNeeded();\n } while (this.state !== 3 /* AutorunState.upToDate */);\n }\n this.updateCount--;\n (0,_assert_js__WEBPACK_IMPORTED_MODULE_0__.assertFn)(() => this.updateCount >= 0);\n }\n handlePossibleChange(observable) {\n if (this.state === 3 /* AutorunState.upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) {\n this.state = 1 /* AutorunState.dependenciesMightHaveChanged */;\n }\n }\n handleChange(observable, change) {\n if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) {\n const shouldReact = this._handleChange ? this._handleChange({\n changedObservable: observable,\n change,\n didChange: o => o === observable,\n }, this.changeSummary) : true;\n if (shouldReact) {\n this.state = 2 /* AutorunState.stale */;\n }\n }\n }\n // IReader implementation\n readObservable(observable) {\n // In case the run action disposes the autorun\n if (this.disposed) {\n return observable.get();\n }\n observable.addObserver(this);\n const value = observable.get();\n this.dependencies.add(observable);\n this.dependenciesToBeRemoved.delete(observable);\n return value;\n }\n}\n(function (autorun) {\n autorun.Observer = AutorunObserver;\n})(autorun || (autorun = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/observableImpl/autorun.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/observableImpl/base.js": +/*!******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/observableImpl/base.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BaseObservable: () => (/* binding */ BaseObservable),\n/* harmony export */ ConvenientObservable: () => (/* binding */ ConvenientObservable),\n/* harmony export */ DisposableObservableValue: () => (/* binding */ DisposableObservableValue),\n/* harmony export */ ObservableValue: () => (/* binding */ ObservableValue),\n/* harmony export */ TransactionImpl: () => (/* binding */ TransactionImpl),\n/* harmony export */ _setDerived: () => (/* binding */ _setDerived),\n/* harmony export */ disposableObservableValue: () => (/* binding */ disposableObservableValue),\n/* harmony export */ getFunctionName: () => (/* binding */ getFunctionName),\n/* harmony export */ observableValue: () => (/* binding */ observableValue),\n/* harmony export */ subtransaction: () => (/* binding */ subtransaction),\n/* harmony export */ transaction: () => (/* binding */ transaction)\n/* harmony export */ });\n/* harmony import */ var _logging_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logging.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nlet _derived;\n/**\n * @internal\n * This is to allow splitting files.\n*/\nfunction _setDerived(derived) {\n _derived = derived;\n}\nclass ConvenientObservable {\n get TChange() { return null; }\n reportChanges() {\n this.get();\n }\n /** @sealed */\n read(reader) {\n if (reader) {\n return reader.readObservable(this);\n }\n else {\n return this.get();\n }\n }\n /** @sealed */\n map(fn) {\n return _derived(() => {\n const name = getFunctionName(fn);\n return name !== undefined ? name : `${this.debugName} (mapped)`;\n }, (reader) => fn(this.read(reader), reader));\n }\n}\nclass BaseObservable extends ConvenientObservable {\n constructor() {\n super(...arguments);\n this.observers = new Set();\n }\n addObserver(observer) {\n const len = this.observers.size;\n this.observers.add(observer);\n if (len === 0) {\n this.onFirstObserverAdded();\n }\n }\n removeObserver(observer) {\n const deleted = this.observers.delete(observer);\n if (deleted && this.observers.size === 0) {\n this.onLastObserverRemoved();\n }\n }\n onFirstObserverAdded() { }\n onLastObserverRemoved() { }\n}\nfunction transaction(fn, getDebugName) {\n var _a, _b;\n const tx = new TransactionImpl(fn, getDebugName);\n try {\n (_a = (0,_logging_js__WEBPACK_IMPORTED_MODULE_0__.getLogger)()) === null || _a === void 0 ? void 0 : _a.handleBeginTransaction(tx);\n fn(tx);\n }\n finally {\n tx.finish();\n (_b = (0,_logging_js__WEBPACK_IMPORTED_MODULE_0__.getLogger)()) === null || _b === void 0 ? void 0 : _b.handleEndTransaction();\n }\n}\nfunction subtransaction(tx, fn, getDebugName) {\n if (!tx) {\n transaction(fn, getDebugName);\n }\n else {\n fn(tx);\n }\n}\nclass TransactionImpl {\n constructor(fn, _getDebugName) {\n this.fn = fn;\n this._getDebugName = _getDebugName;\n this.updatingObservers = [];\n }\n getDebugName() {\n if (this._getDebugName) {\n return this._getDebugName();\n }\n return getFunctionName(this.fn);\n }\n updateObserver(observer, observable) {\n this.updatingObservers.push({ observer, observable });\n observer.beginUpdate(observable);\n }\n finish() {\n const updatingObservers = this.updatingObservers;\n // Prevent anyone from updating observers from now on.\n this.updatingObservers = null;\n for (const { observer, observable } of updatingObservers) {\n observer.endUpdate(observable);\n }\n }\n}\nfunction getFunctionName(fn) {\n const fnSrc = fn.toString();\n // Pattern: /** @description ... */\n const regexp = /\\/\\*\\*\\s*@description\\s*([^*]*)\\*\\//;\n const match = regexp.exec(fnSrc);\n const result = match ? match[1] : undefined;\n return result === null || result === void 0 ? void 0 : result.trim();\n}\n/**\n * Creates an observable value.\n * Observers get informed when the value changes.\n */\nfunction observableValue(name, initialValue) {\n return new ObservableValue(name, initialValue);\n}\nclass ObservableValue extends BaseObservable {\n constructor(debugName, initialValue) {\n super();\n this.debugName = debugName;\n this._value = initialValue;\n }\n get() {\n return this._value;\n }\n set(value, tx, change) {\n var _a;\n if (this._value === value) {\n return;\n }\n let _tx;\n if (!tx) {\n tx = _tx = new TransactionImpl(() => { }, () => `Setting ${this.debugName}`);\n }\n try {\n const oldValue = this._value;\n this._setValue(value);\n (_a = (0,_logging_js__WEBPACK_IMPORTED_MODULE_0__.getLogger)()) === null || _a === void 0 ? void 0 : _a.handleObservableChanged(this, { oldValue, newValue: value, change, didChange: true });\n for (const observer of this.observers) {\n tx.updateObserver(observer, this);\n observer.handleChange(this, change);\n }\n }\n finally {\n if (_tx) {\n _tx.finish();\n }\n }\n }\n toString() {\n return `${this.debugName}: ${this._value}`;\n }\n _setValue(newValue) {\n this._value = newValue;\n }\n}\nfunction disposableObservableValue(name, initialValue) {\n return new DisposableObservableValue(name, initialValue);\n}\nclass DisposableObservableValue extends ObservableValue {\n _setValue(newValue) {\n if (this._value === newValue) {\n return;\n }\n if (this._value) {\n this._value.dispose();\n }\n this._value = newValue;\n }\n dispose() {\n var _a;\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/observableImpl/base.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/observableImpl/derived.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/observableImpl/derived.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Derived: () => (/* binding */ Derived),\n/* harmony export */ derived: () => (/* binding */ derived),\n/* harmony export */ derivedHandleChanges: () => (/* binding */ derivedHandleChanges),\n/* harmony export */ derivedWithStore: () => (/* binding */ derivedWithStore)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/base.js\");\n/* harmony import */ var _logging_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logging.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\nfunction derived(debugName, computeFn) {\n return new Derived(debugName, computeFn, undefined, undefined, undefined);\n}\nfunction derivedHandleChanges(debugName, options, computeFn) {\n return new Derived(debugName, computeFn, options.createEmptyChangeSummary, options.handleChange, undefined);\n}\nfunction derivedWithStore(name, computeFn) {\n const store = new _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.DisposableStore();\n return new Derived(name, r => {\n store.clear();\n return computeFn(r, store);\n }, undefined, undefined, () => store.dispose());\n}\n(0,_base_js__WEBPACK_IMPORTED_MODULE_2__._setDerived)(derived);\nclass Derived extends _base_js__WEBPACK_IMPORTED_MODULE_2__.BaseObservable {\n get debugName() {\n return typeof this._debugName === 'function' ? this._debugName() : this._debugName;\n }\n constructor(_debugName, computeFn, createChangeSummary, _handleChange, _handleLastObserverRemoved = undefined) {\n var _a, _b;\n super();\n this._debugName = _debugName;\n this.computeFn = computeFn;\n this.createChangeSummary = createChangeSummary;\n this._handleChange = _handleChange;\n this._handleLastObserverRemoved = _handleLastObserverRemoved;\n this.state = 0 /* DerivedState.initial */;\n this.value = undefined;\n this.updateCount = 0;\n this.dependencies = new Set();\n this.dependenciesToBeRemoved = new Set();\n this.changeSummary = undefined;\n this.changeSummary = (_a = this.createChangeSummary) === null || _a === void 0 ? void 0 : _a.call(this);\n (_b = (0,_logging_js__WEBPACK_IMPORTED_MODULE_3__.getLogger)()) === null || _b === void 0 ? void 0 : _b.handleDerivedCreated(this);\n }\n onLastObserverRemoved() {\n var _a;\n /**\n * We are not tracking changes anymore, thus we have to assume\n * that our cache is invalid.\n */\n this.state = 0 /* DerivedState.initial */;\n this.value = undefined;\n for (const d of this.dependencies) {\n d.removeObserver(this);\n }\n this.dependencies.clear();\n (_a = this._handleLastObserverRemoved) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n get() {\n var _a;\n if (this.observers.size === 0) {\n // Without observers, we don't know when to clean up stuff.\n // Thus, we don't cache anything to prevent memory leaks.\n const result = this.computeFn(this, (_a = this.createChangeSummary) === null || _a === void 0 ? void 0 : _a.call(this));\n // Clear new dependencies\n this.onLastObserverRemoved();\n return result;\n }\n else {\n do {\n if (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */) {\n // We might not get a notification for a dependency that changed while it is updating,\n // thus we also have to ask all our depedencies if they changed in this case.\n this.state = 3 /* DerivedState.upToDate */;\n for (const d of this.dependencies) {\n /** might call {@link handleChange} indirectly, which could invalidate us */\n d.reportChanges();\n if (this.state === 2 /* DerivedState.stale */) {\n // The other dependencies will refresh on demand, so early break\n break;\n }\n }\n }\n this._recomputeIfNeeded();\n // In case recomputation changed one of our dependencies, we need to recompute again.\n } while (this.state !== 3 /* DerivedState.upToDate */);\n return this.value;\n }\n }\n _recomputeIfNeeded() {\n var _a, _b;\n if (this.state === 3 /* DerivedState.upToDate */) {\n return;\n }\n const emptySet = this.dependenciesToBeRemoved;\n this.dependenciesToBeRemoved = this.dependencies;\n this.dependencies = emptySet;\n const hadValue = this.state !== 0 /* DerivedState.initial */;\n const oldValue = this.value;\n this.state = 3 /* DerivedState.upToDate */;\n const changeSummary = this.changeSummary;\n this.changeSummary = (_a = this.createChangeSummary) === null || _a === void 0 ? void 0 : _a.call(this);\n try {\n /** might call {@link handleChange} indirectly, which could invalidate us */\n this.value = this.computeFn(this, changeSummary);\n }\n finally {\n // We don't want our observed observables to think that they are (not even temporarily) not being observed.\n // Thus, we only unsubscribe from observables that are definitely not read anymore.\n for (const o of this.dependenciesToBeRemoved) {\n o.removeObserver(this);\n }\n this.dependenciesToBeRemoved.clear();\n }\n const didChange = hadValue && oldValue !== this.value;\n (_b = (0,_logging_js__WEBPACK_IMPORTED_MODULE_3__.getLogger)()) === null || _b === void 0 ? void 0 : _b.handleDerivedRecomputed(this, {\n oldValue,\n newValue: this.value,\n change: undefined,\n didChange\n });\n if (didChange) {\n for (const r of this.observers) {\n r.handleChange(this, undefined);\n }\n }\n }\n toString() {\n return `LazyDerived<${this.debugName}>`;\n }\n // IObserver Implementation\n beginUpdate(_observable) {\n this.updateCount++;\n const propagateBeginUpdate = this.updateCount === 1;\n if (this.state === 3 /* DerivedState.upToDate */) {\n this.state = 1 /* DerivedState.dependenciesMightHaveChanged */;\n // If we propagate begin update, that will already signal a possible change.\n if (!propagateBeginUpdate) {\n for (const r of this.observers) {\n r.handlePossibleChange(this);\n }\n }\n }\n if (propagateBeginUpdate) {\n for (const r of this.observers) {\n r.beginUpdate(this); // This signals a possible change\n }\n }\n }\n endUpdate(_observable) {\n this.updateCount--;\n if (this.updateCount === 0) {\n // End update could change the observer list.\n const observers = [...this.observers];\n for (const r of observers) {\n r.endUpdate(this);\n }\n }\n if (this.updateCount < 0) {\n throw new _errors_js__WEBPACK_IMPORTED_MODULE_0__.BugIndicatingError();\n }\n }\n handlePossibleChange(observable) {\n // In all other states, observers already know that we might have changed.\n if (this.state === 3 /* DerivedState.upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) {\n this.state = 1 /* DerivedState.dependenciesMightHaveChanged */;\n for (const r of this.observers) {\n r.handlePossibleChange(this);\n }\n }\n }\n handleChange(observable, change) {\n if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) {\n const shouldReact = this._handleChange ? this._handleChange({\n changedObservable: observable,\n change,\n didChange: o => o === observable,\n }, this.changeSummary) : true;\n const wasUpToDate = this.state === 3 /* DerivedState.upToDate */;\n if (shouldReact && (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */ || wasUpToDate)) {\n this.state = 2 /* DerivedState.stale */;\n if (wasUpToDate) {\n for (const r of this.observers) {\n r.handlePossibleChange(this);\n }\n }\n }\n }\n }\n // IReader Implementation\n readObservable(observable) {\n // Subscribe before getting the value to enable caching\n observable.addObserver(this);\n /** This might call {@link handleChange} indirectly, which could invalidate us */\n const value = observable.get();\n // Which is why we only add the observable to the dependencies now.\n this.dependencies.add(observable);\n this.dependenciesToBeRemoved.delete(observable);\n return value;\n }\n addObserver(observer) {\n const shouldCallBeginUpdate = !this.observers.has(observer) && this.updateCount > 0;\n super.addObserver(observer);\n if (shouldCallBeginUpdate) {\n observer.beginUpdate(this);\n }\n }\n removeObserver(observer) {\n const shouldCallEndUpdate = this.observers.has(observer) && this.updateCount > 0;\n super.removeObserver(observer);\n if (shouldCallEndUpdate) {\n // Calling end update after removing the observer makes sure endUpdate cannot be called twice here.\n observer.endUpdate(this);\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/observableImpl/derived.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConsoleObservableLogger: () => (/* binding */ ConsoleObservableLogger),\n/* harmony export */ getLogger: () => (/* binding */ getLogger),\n/* harmony export */ setLogger: () => (/* binding */ setLogger)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nlet globalObservableLogger;\nfunction setLogger(logger) {\n globalObservableLogger = logger;\n}\nfunction getLogger() {\n return globalObservableLogger;\n}\nclass ConsoleObservableLogger {\n constructor() {\n this.indentation = 0;\n this.changedObservablesSets = new WeakMap();\n }\n textToConsoleArgs(text) {\n return consoleTextToArgs([\n normalText(repeat('| ', this.indentation)),\n text,\n ]);\n }\n formatInfo(info) {\n return info.didChange\n ? [\n normalText(` `),\n styled(formatValue(info.oldValue, 70), {\n color: 'red',\n strikeThrough: true,\n }),\n normalText(` `),\n styled(formatValue(info.newValue, 60), {\n color: 'green',\n }),\n ]\n : [normalText(` (unchanged)`)];\n }\n handleObservableChanged(observable, info) {\n console.log(...this.textToConsoleArgs([\n formatKind('observable value changed'),\n styled(observable.debugName, { color: 'BlueViolet' }),\n ...this.formatInfo(info),\n ]));\n }\n formatChanges(changes) {\n if (changes.size === 0) {\n return undefined;\n }\n return styled(' (changed deps: ' +\n [...changes].map((o) => o.debugName).join(', ') +\n ')', { color: 'gray' });\n }\n handleDerivedCreated(derived) {\n const existingHandleChange = derived.handleChange;\n this.changedObservablesSets.set(derived, new Set());\n derived.handleChange = (observable, change) => {\n this.changedObservablesSets.get(derived).add(observable);\n return existingHandleChange.apply(derived, [observable, change]);\n };\n }\n handleDerivedRecomputed(derived, info) {\n const changedObservables = this.changedObservablesSets.get(derived);\n console.log(...this.textToConsoleArgs([\n formatKind('derived recomputed'),\n styled(derived.debugName, { color: 'BlueViolet' }),\n ...this.formatInfo(info),\n this.formatChanges(changedObservables)\n ]));\n changedObservables.clear();\n }\n handleFromEventObservableTriggered(observable, info) {\n console.log(...this.textToConsoleArgs([\n formatKind('observable from event triggered'),\n styled(observable.debugName, { color: 'BlueViolet' }),\n ...this.formatInfo(info),\n ]));\n }\n handleAutorunCreated(autorun) {\n const existingHandleChange = autorun.handleChange;\n this.changedObservablesSets.set(autorun, new Set());\n autorun.handleChange = (observable, change) => {\n this.changedObservablesSets.get(autorun).add(observable);\n return existingHandleChange.apply(autorun, [observable, change]);\n };\n }\n handleAutorunTriggered(autorun) {\n const changedObservables = this.changedObservablesSets.get(autorun);\n console.log(...this.textToConsoleArgs([\n formatKind('autorun'),\n styled(autorun.debugName, { color: 'BlueViolet' }),\n this.formatChanges(changedObservables)\n ]));\n changedObservables.clear();\n }\n handleBeginTransaction(transaction) {\n let transactionName = transaction.getDebugName();\n if (transactionName === undefined) {\n transactionName = '';\n }\n console.log(...this.textToConsoleArgs([\n formatKind('transaction'),\n styled(transactionName, { color: 'BlueViolet' }),\n ]));\n this.indentation++;\n }\n handleEndTransaction() {\n this.indentation--;\n }\n}\nfunction consoleTextToArgs(text) {\n const styles = new Array();\n const initial = {};\n const data = initial;\n let firstArg = '';\n function process(t) {\n if ('length' in t) {\n for (const item of t) {\n if (item) {\n process(item);\n }\n }\n }\n else if ('text' in t) {\n firstArg += `%c${t.text}`;\n styles.push(t.style);\n if (t.data) {\n Object.assign(data, t.data);\n }\n }\n else if ('data' in t) {\n Object.assign(data, t.data);\n }\n }\n process(text);\n const result = [firstArg, ...styles];\n if (Object.keys(data).length > 0) {\n result.push(data);\n }\n return result;\n}\nfunction normalText(text) {\n return styled(text, { color: 'black' });\n}\nfunction formatKind(kind) {\n return styled(padStr(`${kind}: `, 10), { color: 'black', bold: true });\n}\nfunction styled(text, options = {\n color: 'black',\n}) {\n function objToCss(styleObj) {\n return Object.entries(styleObj).reduce((styleString, [propName, propValue]) => {\n return `${styleString}${propName}:${propValue};`;\n }, '');\n }\n const style = {\n color: options.color,\n };\n if (options.strikeThrough) {\n style['text-decoration'] = 'line-through';\n }\n if (options.bold) {\n style['font-weight'] = 'bold';\n }\n return {\n text,\n style: objToCss(style),\n };\n}\nfunction formatValue(value, availableLen) {\n switch (typeof value) {\n case 'number':\n return '' + value;\n case 'string':\n if (value.length + 2 <= availableLen) {\n return `\"${value}\"`;\n }\n return `\"${value.substr(0, availableLen - 7)}\"+...`;\n case 'boolean':\n return value ? 'true' : 'false';\n case 'undefined':\n return 'undefined';\n case 'object':\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return formatArray(value, availableLen);\n }\n return formatObject(value, availableLen);\n case 'symbol':\n return value.toString();\n case 'function':\n return `[[Function${value.name ? ' ' + value.name : ''}]]`;\n default:\n return '' + value;\n }\n}\nfunction formatArray(value, availableLen) {\n let result = '[ ';\n let first = true;\n for (const val of value) {\n if (!first) {\n result += ', ';\n }\n if (result.length - 5 > availableLen) {\n result += '...';\n break;\n }\n first = false;\n result += `${formatValue(val, availableLen - result.length)}`;\n }\n result += ' ]';\n return result;\n}\nfunction formatObject(value, availableLen) {\n let result = '{ ';\n let first = true;\n for (const [key, val] of Object.entries(value)) {\n if (!first) {\n result += ', ';\n }\n if (result.length - 5 > availableLen) {\n result += '...';\n break;\n }\n first = false;\n result += `${key}: ${formatValue(val, availableLen - result.length)}`;\n }\n result += ' }';\n return result;\n}\nfunction repeat(str, count) {\n let result = '';\n for (let i = 1; i <= count; i++) {\n result += str;\n }\n return result;\n}\nfunction padStr(str, length) {\n while (str.length < length) {\n str += ' ';\n }\n return str;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/observableImpl/utils.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/observableImpl/utils.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FromEventObservable: () => (/* binding */ FromEventObservable),\n/* harmony export */ constObservable: () => (/* binding */ constObservable),\n/* harmony export */ keepAlive: () => (/* binding */ keepAlive),\n/* harmony export */ observableFromEvent: () => (/* binding */ observableFromEvent),\n/* harmony export */ observableSignal: () => (/* binding */ observableSignal),\n/* harmony export */ observableSignalFromEvent: () => (/* binding */ observableSignalFromEvent),\n/* harmony export */ waitForState: () => (/* binding */ waitForState)\n/* harmony export */ });\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _autorun_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./autorun.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/autorun.js\");\n/* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/base.js\");\n/* harmony import */ var _logging_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logging.js */ \"./node_modules/monaco-editor/esm/vs/base/common/observableImpl/logging.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\nfunction constObservable(value) {\n return new ConstObservable(value);\n}\nclass ConstObservable extends _base_js__WEBPACK_IMPORTED_MODULE_2__.ConvenientObservable {\n constructor(value) {\n super();\n this.value = value;\n }\n get debugName() {\n return this.toString();\n }\n get() {\n return this.value;\n }\n addObserver(observer) {\n // NO OP\n }\n removeObserver(observer) {\n // NO OP\n }\n toString() {\n return `Const: ${this.value}`;\n }\n}\nfunction waitForState(observable, predicate) {\n return new Promise(resolve => {\n let didRun = false;\n let shouldDispose = false;\n const d = (0,_autorun_js__WEBPACK_IMPORTED_MODULE_1__.autorun)('waitForState', reader => {\n const currentState = observable.read(reader);\n if (predicate(currentState)) {\n if (!didRun) {\n shouldDispose = true;\n }\n else {\n d.dispose();\n }\n resolve(currentState);\n }\n });\n didRun = true;\n if (shouldDispose) {\n d.dispose();\n }\n });\n}\nfunction observableFromEvent(event, getValue) {\n return new FromEventObservable(event, getValue);\n}\nclass FromEventObservable extends _base_js__WEBPACK_IMPORTED_MODULE_2__.BaseObservable {\n constructor(event, getValue) {\n super();\n this.event = event;\n this.getValue = getValue;\n this.hasValue = false;\n this.handleEvent = (args) => {\n var _a;\n const newValue = this.getValue(args);\n const didChange = !this.hasValue || this.value !== newValue;\n (_a = (0,_logging_js__WEBPACK_IMPORTED_MODULE_3__.getLogger)()) === null || _a === void 0 ? void 0 : _a.handleFromEventObservableTriggered(this, { oldValue: this.value, newValue, change: undefined, didChange });\n if (didChange) {\n this.value = newValue;\n if (this.hasValue) {\n (0,_base_js__WEBPACK_IMPORTED_MODULE_2__.transaction)((tx) => {\n for (const o of this.observers) {\n tx.updateObserver(o, this);\n o.handleChange(this, undefined);\n }\n }, () => {\n const name = this.getDebugName();\n return 'Event fired' + (name ? `: ${name}` : '');\n });\n }\n this.hasValue = true;\n }\n };\n }\n getDebugName() {\n return (0,_base_js__WEBPACK_IMPORTED_MODULE_2__.getFunctionName)(this.getValue);\n }\n get debugName() {\n const name = this.getDebugName();\n return 'From Event' + (name ? `: ${name}` : '');\n }\n onFirstObserverAdded() {\n this.subscription = this.event(this.handleEvent);\n }\n onLastObserverRemoved() {\n this.subscription.dispose();\n this.subscription = undefined;\n this.hasValue = false;\n this.value = undefined;\n }\n get() {\n if (this.subscription) {\n if (!this.hasValue) {\n this.handleEvent(undefined);\n }\n return this.value;\n }\n else {\n // no cache, as there are no subscribers to keep it updated\n return this.getValue(undefined);\n }\n }\n}\n(function (observableFromEvent) {\n observableFromEvent.Observer = FromEventObservable;\n})(observableFromEvent || (observableFromEvent = {}));\nfunction observableSignalFromEvent(debugName, event) {\n return new FromEventObservableSignal(debugName, event);\n}\nclass FromEventObservableSignal extends _base_js__WEBPACK_IMPORTED_MODULE_2__.BaseObservable {\n constructor(debugName, event) {\n super();\n this.debugName = debugName;\n this.event = event;\n this.handleEvent = () => {\n (0,_base_js__WEBPACK_IMPORTED_MODULE_2__.transaction)((tx) => {\n for (const o of this.observers) {\n tx.updateObserver(o, this);\n o.handleChange(this, undefined);\n }\n }, () => this.debugName);\n };\n }\n onFirstObserverAdded() {\n this.subscription = this.event(this.handleEvent);\n }\n onLastObserverRemoved() {\n this.subscription.dispose();\n this.subscription = undefined;\n }\n get() {\n // NO OP\n }\n}\n/**\n * Creates a signal that can be triggered to invalidate observers.\n */\nfunction observableSignal(debugName) {\n return new ObservableSignal(debugName);\n}\nclass ObservableSignal extends _base_js__WEBPACK_IMPORTED_MODULE_2__.BaseObservable {\n constructor(debugName) {\n super();\n this.debugName = debugName;\n }\n trigger(tx, change) {\n if (!tx) {\n (0,_base_js__WEBPACK_IMPORTED_MODULE_2__.transaction)(tx => {\n this.trigger(tx, change);\n }, () => `Trigger signal ${this.debugName}`);\n return;\n }\n for (const o of this.observers) {\n tx.updateObserver(o, this);\n o.handleChange(this, change);\n }\n }\n get() {\n // NO OP\n }\n}\n/**\n * This ensures the observable is being observed.\n * Observed observables (such as {@link derived}s) can maintain a cache, as they receive invalidation events.\n * Unobserved observables are forced to recompute their value from scratch every time they are read.\n *\n * @param observable the observable to keep alive\n * @param forceRecompute if true, the observable will be eagerly recomputed after it changed.\n * Use this if recomputing the observables causes side-effects.\n*/\nfunction keepAlive(observable, forceRecompute) {\n const o = new KeepAliveObserver(forceRecompute !== null && forceRecompute !== void 0 ? forceRecompute : false);\n observable.addObserver(o);\n if (forceRecompute) {\n observable.reportChanges();\n }\n return (0,_lifecycle_js__WEBPACK_IMPORTED_MODULE_0__.toDisposable)(() => {\n observable.removeObserver(o);\n });\n}\nclass KeepAliveObserver {\n constructor(forceRecompute) {\n this.forceRecompute = forceRecompute;\n this.counter = 0;\n }\n beginUpdate(observable) {\n this.counter++;\n }\n endUpdate(observable) {\n this.counter--;\n if (this.counter === 0 && this.forceRecompute) {\n observable.reportChanges();\n }\n }\n handlePossibleChange(observable) {\n // NO OP\n }\n handleChange(observable, change) {\n // NO OP\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/observableImpl/utils.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/path.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/path.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ basename: () => (/* binding */ basename),\n/* harmony export */ dirname: () => (/* binding */ dirname),\n/* harmony export */ extname: () => (/* binding */ extname),\n/* harmony export */ normalize: () => (/* binding */ normalize),\n/* harmony export */ posix: () => (/* binding */ posix),\n/* harmony export */ relative: () => (/* binding */ relative),\n/* harmony export */ resolve: () => (/* binding */ resolve),\n/* harmony export */ sep: () => (/* binding */ sep),\n/* harmony export */ win32: () => (/* binding */ win32)\n/* harmony export */ });\n/* harmony import */ var _process_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./process.js */ \"./node_modules/monaco-editor/esm/vs/base/common/process.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\n// Copied from: https://github.com/nodejs/node/blob/v16.14.2/lib/path.js\n/**\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst CHAR_UPPERCASE_A = 65; /* A */\nconst CHAR_LOWERCASE_A = 97; /* a */\nconst CHAR_UPPERCASE_Z = 90; /* Z */\nconst CHAR_LOWERCASE_Z = 122; /* z */\nconst CHAR_DOT = 46; /* . */\nconst CHAR_FORWARD_SLASH = 47; /* / */\nconst CHAR_BACKWARD_SLASH = 92; /* \\ */\nconst CHAR_COLON = 58; /* : */\nconst CHAR_QUESTION_MARK = 63; /* ? */\nclass ErrorInvalidArgType extends Error {\n constructor(name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n }\n else {\n determiner = 'must be';\n }\n const type = name.indexOf('.') !== -1 ? 'property' : 'argument';\n let msg = `The \"${name}\" ${type} ${determiner} of type ${expected}`;\n msg += `. Received type ${typeof actual}`;\n super(msg);\n this.code = 'ERR_INVALID_ARG_TYPE';\n }\n}\nfunction validateObject(pathObject, name) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new ErrorInvalidArgType(name, 'Object', pathObject);\n }\n}\nfunction validateString(value, name) {\n if (typeof value !== 'string') {\n throw new ErrorInvalidArgType(name, 'string', value);\n }\n}\nconst platformIsWin32 = (_process_js__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32');\nfunction isPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n}\nfunction isPosixPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH;\n}\nfunction isWindowsDeviceRoot(code) {\n return (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) ||\n (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z);\n}\n// Resolves . and .. elements in a path with directory names\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\n let res = '';\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code = 0;\n for (let i = 0; i <= path.length; ++i) {\n if (i < path.length) {\n code = path.charCodeAt(i);\n }\n else if (isPathSeparator(code)) {\n break;\n }\n else {\n code = CHAR_FORWARD_SLASH;\n }\n if (isPathSeparator(code)) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n }\n else if (dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 ||\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(separator);\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n }\n else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n else if (res.length !== 0) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? `${separator}..` : '..';\n lastSegmentLength = 2;\n }\n }\n else {\n if (res.length > 0) {\n res += `${separator}${path.slice(lastSlash + 1, i)}`;\n }\n else {\n res = path.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n }\n else if (code === CHAR_DOT && dots !== -1) {\n ++dots;\n }\n else {\n dots = -1;\n }\n }\n return res;\n}\nfunction _format(sep, pathObject) {\n validateObject(pathObject, 'pathObject');\n const dir = pathObject.dir || pathObject.root;\n const base = pathObject.base ||\n `${pathObject.name || ''}${pathObject.ext || ''}`;\n if (!dir) {\n return base;\n }\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\n}\nconst win32 = {\n // path.resolve([from ...], to)\n resolve(...pathSegments) {\n let resolvedDevice = '';\n let resolvedTail = '';\n let resolvedAbsolute = false;\n for (let i = pathSegments.length - 1; i >= -1; i--) {\n let path;\n if (i >= 0) {\n path = pathSegments[i];\n validateString(path, 'path');\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n }\n else if (resolvedDevice.length === 0) {\n path = _process_js__WEBPACK_IMPORTED_MODULE_0__.cwd();\n }\n else {\n // Windows has the concept of drive-specific current working\n // directories. If we've resolved a drive letter but not yet an\n // absolute path, get cwd for that drive, or the process cwd if\n // the drive cwd is not available. We're sure the device is not\n // a UNC path at this points, because UNC paths are always absolute.\n path = _process_js__WEBPACK_IMPORTED_MODULE_0__.env[`=${resolvedDevice}`] || _process_js__WEBPACK_IMPORTED_MODULE_0__.cwd();\n // Verify that a cwd was found and that it actually points\n // to our drive. If not, default to the drive's root.\n if (path === undefined ||\n (path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH)) {\n path = `${resolvedDevice}\\\\`;\n }\n }\n const len = path.length;\n let rootEnd = 0;\n let device = '';\n let isAbsolute = false;\n const code = path.charCodeAt(0);\n // Try to match a root\n if (len === 1) {\n if (isPathSeparator(code)) {\n // `path` contains just a path separator\n rootEnd = 1;\n isAbsolute = true;\n }\n }\n else if (isPathSeparator(code)) {\n // Possible UNC root\n // If we started with a separator, we know we at least have an\n // absolute path of some kind (UNC or otherwise)\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n let j = 2;\n let last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n const firstPart = path.slice(last, j);\n // Matched!\n last = j;\n // Match 1 or more path separators\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j === len || j !== last) {\n // We matched a UNC root\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n rootEnd = j;\n }\n }\n }\n }\n else {\n rootEnd = 1;\n }\n }\n else if (isWindowsDeviceRoot(code) &&\n path.charCodeAt(1) === CHAR_COLON) {\n // Possible device root\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\n // Treat separator following drive name as an absolute path\n // indicator\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n if (device.length > 0) {\n if (resolvedDevice.length > 0) {\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\n // This path points to another device so it is not applicable\n continue;\n }\n }\n else {\n resolvedDevice = device;\n }\n }\n if (resolvedAbsolute) {\n if (resolvedDevice.length > 0) {\n break;\n }\n }\n else {\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\n resolvedAbsolute = isAbsolute;\n if (isAbsolute && resolvedDevice.length > 0) {\n break;\n }\n }\n }\n // At this point the path should be resolved to a full absolute path,\n // but handle relative paths to be safe (might happen when process.cwd()\n // fails)\n // Normalize the tail path\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\n return resolvedAbsolute ?\n `${resolvedDevice}\\\\${resolvedTail}` :\n `${resolvedDevice}${resolvedTail}` || '.';\n },\n normalize(path) {\n validateString(path, 'path');\n const len = path.length;\n if (len === 0) {\n return '.';\n }\n let rootEnd = 0;\n let device;\n let isAbsolute = false;\n const code = path.charCodeAt(0);\n // Try to match a root\n if (len === 1) {\n // `path` contains just a single char, exit early to avoid\n // unnecessary work\n return isPosixPathSeparator(code) ? '\\\\' : path;\n }\n if (isPathSeparator(code)) {\n // Possible UNC root\n // If we started with a separator, we know we at least have an absolute\n // path of some kind (UNC or otherwise)\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n let j = 2;\n let last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n const firstPart = path.slice(last, j);\n // Matched!\n last = j;\n // Match 1 or more path separators\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j === len) {\n // We matched a UNC root only\n // Return the normalized version of the UNC root since there\n // is nothing left to process\n return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\n }\n if (j !== last) {\n // We matched a UNC root with leftovers\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\n rootEnd = j;\n }\n }\n }\n }\n else {\n rootEnd = 1;\n }\n }\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n // Possible device root\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\n // Treat separator following drive name as an absolute path\n // indicator\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n let tail = rootEnd < len ?\n normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator) :\n '';\n if (tail.length === 0 && !isAbsolute) {\n tail = '.';\n }\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\n tail += '\\\\';\n }\n if (device === undefined) {\n return isAbsolute ? `\\\\${tail}` : tail;\n }\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\n },\n isAbsolute(path) {\n validateString(path, 'path');\n const len = path.length;\n if (len === 0) {\n return false;\n }\n const code = path.charCodeAt(0);\n return isPathSeparator(code) ||\n // Possible device root\n (len > 2 &&\n isWindowsDeviceRoot(code) &&\n path.charCodeAt(1) === CHAR_COLON &&\n isPathSeparator(path.charCodeAt(2)));\n },\n join(...paths) {\n if (paths.length === 0) {\n return '.';\n }\n let joined;\n let firstPart;\n for (let i = 0; i < paths.length; ++i) {\n const arg = paths[i];\n validateString(arg, 'path');\n if (arg.length > 0) {\n if (joined === undefined) {\n joined = firstPart = arg;\n }\n else {\n joined += `\\\\${arg}`;\n }\n }\n }\n if (joined === undefined) {\n return '.';\n }\n // Make sure that the joined path doesn't start with two slashes, because\n // normalize() will mistake it for a UNC path then.\n //\n // This step is skipped when it is very clear that the user actually\n // intended to point at a UNC path. This is assumed when the first\n // non-empty string arguments starts with exactly two slashes followed by\n // at least one more non-slash character.\n //\n // Note that for normalize() to treat a path as a UNC path it needs to\n // have at least 2 components, so we don't filter for that here.\n // This means that the user can use join to construct UNC paths from\n // a server name and a share name; for example:\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\n let needsReplace = true;\n let slashCount = 0;\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\n ++slashCount;\n const firstLen = firstPart.length;\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\n ++slashCount;\n if (firstLen > 2) {\n if (isPathSeparator(firstPart.charCodeAt(2))) {\n ++slashCount;\n }\n else {\n // We matched a UNC path in the first part\n needsReplace = false;\n }\n }\n }\n }\n if (needsReplace) {\n // Find any more consecutive slashes we need to replace\n while (slashCount < joined.length &&\n isPathSeparator(joined.charCodeAt(slashCount))) {\n slashCount++;\n }\n // Replace the slashes if needed\n if (slashCount >= 2) {\n joined = `\\\\${joined.slice(slashCount)}`;\n }\n }\n return win32.normalize(joined);\n },\n // It will solve the relative path from `from` to `to`, for instance:\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\n relative(from, to) {\n validateString(from, 'from');\n validateString(to, 'to');\n if (from === to) {\n return '';\n }\n const fromOrig = win32.resolve(from);\n const toOrig = win32.resolve(to);\n if (fromOrig === toOrig) {\n return '';\n }\n from = fromOrig.toLowerCase();\n to = toOrig.toLowerCase();\n if (from === to) {\n return '';\n }\n // Trim any leading backslashes\n let fromStart = 0;\n while (fromStart < from.length &&\n from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\n fromStart++;\n }\n // Trim trailing backslashes (applicable to UNC paths only)\n let fromEnd = from.length;\n while (fromEnd - 1 > fromStart &&\n from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\n fromEnd--;\n }\n const fromLen = fromEnd - fromStart;\n // Trim any leading backslashes\n let toStart = 0;\n while (toStart < to.length &&\n to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\n toStart++;\n }\n // Trim trailing backslashes (applicable to UNC paths only)\n let toEnd = to.length;\n while (toEnd - 1 > toStart &&\n to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\n toEnd--;\n }\n const toLen = toEnd - toStart;\n // Compare paths to find the longest common path from root\n const length = fromLen < toLen ? fromLen : toLen;\n let lastCommonSep = -1;\n let i = 0;\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i);\n if (fromCode !== to.charCodeAt(toStart + i)) {\n break;\n }\n else if (fromCode === CHAR_BACKWARD_SLASH) {\n lastCommonSep = i;\n }\n }\n // We found a mismatch before the first common path separator was seen, so\n // return the original `to`.\n if (i !== length) {\n if (lastCommonSep === -1) {\n return toOrig;\n }\n }\n else {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\n return toOrig.slice(toStart + i + 1);\n }\n if (i === 2) {\n // We get here if `from` is the device root.\n // For example: from='C:\\\\'; to='C:\\\\foo'\n return toOrig.slice(toStart + i);\n }\n }\n if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\n lastCommonSep = i;\n }\n else if (i === 2) {\n // We get here if `to` is the device root.\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\n lastCommonSep = 3;\n }\n }\n if (lastCommonSep === -1) {\n lastCommonSep = 0;\n }\n }\n let out = '';\n // Generate the relative path based on the path difference between `to` and\n // `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\n out += out.length === 0 ? '..' : '\\\\..';\n }\n }\n toStart += lastCommonSep;\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0) {\n return `${out}${toOrig.slice(toStart, toEnd)}`;\n }\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\n ++toStart;\n }\n return toOrig.slice(toStart, toEnd);\n },\n toNamespacedPath(path) {\n // Note: this will *probably* throw somewhere.\n if (typeof path !== 'string' || path.length === 0) {\n return path;\n }\n const resolvedPath = win32.resolve(path);\n if (resolvedPath.length <= 2) {\n return path;\n }\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\n // Possible UNC root\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\n const code = resolvedPath.charCodeAt(2);\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\n // Matched non-long UNC root, convert the path to a long UNC path\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\n }\n }\n }\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\n // Matched device root, convert the path to a long UNC path\n return `\\\\\\\\?\\\\${resolvedPath}`;\n }\n return path;\n },\n dirname(path) {\n validateString(path, 'path');\n const len = path.length;\n if (len === 0) {\n return '.';\n }\n let rootEnd = -1;\n let offset = 0;\n const code = path.charCodeAt(0);\n if (len === 1) {\n // `path` contains just a path separator, exit early to avoid\n // unnecessary work or a dot.\n return isPathSeparator(code) ? path : '.';\n }\n // Try to match a root\n if (isPathSeparator(code)) {\n // Possible UNC root\n rootEnd = offset = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n let j = 2;\n let last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more path separators\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j === len) {\n // We matched a UNC root only\n return path;\n }\n if (j !== last) {\n // We matched a UNC root with leftovers\n // Offset by 1 to include the separator after the UNC root to\n // treat it as a \"normal root\" on top of a (UNC) root\n rootEnd = offset = j + 1;\n }\n }\n }\n }\n // Possible device root\n }\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\n offset = rootEnd;\n }\n let end = -1;\n let matchedSlash = true;\n for (let i = len - 1; i >= offset; --i) {\n if (isPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n }\n else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n if (end === -1) {\n if (rootEnd === -1) {\n return '.';\n }\n end = rootEnd;\n }\n return path.slice(0, end);\n },\n basename(path, ext) {\n if (ext !== undefined) {\n validateString(ext, 'ext');\n }\n validateString(path, 'path');\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n // Check for a drive letter prefix so as not to mistake the following\n // path separator as an extra separator at the end of the path that can be\n // disregarded\n if (path.length >= 2 &&\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\n path.charCodeAt(1) === CHAR_COLON) {\n start = 2;\n }\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext === path) {\n return '';\n }\n let extIdx = ext.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n }\n else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end) {\n end = firstNonSlashEnd;\n }\n else if (end === -1) {\n end = path.length;\n }\n return path.slice(start, end);\n }\n for (i = path.length - 1; i >= start; --i) {\n if (isPathSeparator(path.charCodeAt(i))) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1) {\n return '';\n }\n return path.slice(start, end);\n },\n extname(path) {\n validateString(path, 'path');\n let start = 0;\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n let preDotState = 0;\n // Check for a drive letter prefix so as not to mistake the following\n // path separator as an extra separator at the end of the path that can be\n // disregarded\n if (path.length >= 2 &&\n path.charCodeAt(1) === CHAR_COLON &&\n isWindowsDeviceRoot(path.charCodeAt(0))) {\n start = startPart = 2;\n }\n for (let i = path.length - 1; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n return '';\n }\n return path.slice(startDot, end);\n },\n format: _format.bind(null, '\\\\'),\n parse(path) {\n validateString(path, 'path');\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) {\n return ret;\n }\n const len = path.length;\n let rootEnd = 0;\n let code = path.charCodeAt(0);\n if (len === 1) {\n if (isPathSeparator(code)) {\n // `path` contains just a path separator, exit early to avoid\n // unnecessary work\n ret.root = ret.dir = path;\n return ret;\n }\n ret.base = ret.name = path;\n return ret;\n }\n // Try to match a root\n if (isPathSeparator(code)) {\n // Possible UNC root\n rootEnd = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n let j = 2;\n let last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more path separators\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\n j++;\n }\n if (j === len) {\n // We matched a UNC root only\n rootEnd = j;\n }\n else if (j !== last) {\n // We matched a UNC root with leftovers\n rootEnd = j + 1;\n }\n }\n }\n }\n }\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\n // Possible device root\n if (len <= 2) {\n // `path` contains just a drive root, exit early to avoid\n // unnecessary work\n ret.root = ret.dir = path;\n return ret;\n }\n rootEnd = 2;\n if (isPathSeparator(path.charCodeAt(2))) {\n if (len === 3) {\n // `path` contains just a drive root, exit early to avoid\n // unnecessary work\n ret.root = ret.dir = path;\n return ret;\n }\n rootEnd = 3;\n }\n }\n if (rootEnd > 0) {\n ret.root = path.slice(0, rootEnd);\n }\n let startDot = -1;\n let startPart = rootEnd;\n let end = -1;\n let matchedSlash = true;\n let i = path.length - 1;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n let preDotState = 0;\n // Get non-dir info\n for (; i >= rootEnd; --i) {\n code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (end !== -1) {\n if (startDot === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n ret.base = ret.name = path.slice(startPart, end);\n }\n else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n ret.ext = path.slice(startDot, end);\n }\n }\n // If the directory is the root, use the entire root as the `dir` including\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\n if (startPart > 0 && startPart !== rootEnd) {\n ret.dir = path.slice(0, startPart - 1);\n }\n else {\n ret.dir = ret.root;\n }\n return ret;\n },\n sep: '\\\\',\n delimiter: ';',\n win32: null,\n posix: null\n};\nconst posixCwd = (() => {\n if (platformIsWin32) {\n // Converts Windows' backslash path separators to POSIX forward slashes\n // and truncates any drive indicator\n const regexp = /\\\\/g;\n return () => {\n const cwd = _process_js__WEBPACK_IMPORTED_MODULE_0__.cwd().replace(regexp, '/');\n return cwd.slice(cwd.indexOf('/'));\n };\n }\n // We're already on POSIX, no need for any transformations\n return () => _process_js__WEBPACK_IMPORTED_MODULE_0__.cwd();\n})();\nconst posix = {\n // path.resolve([from ...], to)\n resolve(...pathSegments) {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? pathSegments[i] : posixCwd();\n validateString(path, 'path');\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n }\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\n if (resolvedAbsolute) {\n return `/${resolvedPath}`;\n }\n return resolvedPath.length > 0 ? resolvedPath : '.';\n },\n normalize(path) {\n validateString(path, 'path');\n if (path.length === 0) {\n return '.';\n }\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\n // Normalize the path\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\n if (path.length === 0) {\n if (isAbsolute) {\n return '/';\n }\n return trailingSeparator ? './' : '.';\n }\n if (trailingSeparator) {\n path += '/';\n }\n return isAbsolute ? `/${path}` : path;\n },\n isAbsolute(path) {\n validateString(path, 'path');\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n },\n join(...paths) {\n if (paths.length === 0) {\n return '.';\n }\n let joined;\n for (let i = 0; i < paths.length; ++i) {\n const arg = paths[i];\n validateString(arg, 'path');\n if (arg.length > 0) {\n if (joined === undefined) {\n joined = arg;\n }\n else {\n joined += `/${arg}`;\n }\n }\n }\n if (joined === undefined) {\n return '.';\n }\n return posix.normalize(joined);\n },\n relative(from, to) {\n validateString(from, 'from');\n validateString(to, 'to');\n if (from === to) {\n return '';\n }\n // Trim leading forward slashes.\n from = posix.resolve(from);\n to = posix.resolve(to);\n if (from === to) {\n return '';\n }\n const fromStart = 1;\n const fromEnd = from.length;\n const fromLen = fromEnd - fromStart;\n const toStart = 1;\n const toLen = to.length - toStart;\n // Compare paths to find the longest common path from root\n const length = (fromLen < toLen ? fromLen : toLen);\n let lastCommonSep = -1;\n let i = 0;\n for (; i < length; i++) {\n const fromCode = from.charCodeAt(fromStart + i);\n if (fromCode !== to.charCodeAt(toStart + i)) {\n break;\n }\n else if (fromCode === CHAR_FORWARD_SLASH) {\n lastCommonSep = i;\n }\n }\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n }\n if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n }\n else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n }\n else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo/bar'; to='/'\n lastCommonSep = 0;\n }\n }\n }\n let out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`.\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n out += out.length === 0 ? '..' : '/..';\n }\n }\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts.\n return `${out}${to.slice(toStart + lastCommonSep)}`;\n },\n toNamespacedPath(path) {\n // Non-op on posix systems\n return path;\n },\n dirname(path) {\n validateString(path, 'path');\n if (path.length === 0) {\n return '.';\n }\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n let end = -1;\n let matchedSlash = true;\n for (let i = path.length - 1; i >= 1; --i) {\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n }\n else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n if (end === -1) {\n return hasRoot ? '/' : '.';\n }\n if (hasRoot && end === 1) {\n return '//';\n }\n return path.slice(0, end);\n },\n basename(path, ext) {\n if (ext !== undefined) {\n validateString(ext, 'ext');\n }\n validateString(path, 'path');\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext === path) {\n return '';\n }\n let extIdx = ext.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n const code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n }\n else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end) {\n end = firstNonSlashEnd;\n }\n else if (end === -1) {\n end = path.length;\n }\n return path.slice(start, end);\n }\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1) {\n return '';\n }\n return path.slice(start, end);\n },\n extname(path) {\n validateString(path, 'path');\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n let preDotState = 0;\n for (let i = path.length - 1; i >= 0; --i) {\n const code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n return '';\n }\n return path.slice(startDot, end);\n },\n format: _format.bind(null, '/'),\n parse(path) {\n validateString(path, 'path');\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) {\n return ret;\n }\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n let start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n }\n else {\n start = 0;\n }\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path.length - 1;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n let preDotState = 0;\n // Get non-dir info\n for (; i >= start; --i) {\n const code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (end !== -1) {\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\n if (startDot === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n ret.base = ret.name = path.slice(start, end);\n }\n else {\n ret.name = path.slice(start, startDot);\n ret.base = path.slice(start, end);\n ret.ext = path.slice(startDot, end);\n }\n }\n if (startPart > 0) {\n ret.dir = path.slice(0, startPart - 1);\n }\n else if (isAbsolute) {\n ret.dir = '/';\n }\n return ret;\n },\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\nposix.win32 = win32.win32 = win32;\nposix.posix = win32.posix = posix;\nconst normalize = (platformIsWin32 ? win32.normalize : posix.normalize);\nconst resolve = (platformIsWin32 ? win32.resolve : posix.resolve);\nconst relative = (platformIsWin32 ? win32.relative : posix.relative);\nconst dirname = (platformIsWin32 ? win32.dirname : posix.dirname);\nconst basename = (platformIsWin32 ? win32.basename : posix.basename);\nconst extname = (platformIsWin32 ? win32.extname : posix.extname);\nconst sep = (platformIsWin32 ? win32.sep : posix.sep);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/path.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/platform.js": +/*!*******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/platform.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LANGUAGE_DEFAULT: () => (/* binding */ LANGUAGE_DEFAULT),\n/* harmony export */ OS: () => (/* binding */ OS),\n/* harmony export */ globals: () => (/* binding */ globals),\n/* harmony export */ isAndroid: () => (/* binding */ isAndroid),\n/* harmony export */ isChrome: () => (/* binding */ isChrome),\n/* harmony export */ isEdge: () => (/* binding */ isEdge),\n/* harmony export */ isFirefox: () => (/* binding */ isFirefox),\n/* harmony export */ isIOS: () => (/* binding */ isIOS),\n/* harmony export */ isLinux: () => (/* binding */ isLinux),\n/* harmony export */ isLittleEndian: () => (/* binding */ isLittleEndian),\n/* harmony export */ isMacintosh: () => (/* binding */ isMacintosh),\n/* harmony export */ isMobile: () => (/* binding */ isMobile),\n/* harmony export */ isNative: () => (/* binding */ isNative),\n/* harmony export */ isSafari: () => (/* binding */ isSafari),\n/* harmony export */ isWeb: () => (/* binding */ isWeb),\n/* harmony export */ isWebWorker: () => (/* binding */ isWebWorker),\n/* harmony export */ isWindows: () => (/* binding */ isWindows),\n/* harmony export */ language: () => (/* binding */ language),\n/* harmony export */ setTimeout0: () => (/* binding */ setTimeout0),\n/* harmony export */ setTimeout0IsFaster: () => (/* binding */ setTimeout0IsFaster),\n/* harmony export */ userAgent: () => (/* binding */ userAgent)\n/* harmony export */ });\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../nls.js */ \"./node_modules/monaco-editor/esm/vs/nls.js\");\nvar _a;\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nconst LANGUAGE_DEFAULT = 'en';\nlet _isWindows = false;\nlet _isMacintosh = false;\nlet _isLinux = false;\nlet _isLinuxSnap = false;\nlet _isNative = false;\nlet _isWeb = false;\nlet _isElectron = false;\nlet _isIOS = false;\nlet _isCI = false;\nlet _isMobile = false;\nlet _locale = undefined;\nlet _language = LANGUAGE_DEFAULT;\nlet _platformLocale = LANGUAGE_DEFAULT;\nlet _translationsConfigFile = undefined;\nlet _userAgent = undefined;\n/**\n * @deprecated use `globalThis` instead\n */\nconst globals = (typeof self === 'object' ? self : typeof __webpack_require__.g === 'object' ? __webpack_require__.g : {});\nlet nodeProcess = undefined;\nif (typeof globals.vscode !== 'undefined' && typeof globals.vscode.process !== 'undefined') {\n // Native environment (sandboxed)\n nodeProcess = globals.vscode.process;\n}\nelse if (typeof process !== 'undefined') {\n // Native environment (non-sandboxed)\n nodeProcess = process;\n}\nconst isElectronProcess = typeof ((_a = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.versions) === null || _a === void 0 ? void 0 : _a.electron) === 'string';\nconst isElectronRenderer = isElectronProcess && (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.type) === 'renderer';\n// Web environment\nif (typeof navigator === 'object' && !isElectronRenderer) {\n _userAgent = navigator.userAgent;\n _isWindows = _userAgent.indexOf('Windows') >= 0;\n _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;\n _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;\n _isLinux = _userAgent.indexOf('Linux') >= 0;\n _isMobile = (_userAgent === null || _userAgent === void 0 ? void 0 : _userAgent.indexOf('Mobi')) >= 0;\n _isWeb = true;\n const configuredLocale = _nls_js__WEBPACK_IMPORTED_MODULE_0__.getConfiguredDefaultLocale(\n // This call _must_ be done in the file that calls `nls.getConfiguredDefaultLocale`\n // to ensure that the NLS AMD Loader plugin has been loaded and configured.\n // This is because the loader plugin decides what the default locale is based on\n // how it's able to resolve the strings.\n _nls_js__WEBPACK_IMPORTED_MODULE_0__.localize({ key: 'ensureLoaderPluginIsLoaded', comment: ['{Locked}'] }, '_'));\n _locale = configuredLocale || LANGUAGE_DEFAULT;\n _language = _locale;\n _platformLocale = navigator.language;\n}\n// Native environment\nelse if (typeof nodeProcess === 'object') {\n _isWindows = (nodeProcess.platform === 'win32');\n _isMacintosh = (nodeProcess.platform === 'darwin');\n _isLinux = (nodeProcess.platform === 'linux');\n _isLinuxSnap = _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION'];\n _isElectron = isElectronProcess;\n _isCI = !!nodeProcess.env['CI'] || !!nodeProcess.env['BUILD_ARTIFACTSTAGINGDIRECTORY'];\n _locale = LANGUAGE_DEFAULT;\n _language = LANGUAGE_DEFAULT;\n const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG'];\n if (rawNlsConfig) {\n try {\n const nlsConfig = JSON.parse(rawNlsConfig);\n const resolved = nlsConfig.availableLanguages['*'];\n _locale = nlsConfig.locale;\n _platformLocale = nlsConfig.osLocale;\n // VSCode's default language is 'en'\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\n _translationsConfigFile = nlsConfig._translationsConfigFile;\n }\n catch (e) {\n }\n }\n _isNative = true;\n}\n// Unknown environment\nelse {\n console.error('Unable to resolve platform.');\n}\nlet _platform = 0 /* Platform.Web */;\nif (_isMacintosh) {\n _platform = 1 /* Platform.Mac */;\n}\nelse if (_isWindows) {\n _platform = 3 /* Platform.Windows */;\n}\nelse if (_isLinux) {\n _platform = 2 /* Platform.Linux */;\n}\nconst isWindows = _isWindows;\nconst isMacintosh = _isMacintosh;\nconst isLinux = _isLinux;\nconst isNative = _isNative;\nconst isWeb = _isWeb;\nconst isWebWorker = (_isWeb && typeof globals.importScripts === 'function');\nconst isIOS = _isIOS;\nconst isMobile = _isMobile;\nconst userAgent = _userAgent;\n/**\n * The language used for the user interface. The format of\n * the string is all lower case (e.g. zh-tw for Traditional\n * Chinese)\n */\nconst language = _language;\nconst setTimeout0IsFaster = (typeof globals.postMessage === 'function' && !globals.importScripts);\n/**\n * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-.\n *\n * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay\n * that browsers set when the nesting level is > 5.\n */\nconst setTimeout0 = (() => {\n if (setTimeout0IsFaster) {\n const pending = [];\n globals.addEventListener('message', (e) => {\n if (e.data && e.data.vscodeScheduleAsyncWork) {\n for (let i = 0, len = pending.length; i < len; i++) {\n const candidate = pending[i];\n if (candidate.id === e.data.vscodeScheduleAsyncWork) {\n pending.splice(i, 1);\n candidate.callback();\n return;\n }\n }\n }\n });\n let lastId = 0;\n return (callback) => {\n const myId = ++lastId;\n pending.push({\n id: myId,\n callback: callback\n });\n globals.postMessage({ vscodeScheduleAsyncWork: myId }, '*');\n };\n }\n return (callback) => setTimeout(callback);\n})();\nconst OS = (_isMacintosh || _isIOS ? 2 /* OperatingSystem.Macintosh */ : (_isWindows ? 1 /* OperatingSystem.Windows */ : 3 /* OperatingSystem.Linux */));\nlet _isLittleEndian = true;\nlet _isLittleEndianComputed = false;\nfunction isLittleEndian() {\n if (!_isLittleEndianComputed) {\n _isLittleEndianComputed = true;\n const test = new Uint8Array(2);\n test[0] = 1;\n test[1] = 2;\n const view = new Uint16Array(test.buffer);\n _isLittleEndian = (view[0] === (2 << 8) + 1);\n }\n return _isLittleEndian;\n}\nconst isChrome = !!(userAgent && userAgent.indexOf('Chrome') >= 0);\nconst isFirefox = !!(userAgent && userAgent.indexOf('Firefox') >= 0);\nconst isSafari = !!(!isChrome && (userAgent && userAgent.indexOf('Safari') >= 0));\nconst isEdge = !!(userAgent && userAgent.indexOf('Edg/') >= 0);\nconst isAndroid = !!(userAgent && userAgent.indexOf('Android') >= 0);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/platform.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/process.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/process.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cwd: () => (/* binding */ cwd),\n/* harmony export */ env: () => (/* binding */ env),\n/* harmony export */ platform: () => (/* binding */ platform)\n/* harmony export */ });\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nlet safeProcess;\n// Native sandbox environment\nif (typeof _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode !== 'undefined' && typeof _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process !== 'undefined') {\n const sandboxProcess = _platform_js__WEBPACK_IMPORTED_MODULE_0__.globals.vscode.process;\n safeProcess = {\n get platform() { return sandboxProcess.platform; },\n get arch() { return sandboxProcess.arch; },\n get env() { return sandboxProcess.env; },\n cwd() { return sandboxProcess.cwd(); }\n };\n}\n// Native node.js environment\nelse if (typeof process !== 'undefined') {\n safeProcess = {\n get platform() { return process.platform; },\n get arch() { return process.arch; },\n get env() { return process.env; },\n cwd() { return process.env['VSCODE_CWD'] || process.cwd(); }\n };\n}\n// Web environment\nelse {\n safeProcess = {\n // Supported\n get platform() { return _platform_js__WEBPACK_IMPORTED_MODULE_0__.isWindows ? 'win32' : _platform_js__WEBPACK_IMPORTED_MODULE_0__.isMacintosh ? 'darwin' : 'linux'; },\n get arch() { return undefined; /* arch is undefined in web */ },\n // Unsupported\n get env() { return {}; },\n cwd() { return '/'; }\n };\n}\n/**\n * Provides safe access to the `cwd` property in node.js, sandboxed or web\n * environments.\n *\n * Note: in web, this property is hardcoded to be `/`.\n *\n * @skipMangle\n */\nconst cwd = safeProcess.cwd;\n/**\n * Provides safe access to the `env` property in node.js, sandboxed or web\n * environments.\n *\n * Note: in web, this property is hardcoded to be `{}`.\n */\nconst env = safeProcess.env;\n/**\n * Provides safe access to the `platform` property in node.js, sandboxed or web\n * environments.\n */\nconst platform = safeProcess.platform;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/process.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/range.js": +/*!****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/range.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Range: () => (/* binding */ Range)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar Range;\n(function (Range) {\n /**\n * Returns the intersection between two ranges as a range itself.\n * Returns `{ start: 0, end: 0 }` if the intersection is empty.\n */\n function intersect(one, other) {\n if (one.start >= other.end || other.start >= one.end) {\n return { start: 0, end: 0 };\n }\n const start = Math.max(one.start, other.start);\n const end = Math.min(one.end, other.end);\n if (end - start <= 0) {\n return { start: 0, end: 0 };\n }\n return { start, end };\n }\n Range.intersect = intersect;\n function isEmpty(range) {\n return range.end - range.start <= 0;\n }\n Range.isEmpty = isEmpty;\n function intersects(one, other) {\n return !isEmpty(intersect(one, other));\n }\n Range.intersects = intersects;\n function relativeComplement(one, other) {\n const result = [];\n const first = { start: one.start, end: Math.min(other.start, one.end) };\n const second = { start: Math.max(other.end, one.start), end: one.end };\n if (!isEmpty(first)) {\n result.push(first);\n }\n if (!isEmpty(second)) {\n result.push(second);\n }\n return result;\n }\n Range.relativeComplement = relativeComplement;\n})(Range || (Range = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/range.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/resources.js": +/*!********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/resources.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DataUri: () => (/* binding */ DataUri),\n/* harmony export */ ExtUri: () => (/* binding */ ExtUri),\n/* harmony export */ addTrailingPathSeparator: () => (/* binding */ addTrailingPathSeparator),\n/* harmony export */ basename: () => (/* binding */ basename),\n/* harmony export */ basenameOrAuthority: () => (/* binding */ basenameOrAuthority),\n/* harmony export */ dirname: () => (/* binding */ dirname),\n/* harmony export */ extUri: () => (/* binding */ extUri),\n/* harmony export */ extUriBiasedIgnorePathCase: () => (/* binding */ extUriBiasedIgnorePathCase),\n/* harmony export */ extUriIgnorePathCase: () => (/* binding */ extUriIgnorePathCase),\n/* harmony export */ extname: () => (/* binding */ extname),\n/* harmony export */ getComparisonKey: () => (/* binding */ getComparisonKey),\n/* harmony export */ hasTrailingPathSeparator: () => (/* binding */ hasTrailingPathSeparator),\n/* harmony export */ isAbsolutePath: () => (/* binding */ isAbsolutePath),\n/* harmony export */ isEqual: () => (/* binding */ isEqual),\n/* harmony export */ isEqualAuthority: () => (/* binding */ isEqualAuthority),\n/* harmony export */ isEqualOrParent: () => (/* binding */ isEqualOrParent),\n/* harmony export */ joinPath: () => (/* binding */ joinPath),\n/* harmony export */ normalizePath: () => (/* binding */ normalizePath),\n/* harmony export */ originalFSPath: () => (/* binding */ originalFSPath),\n/* harmony export */ relativePath: () => (/* binding */ relativePath),\n/* harmony export */ removeTrailingPathSeparator: () => (/* binding */ removeTrailingPathSeparator),\n/* harmony export */ resolvePath: () => (/* binding */ resolvePath)\n/* harmony export */ });\n/* harmony import */ var _extpath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./extpath.js */ \"./node_modules/monaco-editor/esm/vs/base/common/extpath.js\");\n/* harmony import */ var _network_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./network.js */ \"./node_modules/monaco-editor/esm/vs/base/common/network.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ \"./node_modules/monaco-editor/esm/vs/base/common/path.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/* harmony import */ var _uri_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./uri.js */ \"./node_modules/monaco-editor/esm/vs/base/common/uri.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nfunction originalFSPath(uri) {\n return (0,_uri_js__WEBPACK_IMPORTED_MODULE_5__.uriToFsPath)(uri, true);\n}\nclass ExtUri {\n constructor(_ignorePathCasing) {\n this._ignorePathCasing = _ignorePathCasing;\n }\n compare(uri1, uri2, ignoreFragment = false) {\n if (uri1 === uri2) {\n return 0;\n }\n return (0,_strings_js__WEBPACK_IMPORTED_MODULE_4__.compare)(this.getComparisonKey(uri1, ignoreFragment), this.getComparisonKey(uri2, ignoreFragment));\n }\n isEqual(uri1, uri2, ignoreFragment = false) {\n if (uri1 === uri2) {\n return true;\n }\n if (!uri1 || !uri2) {\n return false;\n }\n return this.getComparisonKey(uri1, ignoreFragment) === this.getComparisonKey(uri2, ignoreFragment);\n }\n getComparisonKey(uri, ignoreFragment = false) {\n return uri.with({\n path: this._ignorePathCasing(uri) ? uri.path.toLowerCase() : undefined,\n fragment: ignoreFragment ? null : undefined\n }).toString();\n }\n isEqualOrParent(base, parentCandidate, ignoreFragment = false) {\n if (base.scheme === parentCandidate.scheme) {\n if (base.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file) {\n return _extpath_js__WEBPACK_IMPORTED_MODULE_0__.isEqualOrParent(originalFSPath(base), originalFSPath(parentCandidate), this._ignorePathCasing(base)) && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment);\n }\n if (isEqualAuthority(base.authority, parentCandidate.authority)) {\n return _extpath_js__WEBPACK_IMPORTED_MODULE_0__.isEqualOrParent(base.path, parentCandidate.path, this._ignorePathCasing(base), '/') && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment);\n }\n }\n return false;\n }\n // --- path math\n joinPath(resource, ...pathFragment) {\n return _uri_js__WEBPACK_IMPORTED_MODULE_5__.URI.joinPath(resource, ...pathFragment);\n }\n basenameOrAuthority(resource) {\n return basename(resource) || resource.authority;\n }\n basename(resource) {\n return _path_js__WEBPACK_IMPORTED_MODULE_2__.posix.basename(resource.path);\n }\n extname(resource) {\n return _path_js__WEBPACK_IMPORTED_MODULE_2__.posix.extname(resource.path);\n }\n dirname(resource) {\n if (resource.path.length === 0) {\n return resource;\n }\n let dirname;\n if (resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file) {\n dirname = _uri_js__WEBPACK_IMPORTED_MODULE_5__.URI.file(_path_js__WEBPACK_IMPORTED_MODULE_2__.dirname(originalFSPath(resource))).path;\n }\n else {\n dirname = _path_js__WEBPACK_IMPORTED_MODULE_2__.posix.dirname(resource.path);\n if (resource.authority && dirname.length && dirname.charCodeAt(0) !== 47 /* CharCode.Slash */) {\n console.error(`dirname(\"${resource.toString})) resulted in a relative path`);\n dirname = '/'; // If a URI contains an authority component, then the path component must either be empty or begin with a CharCode.Slash (\"/\") character\n }\n }\n return resource.with({\n path: dirname\n });\n }\n normalizePath(resource) {\n if (!resource.path.length) {\n return resource;\n }\n let normalizedPath;\n if (resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file) {\n normalizedPath = _uri_js__WEBPACK_IMPORTED_MODULE_5__.URI.file(_path_js__WEBPACK_IMPORTED_MODULE_2__.normalize(originalFSPath(resource))).path;\n }\n else {\n normalizedPath = _path_js__WEBPACK_IMPORTED_MODULE_2__.posix.normalize(resource.path);\n }\n return resource.with({\n path: normalizedPath\n });\n }\n relativePath(from, to) {\n if (from.scheme !== to.scheme || !isEqualAuthority(from.authority, to.authority)) {\n return undefined;\n }\n if (from.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file) {\n const relativePath = _path_js__WEBPACK_IMPORTED_MODULE_2__.relative(originalFSPath(from), originalFSPath(to));\n return _platform_js__WEBPACK_IMPORTED_MODULE_3__.isWindows ? _extpath_js__WEBPACK_IMPORTED_MODULE_0__.toSlashes(relativePath) : relativePath;\n }\n let fromPath = from.path || '/';\n const toPath = to.path || '/';\n if (this._ignorePathCasing(from)) {\n // make casing of fromPath match toPath\n let i = 0;\n for (const len = Math.min(fromPath.length, toPath.length); i < len; i++) {\n if (fromPath.charCodeAt(i) !== toPath.charCodeAt(i)) {\n if (fromPath.charAt(i).toLowerCase() !== toPath.charAt(i).toLowerCase()) {\n break;\n }\n }\n }\n fromPath = toPath.substr(0, i) + fromPath.substr(i);\n }\n return _path_js__WEBPACK_IMPORTED_MODULE_2__.posix.relative(fromPath, toPath);\n }\n resolvePath(base, path) {\n if (base.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file) {\n const newURI = _uri_js__WEBPACK_IMPORTED_MODULE_5__.URI.file(_path_js__WEBPACK_IMPORTED_MODULE_2__.resolve(originalFSPath(base), path));\n return base.with({\n authority: newURI.authority,\n path: newURI.path\n });\n }\n path = _extpath_js__WEBPACK_IMPORTED_MODULE_0__.toPosixPath(path); // we allow path to be a windows path\n return base.with({\n path: _path_js__WEBPACK_IMPORTED_MODULE_2__.posix.resolve(base.path, path)\n });\n }\n // --- misc\n isAbsolutePath(resource) {\n return !!resource.path && resource.path[0] === '/';\n }\n isEqualAuthority(a1, a2) {\n return a1 === a2 || (a1 !== undefined && a2 !== undefined && (0,_strings_js__WEBPACK_IMPORTED_MODULE_4__.equalsIgnoreCase)(a1, a2));\n }\n hasTrailingPathSeparator(resource, sep = _path_js__WEBPACK_IMPORTED_MODULE_2__.sep) {\n if (resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file) {\n const fsp = originalFSPath(resource);\n return fsp.length > _extpath_js__WEBPACK_IMPORTED_MODULE_0__.getRoot(fsp).length && fsp[fsp.length - 1] === sep;\n }\n else {\n const p = resource.path;\n return (p.length > 1 && p.charCodeAt(p.length - 1) === 47 /* CharCode.Slash */) && !(/^[a-zA-Z]:(\\/$|\\\\$)/.test(resource.fsPath)); // ignore the slash at offset 0\n }\n }\n removeTrailingPathSeparator(resource, sep = _path_js__WEBPACK_IMPORTED_MODULE_2__.sep) {\n // Make sure that the path isn't a drive letter. A trailing separator there is not removable.\n if (hasTrailingPathSeparator(resource, sep)) {\n return resource.with({ path: resource.path.substr(0, resource.path.length - 1) });\n }\n return resource;\n }\n addTrailingPathSeparator(resource, sep = _path_js__WEBPACK_IMPORTED_MODULE_2__.sep) {\n let isRootSep = false;\n if (resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file) {\n const fsp = originalFSPath(resource);\n isRootSep = ((fsp !== undefined) && (fsp.length === _extpath_js__WEBPACK_IMPORTED_MODULE_0__.getRoot(fsp).length) && (fsp[fsp.length - 1] === sep));\n }\n else {\n sep = '/';\n const p = resource.path;\n isRootSep = p.length === 1 && p.charCodeAt(p.length - 1) === 47 /* CharCode.Slash */;\n }\n if (!isRootSep && !hasTrailingPathSeparator(resource, sep)) {\n return resource.with({ path: resource.path + '/' });\n }\n return resource;\n }\n}\n/**\n * Unbiased utility that takes uris \"as they are\". This means it can be interchanged with\n * uri#toString() usages. The following is true\n * ```\n * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri))\n * ```\n */\nconst extUri = new ExtUri(() => false);\n/**\n * BIASED utility that _mostly_ ignored the case of urs paths. ONLY use this util if you\n * understand what you are doing.\n *\n * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged.\n *\n * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient\n * because those uris come from a \"trustworthy source\". When creating unknown uris it's always\n * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path\n * casing matters.\n */\nconst extUriBiasedIgnorePathCase = new ExtUri(uri => {\n // A file scheme resource is in the same platform as code, so ignore case for non linux platforms\n // Resource can be from another platform. Lowering the case as an hack. Should come from File system provider\n return uri.scheme === _network_js__WEBPACK_IMPORTED_MODULE_1__.Schemas.file ? !_platform_js__WEBPACK_IMPORTED_MODULE_3__.isLinux : true;\n});\n/**\n * BIASED utility that always ignores the casing of uris paths. ONLY use this util if you\n * understand what you are doing.\n *\n * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged.\n *\n * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient\n * because those uris come from a \"trustworthy source\". When creating unknown uris it's always\n * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path\n * casing matters.\n */\nconst extUriIgnorePathCase = new ExtUri(_ => true);\nconst isEqual = extUri.isEqual.bind(extUri);\nconst isEqualOrParent = extUri.isEqualOrParent.bind(extUri);\nconst getComparisonKey = extUri.getComparisonKey.bind(extUri);\nconst basenameOrAuthority = extUri.basenameOrAuthority.bind(extUri);\nconst basename = extUri.basename.bind(extUri);\nconst extname = extUri.extname.bind(extUri);\nconst dirname = extUri.dirname.bind(extUri);\nconst joinPath = extUri.joinPath.bind(extUri);\nconst normalizePath = extUri.normalizePath.bind(extUri);\nconst relativePath = extUri.relativePath.bind(extUri);\nconst resolvePath = extUri.resolvePath.bind(extUri);\nconst isAbsolutePath = extUri.isAbsolutePath.bind(extUri);\nconst isEqualAuthority = extUri.isEqualAuthority.bind(extUri);\nconst hasTrailingPathSeparator = extUri.hasTrailingPathSeparator.bind(extUri);\nconst removeTrailingPathSeparator = extUri.removeTrailingPathSeparator.bind(extUri);\nconst addTrailingPathSeparator = extUri.addTrailingPathSeparator.bind(extUri);\n/**\n * Data URI related helpers.\n */\nvar DataUri;\n(function (DataUri) {\n DataUri.META_DATA_LABEL = 'label';\n DataUri.META_DATA_DESCRIPTION = 'description';\n DataUri.META_DATA_SIZE = 'size';\n DataUri.META_DATA_MIME = 'mime';\n function parseMetaData(dataUri) {\n const metadata = new Map();\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\n // the metadata is: size:2313;label:SomeLabel;description:SomeDescription\n const meta = dataUri.path.substring(dataUri.path.indexOf(';') + 1, dataUri.path.lastIndexOf(';'));\n meta.split(';').forEach(property => {\n const [key, value] = property.split(':');\n if (key && value) {\n metadata.set(key, value);\n }\n });\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\n // the mime is: image/png\n const mime = dataUri.path.substring(0, dataUri.path.indexOf(';'));\n if (mime) {\n metadata.set(DataUri.META_DATA_MIME, mime);\n }\n return metadata;\n }\n DataUri.parseMetaData = parseMetaData;\n})(DataUri || (DataUri = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/resources.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/scrollable.js": +/*!*********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/scrollable.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScrollState: () => (/* binding */ ScrollState),\n/* harmony export */ Scrollable: () => (/* binding */ Scrollable),\n/* harmony export */ SmoothScrollingOperation: () => (/* binding */ SmoothScrollingOperation),\n/* harmony export */ SmoothScrollingUpdate: () => (/* binding */ SmoothScrollingUpdate)\n/* harmony export */ });\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nclass ScrollState {\n constructor(_forceIntegerValues, width, scrollWidth, scrollLeft, height, scrollHeight, scrollTop) {\n this._forceIntegerValues = _forceIntegerValues;\n this._scrollStateBrand = undefined;\n if (this._forceIntegerValues) {\n width = width | 0;\n scrollWidth = scrollWidth | 0;\n scrollLeft = scrollLeft | 0;\n height = height | 0;\n scrollHeight = scrollHeight | 0;\n scrollTop = scrollTop | 0;\n }\n this.rawScrollLeft = scrollLeft; // before validation\n this.rawScrollTop = scrollTop; // before validation\n if (width < 0) {\n width = 0;\n }\n if (scrollLeft + width > scrollWidth) {\n scrollLeft = scrollWidth - width;\n }\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n if (height < 0) {\n height = 0;\n }\n if (scrollTop + height > scrollHeight) {\n scrollTop = scrollHeight - height;\n }\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n this.width = width;\n this.scrollWidth = scrollWidth;\n this.scrollLeft = scrollLeft;\n this.height = height;\n this.scrollHeight = scrollHeight;\n this.scrollTop = scrollTop;\n }\n equals(other) {\n return (this.rawScrollLeft === other.rawScrollLeft\n && this.rawScrollTop === other.rawScrollTop\n && this.width === other.width\n && this.scrollWidth === other.scrollWidth\n && this.scrollLeft === other.scrollLeft\n && this.height === other.height\n && this.scrollHeight === other.scrollHeight\n && this.scrollTop === other.scrollTop);\n }\n withScrollDimensions(update, useRawScrollPositions) {\n return new ScrollState(this._forceIntegerValues, (typeof update.width !== 'undefined' ? update.width : this.width), (typeof update.scrollWidth !== 'undefined' ? update.scrollWidth : this.scrollWidth), useRawScrollPositions ? this.rawScrollLeft : this.scrollLeft, (typeof update.height !== 'undefined' ? update.height : this.height), (typeof update.scrollHeight !== 'undefined' ? update.scrollHeight : this.scrollHeight), useRawScrollPositions ? this.rawScrollTop : this.scrollTop);\n }\n withScrollPosition(update) {\n return new ScrollState(this._forceIntegerValues, this.width, this.scrollWidth, (typeof update.scrollLeft !== 'undefined' ? update.scrollLeft : this.rawScrollLeft), this.height, this.scrollHeight, (typeof update.scrollTop !== 'undefined' ? update.scrollTop : this.rawScrollTop));\n }\n createScrollEvent(previous, inSmoothScrolling) {\n const widthChanged = (this.width !== previous.width);\n const scrollWidthChanged = (this.scrollWidth !== previous.scrollWidth);\n const scrollLeftChanged = (this.scrollLeft !== previous.scrollLeft);\n const heightChanged = (this.height !== previous.height);\n const scrollHeightChanged = (this.scrollHeight !== previous.scrollHeight);\n const scrollTopChanged = (this.scrollTop !== previous.scrollTop);\n return {\n inSmoothScrolling: inSmoothScrolling,\n oldWidth: previous.width,\n oldScrollWidth: previous.scrollWidth,\n oldScrollLeft: previous.scrollLeft,\n width: this.width,\n scrollWidth: this.scrollWidth,\n scrollLeft: this.scrollLeft,\n oldHeight: previous.height,\n oldScrollHeight: previous.scrollHeight,\n oldScrollTop: previous.scrollTop,\n height: this.height,\n scrollHeight: this.scrollHeight,\n scrollTop: this.scrollTop,\n widthChanged: widthChanged,\n scrollWidthChanged: scrollWidthChanged,\n scrollLeftChanged: scrollLeftChanged,\n heightChanged: heightChanged,\n scrollHeightChanged: scrollHeightChanged,\n scrollTopChanged: scrollTopChanged,\n };\n }\n}\nclass Scrollable extends _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__.Disposable {\n constructor(options) {\n super();\n this._scrollableBrand = undefined;\n this._onScroll = this._register(new _event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter());\n this.onScroll = this._onScroll.event;\n this._smoothScrollDuration = options.smoothScrollDuration;\n this._scheduleAtNextAnimationFrame = options.scheduleAtNextAnimationFrame;\n this._state = new ScrollState(options.forceIntegerValues, 0, 0, 0, 0, 0, 0);\n this._smoothScrolling = null;\n }\n dispose() {\n if (this._smoothScrolling) {\n this._smoothScrolling.dispose();\n this._smoothScrolling = null;\n }\n super.dispose();\n }\n setSmoothScrollDuration(smoothScrollDuration) {\n this._smoothScrollDuration = smoothScrollDuration;\n }\n validateScrollPosition(scrollPosition) {\n return this._state.withScrollPosition(scrollPosition);\n }\n getScrollDimensions() {\n return this._state;\n }\n setScrollDimensions(dimensions, useRawScrollPositions) {\n var _a;\n const newState = this._state.withScrollDimensions(dimensions, useRawScrollPositions);\n this._setState(newState, Boolean(this._smoothScrolling));\n // Validate outstanding animated scroll position target\n (_a = this._smoothScrolling) === null || _a === void 0 ? void 0 : _a.acceptScrollDimensions(this._state);\n }\n /**\n * Returns the final scroll position that the instance will have once the smooth scroll animation concludes.\n * If no scroll animation is occurring, it will return the current scroll position instead.\n */\n getFutureScrollPosition() {\n if (this._smoothScrolling) {\n return this._smoothScrolling.to;\n }\n return this._state;\n }\n /**\n * Returns the current scroll position.\n * Note: This result might be an intermediate scroll position, as there might be an ongoing smooth scroll animation.\n */\n getCurrentScrollPosition() {\n return this._state;\n }\n setScrollPositionNow(update) {\n // no smooth scrolling requested\n const newState = this._state.withScrollPosition(update);\n // Terminate any outstanding smooth scrolling\n if (this._smoothScrolling) {\n this._smoothScrolling.dispose();\n this._smoothScrolling = null;\n }\n this._setState(newState, false);\n }\n setScrollPositionSmooth(update, reuseAnimation) {\n if (this._smoothScrollDuration === 0) {\n // Smooth scrolling not supported.\n return this.setScrollPositionNow(update);\n }\n if (this._smoothScrolling) {\n // Combine our pending scrollLeft/scrollTop with incoming scrollLeft/scrollTop\n update = {\n scrollLeft: (typeof update.scrollLeft === 'undefined' ? this._smoothScrolling.to.scrollLeft : update.scrollLeft),\n scrollTop: (typeof update.scrollTop === 'undefined' ? this._smoothScrolling.to.scrollTop : update.scrollTop)\n };\n // Validate `update`\n const validTarget = this._state.withScrollPosition(update);\n if (this._smoothScrolling.to.scrollLeft === validTarget.scrollLeft && this._smoothScrolling.to.scrollTop === validTarget.scrollTop) {\n // No need to interrupt or extend the current animation since we're going to the same place\n return;\n }\n let newSmoothScrolling;\n if (reuseAnimation) {\n newSmoothScrolling = new SmoothScrollingOperation(this._smoothScrolling.from, validTarget, this._smoothScrolling.startTime, this._smoothScrolling.duration);\n }\n else {\n newSmoothScrolling = this._smoothScrolling.combine(this._state, validTarget, this._smoothScrollDuration);\n }\n this._smoothScrolling.dispose();\n this._smoothScrolling = newSmoothScrolling;\n }\n else {\n // Validate `update`\n const validTarget = this._state.withScrollPosition(update);\n this._smoothScrolling = SmoothScrollingOperation.start(this._state, validTarget, this._smoothScrollDuration);\n }\n // Begin smooth scrolling animation\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\n if (!this._smoothScrolling) {\n return;\n }\n this._smoothScrolling.animationFrameDisposable = null;\n this._performSmoothScrolling();\n });\n }\n hasPendingScrollAnimation() {\n return Boolean(this._smoothScrolling);\n }\n _performSmoothScrolling() {\n if (!this._smoothScrolling) {\n return;\n }\n const update = this._smoothScrolling.tick();\n const newState = this._state.withScrollPosition(update);\n this._setState(newState, true);\n if (!this._smoothScrolling) {\n // Looks like someone canceled the smooth scrolling\n // from the scroll event handler\n return;\n }\n if (update.isDone) {\n this._smoothScrolling.dispose();\n this._smoothScrolling = null;\n return;\n }\n // Continue smooth scrolling animation\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\n if (!this._smoothScrolling) {\n return;\n }\n this._smoothScrolling.animationFrameDisposable = null;\n this._performSmoothScrolling();\n });\n }\n _setState(newState, inSmoothScrolling) {\n const oldState = this._state;\n if (oldState.equals(newState)) {\n // no change\n return;\n }\n this._state = newState;\n this._onScroll.fire(this._state.createScrollEvent(oldState, inSmoothScrolling));\n }\n}\nclass SmoothScrollingUpdate {\n constructor(scrollLeft, scrollTop, isDone) {\n this.scrollLeft = scrollLeft;\n this.scrollTop = scrollTop;\n this.isDone = isDone;\n }\n}\nfunction createEaseOutCubic(from, to) {\n const delta = to - from;\n return function (completion) {\n return from + delta * easeOutCubic(completion);\n };\n}\nfunction createComposed(a, b, cut) {\n return function (completion) {\n if (completion < cut) {\n return a(completion / cut);\n }\n return b((completion - cut) / (1 - cut));\n };\n}\nclass SmoothScrollingOperation {\n constructor(from, to, startTime, duration) {\n this.from = from;\n this.to = to;\n this.duration = duration;\n this.startTime = startTime;\n this.animationFrameDisposable = null;\n this._initAnimations();\n }\n _initAnimations() {\n this.scrollLeft = this._initAnimation(this.from.scrollLeft, this.to.scrollLeft, this.to.width);\n this.scrollTop = this._initAnimation(this.from.scrollTop, this.to.scrollTop, this.to.height);\n }\n _initAnimation(from, to, viewportSize) {\n const delta = Math.abs(from - to);\n if (delta > 2.5 * viewportSize) {\n let stop1, stop2;\n if (from < to) {\n // scroll to 75% of the viewportSize\n stop1 = from + 0.75 * viewportSize;\n stop2 = to - 0.75 * viewportSize;\n }\n else {\n stop1 = from - 0.75 * viewportSize;\n stop2 = to + 0.75 * viewportSize;\n }\n return createComposed(createEaseOutCubic(from, stop1), createEaseOutCubic(stop2, to), 0.33);\n }\n return createEaseOutCubic(from, to);\n }\n dispose() {\n if (this.animationFrameDisposable !== null) {\n this.animationFrameDisposable.dispose();\n this.animationFrameDisposable = null;\n }\n }\n acceptScrollDimensions(state) {\n this.to = state.withScrollPosition(this.to);\n this._initAnimations();\n }\n tick() {\n return this._tick(Date.now());\n }\n _tick(now) {\n const completion = (now - this.startTime) / this.duration;\n if (completion < 1) {\n const newScrollLeft = this.scrollLeft(completion);\n const newScrollTop = this.scrollTop(completion);\n return new SmoothScrollingUpdate(newScrollLeft, newScrollTop, false);\n }\n return new SmoothScrollingUpdate(this.to.scrollLeft, this.to.scrollTop, true);\n }\n combine(from, to, duration) {\n return SmoothScrollingOperation.start(from, to, duration);\n }\n static start(from, to, duration) {\n // +10 / -10 : pretend the animation already started for a quicker response to a scroll request\n duration = duration + 10;\n const startTime = Date.now() - 10;\n return new SmoothScrollingOperation(from, to, startTime, duration);\n }\n}\nfunction easeInCubic(t) {\n return Math.pow(t, 3);\n}\nfunction easeOutCubic(t) {\n return 1 - easeInCubic(1 - t);\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/scrollable.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/search.js": +/*!*****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/search.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ buildReplaceStringWithCasePreserved: () => (/* binding */ buildReplaceStringWithCasePreserved)\n/* harmony export */ });\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction buildReplaceStringWithCasePreserved(matches, pattern) {\n if (matches && (matches[0] !== '')) {\n const containsHyphens = validateSpecificSpecialCharacter(matches, pattern, '-');\n const containsUnderscores = validateSpecificSpecialCharacter(matches, pattern, '_');\n if (containsHyphens && !containsUnderscores) {\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '-');\n }\n else if (!containsHyphens && containsUnderscores) {\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '_');\n }\n if (matches[0].toUpperCase() === matches[0]) {\n return pattern.toUpperCase();\n }\n else if (matches[0].toLowerCase() === matches[0]) {\n return pattern.toLowerCase();\n }\n else if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.containsUppercaseCharacter(matches[0][0]) && pattern.length > 0) {\n return pattern[0].toUpperCase() + pattern.substr(1);\n }\n else if (matches[0][0].toUpperCase() !== matches[0][0] && pattern.length > 0) {\n return pattern[0].toLowerCase() + pattern.substr(1);\n }\n else {\n // we don't understand its pattern yet.\n return pattern;\n }\n }\n else {\n return pattern;\n }\n}\nfunction validateSpecificSpecialCharacter(matches, pattern, specialCharacter) {\n const doesContainSpecialCharacter = matches[0].indexOf(specialCharacter) !== -1 && pattern.indexOf(specialCharacter) !== -1;\n return doesContainSpecialCharacter && matches[0].split(specialCharacter).length === pattern.split(specialCharacter).length;\n}\nfunction buildReplaceStringForSpecificSpecialCharacter(matches, pattern, specialCharacter) {\n const splitPatternAtSpecialCharacter = pattern.split(specialCharacter);\n const splitMatchAtSpecialCharacter = matches[0].split(specialCharacter);\n let replaceString = '';\n splitPatternAtSpecialCharacter.forEach((splitValue, index) => {\n replaceString += buildReplaceStringWithCasePreserved([splitMatchAtSpecialCharacter[index]], splitValue) + specialCharacter;\n });\n return replaceString.slice(0, -1);\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/search.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/severity.js": +/*!*******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/severity.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nvar Severity;\n(function (Severity) {\n Severity[Severity[\"Ignore\"] = 0] = \"Ignore\";\n Severity[Severity[\"Info\"] = 1] = \"Info\";\n Severity[Severity[\"Warning\"] = 2] = \"Warning\";\n Severity[Severity[\"Error\"] = 3] = \"Error\";\n})(Severity || (Severity = {}));\n(function (Severity) {\n const _error = 'error';\n const _warning = 'warning';\n const _warn = 'warn';\n const _info = 'info';\n const _ignore = 'ignore';\n /**\n * Parses 'error', 'warning', 'warn', 'info' in call casings\n * and falls back to ignore.\n */\n function fromValue(value) {\n if (!value) {\n return Severity.Ignore;\n }\n if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.equalsIgnoreCase(_error, value)) {\n return Severity.Error;\n }\n if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.equalsIgnoreCase(_warning, value) || _strings_js__WEBPACK_IMPORTED_MODULE_0__.equalsIgnoreCase(_warn, value)) {\n return Severity.Warning;\n }\n if (_strings_js__WEBPACK_IMPORTED_MODULE_0__.equalsIgnoreCase(_info, value)) {\n return Severity.Info;\n }\n return Severity.Ignore;\n }\n Severity.fromValue = fromValue;\n function toString(severity) {\n switch (severity) {\n case Severity.Error: return _error;\n case Severity.Warning: return _warning;\n case Severity.Info: return _info;\n default: return _ignore;\n }\n }\n Severity.toString = toString;\n})(Severity || (Severity = {}));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Severity);\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/severity.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js": +/*!********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StopWatch: () => (/* binding */ StopWatch)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nconst hasPerformanceNow = (globalThis.performance && typeof globalThis.performance.now === 'function');\nclass StopWatch {\n static create(highResolution) {\n return new StopWatch(highResolution);\n }\n constructor(highResolution) {\n this._now = hasPerformanceNow && highResolution === false ? Date.now : globalThis.performance.now.bind(globalThis.performance);\n this._startTime = this._now();\n this._stopTime = -1;\n }\n stop() {\n this._stopTime = this._now();\n }\n elapsed() {\n if (this._stopTime !== -1) {\n return this._stopTime - this._startTime;\n }\n return this._now() - this._startTime;\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/strings.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/strings.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AmbiguousCharacters: () => (/* binding */ AmbiguousCharacters),\n/* harmony export */ CodePointIterator: () => (/* binding */ CodePointIterator),\n/* harmony export */ GraphemeIterator: () => (/* binding */ GraphemeIterator),\n/* harmony export */ InvisibleCharacters: () => (/* binding */ InvisibleCharacters),\n/* harmony export */ UNUSUAL_LINE_TERMINATORS: () => (/* binding */ UNUSUAL_LINE_TERMINATORS),\n/* harmony export */ UTF8_BOM_CHARACTER: () => (/* binding */ UTF8_BOM_CHARACTER),\n/* harmony export */ commonPrefixLength: () => (/* binding */ commonPrefixLength),\n/* harmony export */ commonSuffixLength: () => (/* binding */ commonSuffixLength),\n/* harmony export */ compare: () => (/* binding */ compare),\n/* harmony export */ compareIgnoreCase: () => (/* binding */ compareIgnoreCase),\n/* harmony export */ compareSubstring: () => (/* binding */ compareSubstring),\n/* harmony export */ compareSubstringIgnoreCase: () => (/* binding */ compareSubstringIgnoreCase),\n/* harmony export */ computeCodePoint: () => (/* binding */ computeCodePoint),\n/* harmony export */ containsRTL: () => (/* binding */ containsRTL),\n/* harmony export */ containsUnusualLineTerminators: () => (/* binding */ containsUnusualLineTerminators),\n/* harmony export */ containsUppercaseCharacter: () => (/* binding */ containsUppercaseCharacter),\n/* harmony export */ convertSimple2RegExpPattern: () => (/* binding */ convertSimple2RegExpPattern),\n/* harmony export */ createRegExp: () => (/* binding */ createRegExp),\n/* harmony export */ equalsIgnoreCase: () => (/* binding */ equalsIgnoreCase),\n/* harmony export */ escape: () => (/* binding */ escape),\n/* harmony export */ escapeRegExpCharacters: () => (/* binding */ escapeRegExpCharacters),\n/* harmony export */ firstNonWhitespaceIndex: () => (/* binding */ firstNonWhitespaceIndex),\n/* harmony export */ format: () => (/* binding */ format),\n/* harmony export */ getCharContainingOffset: () => (/* binding */ getCharContainingOffset),\n/* harmony export */ getLeadingWhitespace: () => (/* binding */ getLeadingWhitespace),\n/* harmony export */ getLeftDeleteOffset: () => (/* binding */ getLeftDeleteOffset),\n/* harmony export */ getNextCodePoint: () => (/* binding */ getNextCodePoint),\n/* harmony export */ isAsciiDigit: () => (/* binding */ isAsciiDigit),\n/* harmony export */ isBasicASCII: () => (/* binding */ isBasicASCII),\n/* harmony export */ isEmojiImprecise: () => (/* binding */ isEmojiImprecise),\n/* harmony export */ isFalsyOrWhitespace: () => (/* binding */ isFalsyOrWhitespace),\n/* harmony export */ isFullWidthCharacter: () => (/* binding */ isFullWidthCharacter),\n/* harmony export */ isHighSurrogate: () => (/* binding */ isHighSurrogate),\n/* harmony export */ isLowSurrogate: () => (/* binding */ isLowSurrogate),\n/* harmony export */ isLowerAsciiLetter: () => (/* binding */ isLowerAsciiLetter),\n/* harmony export */ isUpperAsciiLetter: () => (/* binding */ isUpperAsciiLetter),\n/* harmony export */ lastNonWhitespaceIndex: () => (/* binding */ lastNonWhitespaceIndex),\n/* harmony export */ ltrim: () => (/* binding */ ltrim),\n/* harmony export */ nextCharLength: () => (/* binding */ nextCharLength),\n/* harmony export */ noBreakWhitespace: () => (/* binding */ noBreakWhitespace),\n/* harmony export */ prevCharLength: () => (/* binding */ prevCharLength),\n/* harmony export */ regExpFlags: () => (/* binding */ regExpFlags),\n/* harmony export */ regExpLeadsToEndlessLoop: () => (/* binding */ regExpLeadsToEndlessLoop),\n/* harmony export */ rtrim: () => (/* binding */ rtrim),\n/* harmony export */ singleLetterHash: () => (/* binding */ singleLetterHash),\n/* harmony export */ splitLines: () => (/* binding */ splitLines),\n/* harmony export */ startsWithIgnoreCase: () => (/* binding */ startsWithIgnoreCase),\n/* harmony export */ startsWithUTF8BOM: () => (/* binding */ startsWithUTF8BOM),\n/* harmony export */ stripWildcards: () => (/* binding */ stripWildcards),\n/* harmony export */ trim: () => (/* binding */ trim)\n/* harmony export */ });\n/* harmony import */ var _cache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cache.js */ \"./node_modules/monaco-editor/esm/vs/base/common/cache.js\");\n/* harmony import */ var _lazy_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lazy.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lazy.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\n\n\nfunction isFalsyOrWhitespace(str) {\n if (!str || typeof str !== 'string') {\n return true;\n }\n return str.trim().length === 0;\n}\nconst _formatRegexp = /{(\\d+)}/g;\n/**\n * Helper to produce a string with a variable number of arguments. Insert variable segments\n * into the string using the {n} notation where N is the index of the argument following the string.\n * @param value string to which formatting is applied\n * @param args replacements for {n}-entries\n */\nfunction format(value, ...args) {\n if (args.length === 0) {\n return value;\n }\n return value.replace(_formatRegexp, function (match, group) {\n const idx = parseInt(group, 10);\n return isNaN(idx) || idx < 0 || idx >= args.length ?\n match :\n args[idx];\n });\n}\n/**\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\n * being used e.g. in HTMLElement.innerHTML.\n */\nfunction escape(html) {\n return html.replace(/[<>&]/g, function (match) {\n switch (match) {\n case '<': return '<';\n case '>': return '>';\n case '&': return '&';\n default: return match;\n }\n });\n}\n/**\n * Escapes regular expression characters in a given string\n */\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\n}\n/**\n * Removes all occurrences of needle from the beginning and end of haystack.\n * @param haystack string to trim\n * @param needle the thing to trim (default is a blank)\n */\nfunction trim(haystack, needle = ' ') {\n const trimmed = ltrim(haystack, needle);\n return rtrim(trimmed, needle);\n}\n/**\n * Removes all occurrences of needle from the beginning of haystack.\n * @param haystack string to trim\n * @param needle the thing to trim\n */\nfunction ltrim(haystack, needle) {\n if (!haystack || !needle) {\n return haystack;\n }\n const needleLen = needle.length;\n if (needleLen === 0 || haystack.length === 0) {\n return haystack;\n }\n let offset = 0;\n while (haystack.indexOf(needle, offset) === offset) {\n offset = offset + needleLen;\n }\n return haystack.substring(offset);\n}\n/**\n * Removes all occurrences of needle from the end of haystack.\n * @param haystack string to trim\n * @param needle the thing to trim\n */\nfunction rtrim(haystack, needle) {\n if (!haystack || !needle) {\n return haystack;\n }\n const needleLen = needle.length, haystackLen = haystack.length;\n if (needleLen === 0 || haystackLen === 0) {\n return haystack;\n }\n let offset = haystackLen, idx = -1;\n while (true) {\n idx = haystack.lastIndexOf(needle, offset - 1);\n if (idx === -1 || idx + needleLen !== offset) {\n break;\n }\n if (idx === 0) {\n return '';\n }\n offset = idx;\n }\n return haystack.substring(0, offset);\n}\nfunction convertSimple2RegExpPattern(pattern) {\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\n}\nfunction stripWildcards(pattern) {\n return pattern.replace(/\\*/g, '');\n}\nfunction createRegExp(searchString, isRegex, options = {}) {\n if (!searchString) {\n throw new Error('Cannot create regex from empty string');\n }\n if (!isRegex) {\n searchString = escapeRegExpCharacters(searchString);\n }\n if (options.wholeWord) {\n if (!/\\B/.test(searchString.charAt(0))) {\n searchString = '\\\\b' + searchString;\n }\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\n searchString = searchString + '\\\\b';\n }\n }\n let modifiers = '';\n if (options.global) {\n modifiers += 'g';\n }\n if (!options.matchCase) {\n modifiers += 'i';\n }\n if (options.multiline) {\n modifiers += 'm';\n }\n if (options.unicode) {\n modifiers += 'u';\n }\n return new RegExp(searchString, modifiers);\n}\nfunction regExpLeadsToEndlessLoop(regexp) {\n // Exit early if it's one of these special cases which are meant to match\n // against an empty string\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\n return false;\n }\n // We check against an empty string. If the regular expression doesn't advance\n // (e.g. ends in an endless loop) it will match an empty string.\n const match = regexp.exec('');\n return !!(match && regexp.lastIndex === 0);\n}\nfunction regExpFlags(regexp) {\n return (regexp.global ? 'g' : '')\n + (regexp.ignoreCase ? 'i' : '')\n + (regexp.multiline ? 'm' : '')\n + (regexp /* standalone editor compilation */.unicode ? 'u' : '');\n}\nfunction splitLines(str) {\n return str.split(/\\r\\n|\\r|\\n/);\n}\n/**\n * Returns first index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\nfunction firstNonWhitespaceIndex(str) {\n for (let i = 0, len = str.length; i < len; i++) {\n const chCode = str.charCodeAt(i);\n if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Returns the leading whitespace of the string.\n * If the string contains only whitespaces, returns entire string\n */\nfunction getLeadingWhitespace(str, start = 0, end = str.length) {\n for (let i = start; i < end; i++) {\n const chCode = str.charCodeAt(i);\n if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) {\n return str.substring(start, i);\n }\n }\n return str.substring(start, end);\n}\n/**\n * Returns last index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\nfunction lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\n for (let i = startIndex; i >= 0; i--) {\n const chCode = str.charCodeAt(i);\n if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) {\n return i;\n }\n }\n return -1;\n}\nfunction compare(a, b) {\n if (a < b) {\n return -1;\n }\n else if (a > b) {\n return 1;\n }\n else {\n return 0;\n }\n}\nfunction compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\n const codeA = a.charCodeAt(aStart);\n const codeB = b.charCodeAt(bStart);\n if (codeA < codeB) {\n return -1;\n }\n else if (codeA > codeB) {\n return 1;\n }\n }\n const aLen = aEnd - aStart;\n const bLen = bEnd - bStart;\n if (aLen < bLen) {\n return -1;\n }\n else if (aLen > bLen) {\n return 1;\n }\n return 0;\n}\nfunction compareIgnoreCase(a, b) {\n return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length);\n}\nfunction compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\n let codeA = a.charCodeAt(aStart);\n let codeB = b.charCodeAt(bStart);\n if (codeA === codeB) {\n // equal\n continue;\n }\n if (codeA >= 128 || codeB >= 128) {\n // not ASCII letters -> fallback to lower-casing strings\n return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd);\n }\n // mapper lower-case ascii letter onto upper-case varinats\n // [97-122] (lower ascii) --> [65-90] (upper ascii)\n if (isLowerAsciiLetter(codeA)) {\n codeA -= 32;\n }\n if (isLowerAsciiLetter(codeB)) {\n codeB -= 32;\n }\n // compare both code points\n const diff = codeA - codeB;\n if (diff === 0) {\n continue;\n }\n return diff;\n }\n const aLen = aEnd - aStart;\n const bLen = bEnd - bStart;\n if (aLen < bLen) {\n return -1;\n }\n else if (aLen > bLen) {\n return 1;\n }\n return 0;\n}\nfunction isAsciiDigit(code) {\n return code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */;\n}\nfunction isLowerAsciiLetter(code) {\n return code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */;\n}\nfunction isUpperAsciiLetter(code) {\n return code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */;\n}\nfunction equalsIgnoreCase(a, b) {\n return a.length === b.length && compareSubstringIgnoreCase(a, b) === 0;\n}\nfunction startsWithIgnoreCase(str, candidate) {\n const candidateLength = candidate.length;\n if (candidate.length > str.length) {\n return false;\n }\n return compareSubstringIgnoreCase(str, candidate, 0, candidateLength) === 0;\n}\n/**\n * @returns the length of the common prefix of the two strings.\n */\nfunction commonPrefixLength(a, b) {\n const len = Math.min(a.length, b.length);\n let i;\n for (i = 0; i < len; i++) {\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\n return i;\n }\n }\n return len;\n}\n/**\n * @returns the length of the common suffix of the two strings.\n */\nfunction commonSuffixLength(a, b) {\n const len = Math.min(a.length, b.length);\n let i;\n const aLastIndex = a.length - 1;\n const bLastIndex = b.length - 1;\n for (i = 0; i < len; i++) {\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\n return i;\n }\n }\n return len;\n}\n/**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\nfunction isHighSurrogate(charCode) {\n return (0xD800 <= charCode && charCode <= 0xDBFF);\n}\n/**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\nfunction isLowSurrogate(charCode) {\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\n}\n/**\n * See http://en.wikipedia.org/wiki/Surrogate_pair\n */\nfunction computeCodePoint(highSurrogate, lowSurrogate) {\n return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000;\n}\n/**\n * get the code point that begins at offset `offset`\n */\nfunction getNextCodePoint(str, len, offset) {\n const charCode = str.charCodeAt(offset);\n if (isHighSurrogate(charCode) && offset + 1 < len) {\n const nextCharCode = str.charCodeAt(offset + 1);\n if (isLowSurrogate(nextCharCode)) {\n return computeCodePoint(charCode, nextCharCode);\n }\n }\n return charCode;\n}\n/**\n * get the code point that ends right before offset `offset`\n */\nfunction getPrevCodePoint(str, offset) {\n const charCode = str.charCodeAt(offset - 1);\n if (isLowSurrogate(charCode) && offset > 1) {\n const prevCharCode = str.charCodeAt(offset - 2);\n if (isHighSurrogate(prevCharCode)) {\n return computeCodePoint(prevCharCode, charCode);\n }\n }\n return charCode;\n}\nclass CodePointIterator {\n get offset() {\n return this._offset;\n }\n constructor(str, offset = 0) {\n this._str = str;\n this._len = str.length;\n this._offset = offset;\n }\n setOffset(offset) {\n this._offset = offset;\n }\n prevCodePoint() {\n const codePoint = getPrevCodePoint(this._str, this._offset);\n this._offset -= (codePoint >= 65536 /* Constants.UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\n return codePoint;\n }\n nextCodePoint() {\n const codePoint = getNextCodePoint(this._str, this._len, this._offset);\n this._offset += (codePoint >= 65536 /* Constants.UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\n return codePoint;\n }\n eol() {\n return (this._offset >= this._len);\n }\n}\nclass GraphemeIterator {\n get offset() {\n return this._iterator.offset;\n }\n constructor(str, offset = 0) {\n this._iterator = new CodePointIterator(str, offset);\n }\n nextGraphemeLength() {\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\n const iterator = this._iterator;\n const initialOffset = iterator.offset;\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.nextCodePoint());\n while (!iterator.eol()) {\n const offset = iterator.offset;\n const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.nextCodePoint());\n if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\n // move iterator back\n iterator.setOffset(offset);\n break;\n }\n graphemeBreakType = nextGraphemeBreakType;\n }\n return (iterator.offset - initialOffset);\n }\n prevGraphemeLength() {\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\n const iterator = this._iterator;\n const initialOffset = iterator.offset;\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.prevCodePoint());\n while (iterator.offset > 0) {\n const offset = iterator.offset;\n const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.prevCodePoint());\n if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) {\n // move iterator back\n iterator.setOffset(offset);\n break;\n }\n graphemeBreakType = prevGraphemeBreakType;\n }\n return (initialOffset - iterator.offset);\n }\n eol() {\n return this._iterator.eol();\n }\n}\nfunction nextCharLength(str, initialOffset) {\n const iterator = new GraphemeIterator(str, initialOffset);\n return iterator.nextGraphemeLength();\n}\nfunction prevCharLength(str, initialOffset) {\n const iterator = new GraphemeIterator(str, initialOffset);\n return iterator.prevGraphemeLength();\n}\nfunction getCharContainingOffset(str, offset) {\n if (offset > 0 && isLowSurrogate(str.charCodeAt(offset))) {\n offset--;\n }\n const endOffset = offset + nextCharLength(str, offset);\n const startOffset = endOffset - prevCharLength(str, endOffset);\n return [startOffset, endOffset];\n}\nlet CONTAINS_RTL = undefined;\nfunction makeContainsRtl() {\n // Generated using https://github.com/alexdima/unicode-utils/blob/main/rtl-test.js\n return /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u088E\\u08A0-\\u08C9\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE35\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDD23\\uDE80-\\uDEA9\\uDEAD-\\uDF45\\uDF51-\\uDF81\\uDF86-\\uDFF6]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD4B-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\n}\n/**\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\n */\nfunction containsRTL(str) {\n if (!CONTAINS_RTL) {\n CONTAINS_RTL = makeContainsRtl();\n }\n return CONTAINS_RTL.test(str);\n}\nconst IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\n/**\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\n */\nfunction isBasicASCII(str) {\n return IS_BASIC_ASCII.test(str);\n}\nconst UNUSUAL_LINE_TERMINATORS = /[\\u2028\\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS)\n/**\n * Returns true if `str` contains unusual line terminators, like LS or PS\n */\nfunction containsUnusualLineTerminators(str) {\n return UNUSUAL_LINE_TERMINATORS.test(str);\n}\nfunction isFullWidthCharacter(charCode) {\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\n // http://jrgraphix.net/research/unicode_blocks.php\n // 2E80 - 2EFF CJK Radicals Supplement\n // 2F00 - 2FDF Kangxi Radicals\n // 2FF0 - 2FFF Ideographic Description Characters\n // 3000 - 303F CJK Symbols and Punctuation\n // 3040 - 309F Hiragana\n // 30A0 - 30FF Katakana\n // 3100 - 312F Bopomofo\n // 3130 - 318F Hangul Compatibility Jamo\n // 3190 - 319F Kanbun\n // 31A0 - 31BF Bopomofo Extended\n // 31F0 - 31FF Katakana Phonetic Extensions\n // 3200 - 32FF Enclosed CJK Letters and Months\n // 3300 - 33FF CJK Compatibility\n // 3400 - 4DBF CJK Unified Ideographs Extension A\n // 4DC0 - 4DFF Yijing Hexagram Symbols\n // 4E00 - 9FFF CJK Unified Ideographs\n // A000 - A48F Yi Syllables\n // A490 - A4CF Yi Radicals\n // AC00 - D7AF Hangul Syllables\n // [IGNORE] D800 - DB7F High Surrogates\n // [IGNORE] DB80 - DBFF High Private Use Surrogates\n // [IGNORE] DC00 - DFFF Low Surrogates\n // [IGNORE] E000 - F8FF Private Use Area\n // F900 - FAFF CJK Compatibility Ideographs\n // [IGNORE] FB00 - FB4F Alphabetic Presentation Forms\n // [IGNORE] FB50 - FDFF Arabic Presentation Forms-A\n // [IGNORE] FE00 - FE0F Variation Selectors\n // [IGNORE] FE20 - FE2F Combining Half Marks\n // [IGNORE] FE30 - FE4F CJK Compatibility Forms\n // [IGNORE] FE50 - FE6F Small Form Variants\n // [IGNORE] FE70 - FEFF Arabic Presentation Forms-B\n // FF00 - FFEF Halfwidth and Fullwidth Forms\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\n // [IGNORE] FFF0 - FFFF Specials\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\n}\n/**\n * A fast function (therefore imprecise) to check if code points are emojis.\n * Generated using https://github.com/alexdima/unicode-utils/blob/main/emoji-test.js\n */\nfunction isEmojiImprecise(x) {\n return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x === 8986) || (x === 8987) || (x === 9200)\n || (x === 9203) || (x >= 9728 && x <= 10175) || (x === 11088) || (x === 11093)\n || (x >= 127744 && x <= 128591) || (x >= 128640 && x <= 128764)\n || (x >= 128992 && x <= 129008) || (x >= 129280 && x <= 129535)\n || (x >= 129648 && x <= 129782));\n}\n// -- UTF-8 BOM\nconst UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* CharCode.UTF8_BOM */);\nfunction startsWithUTF8BOM(str) {\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* CharCode.UTF8_BOM */);\n}\nfunction containsUppercaseCharacter(target, ignoreEscapedChars = false) {\n if (!target) {\n return false;\n }\n if (ignoreEscapedChars) {\n target = target.replace(/\\\\./g, '');\n }\n return target.toLowerCase() !== target;\n}\n/**\n * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc.\n */\nfunction singleLetterHash(n) {\n const LETTERS_CNT = (90 /* CharCode.Z */ - 65 /* CharCode.A */ + 1);\n n = n % (2 * LETTERS_CNT);\n if (n < LETTERS_CNT) {\n return String.fromCharCode(97 /* CharCode.a */ + n);\n }\n return String.fromCharCode(65 /* CharCode.A */ + n - LETTERS_CNT);\n}\nfunction breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) {\n // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules\n // !!! Let's make the common case a bit faster\n if (breakTypeA === 0 /* GraphemeBreakType.Other */) {\n // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table\n return (breakTypeB !== 5 /* GraphemeBreakType.Extend */ && breakTypeB !== 7 /* GraphemeBreakType.SpacingMark */);\n }\n // Do not break between a CR and LF. Otherwise, break before and after controls.\n // GB3 CR × LF\n // GB4 (Control | CR | LF) ÷\n // GB5 ÷ (Control | CR | LF)\n if (breakTypeA === 2 /* GraphemeBreakType.CR */) {\n if (breakTypeB === 3 /* GraphemeBreakType.LF */) {\n return false; // GB3\n }\n }\n if (breakTypeA === 4 /* GraphemeBreakType.Control */ || breakTypeA === 2 /* GraphemeBreakType.CR */ || breakTypeA === 3 /* GraphemeBreakType.LF */) {\n return true; // GB4\n }\n if (breakTypeB === 4 /* GraphemeBreakType.Control */ || breakTypeB === 2 /* GraphemeBreakType.CR */ || breakTypeB === 3 /* GraphemeBreakType.LF */) {\n return true; // GB5\n }\n // Do not break Hangul syllable sequences.\n // GB6 L × (L | V | LV | LVT)\n // GB7 (LV | V) × (V | T)\n // GB8 (LVT | T) × T\n if (breakTypeA === 8 /* GraphemeBreakType.L */) {\n if (breakTypeB === 8 /* GraphemeBreakType.L */ || breakTypeB === 9 /* GraphemeBreakType.V */ || breakTypeB === 11 /* GraphemeBreakType.LV */ || breakTypeB === 12 /* GraphemeBreakType.LVT */) {\n return false; // GB6\n }\n }\n if (breakTypeA === 11 /* GraphemeBreakType.LV */ || breakTypeA === 9 /* GraphemeBreakType.V */) {\n if (breakTypeB === 9 /* GraphemeBreakType.V */ || breakTypeB === 10 /* GraphemeBreakType.T */) {\n return false; // GB7\n }\n }\n if (breakTypeA === 12 /* GraphemeBreakType.LVT */ || breakTypeA === 10 /* GraphemeBreakType.T */) {\n if (breakTypeB === 10 /* GraphemeBreakType.T */) {\n return false; // GB8\n }\n }\n // Do not break before extending characters or ZWJ.\n // GB9 × (Extend | ZWJ)\n if (breakTypeB === 5 /* GraphemeBreakType.Extend */ || breakTypeB === 13 /* GraphemeBreakType.ZWJ */) {\n return false; // GB9\n }\n // The GB9a and GB9b rules only apply to extended grapheme clusters:\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a × SpacingMark\n // GB9b Prepend ×\n if (breakTypeB === 7 /* GraphemeBreakType.SpacingMark */) {\n return false; // GB9a\n }\n if (breakTypeA === 1 /* GraphemeBreakType.Prepend */) {\n return false; // GB9b\n }\n // Do not break within emoji modifier sequences or emoji zwj sequences.\n // GB11 \\p{Extended_Pictographic} Extend* ZWJ × \\p{Extended_Pictographic}\n if (breakTypeA === 13 /* GraphemeBreakType.ZWJ */ && breakTypeB === 14 /* GraphemeBreakType.Extended_Pictographic */) {\n // Note: we are not implementing the rule entirely here to avoid introducing states\n return false; // GB11\n }\n // GB12 sot (RI RI)* RI × RI\n // GB13 [^RI] (RI RI)* RI × RI\n if (breakTypeA === 6 /* GraphemeBreakType.Regional_Indicator */ && breakTypeB === 6 /* GraphemeBreakType.Regional_Indicator */) {\n // Note: we are not implementing the rule entirely here to avoid introducing states\n return false; // GB12 & GB13\n }\n // GB999 Any ÷ Any\n return true;\n}\nclass GraphemeBreakTree {\n static getInstance() {\n if (!GraphemeBreakTree._INSTANCE) {\n GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\n }\n return GraphemeBreakTree._INSTANCE;\n }\n constructor() {\n this._data = getGraphemeBreakRawData();\n }\n getGraphemeBreakType(codePoint) {\n // !!! Let's make 7bit ASCII a bit faster: 0..31\n if (codePoint < 32) {\n if (codePoint === 10 /* CharCode.LineFeed */) {\n return 3 /* GraphemeBreakType.LF */;\n }\n if (codePoint === 13 /* CharCode.CarriageReturn */) {\n return 2 /* GraphemeBreakType.CR */;\n }\n return 4 /* GraphemeBreakType.Control */;\n }\n // !!! Let's make 7bit ASCII a bit faster: 32..126\n if (codePoint < 127) {\n return 0 /* GraphemeBreakType.Other */;\n }\n const data = this._data;\n const nodeCount = data.length / 3;\n let nodeIndex = 1;\n while (nodeIndex <= nodeCount) {\n if (codePoint < data[3 * nodeIndex]) {\n // go left\n nodeIndex = 2 * nodeIndex;\n }\n else if (codePoint > data[3 * nodeIndex + 1]) {\n // go right\n nodeIndex = 2 * nodeIndex + 1;\n }\n else {\n // hit\n return data[3 * nodeIndex + 2];\n }\n }\n return 0 /* GraphemeBreakType.Other */;\n }\n}\nGraphemeBreakTree._INSTANCE = null;\nfunction getGraphemeBreakRawData() {\n // generated using https://github.com/alexdima/unicode-utils/blob/main/grapheme-break.js\n return JSON.parse('[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]');\n}\n//#endregion\n/**\n * Computes the offset after performing a left delete on the given string,\n * while considering unicode grapheme/emoji rules.\n*/\nfunction getLeftDeleteOffset(offset, str) {\n if (offset === 0) {\n return 0;\n }\n // Try to delete emoji part.\n const emojiOffset = getOffsetBeforeLastEmojiComponent(offset, str);\n if (emojiOffset !== undefined) {\n return emojiOffset;\n }\n // Otherwise, just skip a single code point.\n const iterator = new CodePointIterator(str, offset);\n iterator.prevCodePoint();\n return iterator.offset;\n}\nfunction getOffsetBeforeLastEmojiComponent(initialOffset, str) {\n // See https://www.unicode.org/reports/tr51/tr51-14.html#EBNF_and_Regex for the\n // structure of emojis.\n const iterator = new CodePointIterator(str, initialOffset);\n let codePoint = iterator.prevCodePoint();\n // Skip modifiers\n while ((isEmojiModifier(codePoint) || codePoint === 65039 /* CodePoint.emojiVariantSelector */ || codePoint === 8419 /* CodePoint.enclosingKeyCap */)) {\n if (iterator.offset === 0) {\n // Cannot skip modifier, no preceding emoji base.\n return undefined;\n }\n codePoint = iterator.prevCodePoint();\n }\n // Expect base emoji\n if (!isEmojiImprecise(codePoint)) {\n // Unexpected code point, not a valid emoji.\n return undefined;\n }\n let resultOffset = iterator.offset;\n if (resultOffset > 0) {\n // Skip optional ZWJ code points that combine multiple emojis.\n // In theory, we should check if that ZWJ actually combines multiple emojis\n // to prevent deleting ZWJs in situations we didn't account for.\n const optionalZwjCodePoint = iterator.prevCodePoint();\n if (optionalZwjCodePoint === 8205 /* CodePoint.zwj */) {\n resultOffset = iterator.offset;\n }\n }\n return resultOffset;\n}\nfunction isEmojiModifier(codePoint) {\n return 0x1F3FB <= codePoint && codePoint <= 0x1F3FF;\n}\nconst noBreakWhitespace = '\\xa0';\nclass AmbiguousCharacters {\n static getInstance(locales) {\n return AmbiguousCharacters.cache.get(Array.from(locales));\n }\n static getLocales() {\n return AmbiguousCharacters._locales.value;\n }\n constructor(confusableDictionary) {\n this.confusableDictionary = confusableDictionary;\n }\n isAmbiguous(codePoint) {\n return this.confusableDictionary.has(codePoint);\n }\n /**\n * Returns the non basic ASCII code point that the given code point can be confused,\n * or undefined if such code point does note exist.\n */\n getPrimaryConfusable(codePoint) {\n return this.confusableDictionary.get(codePoint);\n }\n getConfusableCodePoints() {\n return new Set(this.confusableDictionary.keys());\n }\n}\n_a = AmbiguousCharacters;\nAmbiguousCharacters.ambiguousCharacterData = new _lazy_js__WEBPACK_IMPORTED_MODULE_1__.Lazy(() => {\n // Generated using https://github.com/hediet/vscode-unicode-data\n // Stored as key1, value1, key2, value2, ...\n return JSON.parse('{\\\"_common\\\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\\\"_default\\\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"cs\\\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"de\\\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"es\\\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"fr\\\":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"it\\\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"ja\\\":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],\\\"ko\\\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"pl\\\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"pt-BR\\\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"qps-ploc\\\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"ru\\\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"tr\\\":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\\\"zh-hans\\\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],\\\"zh-hant\\\":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}');\n});\nAmbiguousCharacters.cache = new _cache_js__WEBPACK_IMPORTED_MODULE_0__.LRUCachedFunction((locales) => {\n function arrayToMap(arr) {\n const result = new Map();\n for (let i = 0; i < arr.length; i += 2) {\n result.set(arr[i], arr[i + 1]);\n }\n return result;\n }\n function mergeMaps(map1, map2) {\n const result = new Map(map1);\n for (const [key, value] of map2) {\n result.set(key, value);\n }\n return result;\n }\n function intersectMaps(map1, map2) {\n if (!map1) {\n return map2;\n }\n const result = new Map();\n for (const [key, value] of map1) {\n if (map2.has(key)) {\n result.set(key, value);\n }\n }\n return result;\n }\n const data = _a.ambiguousCharacterData.value;\n let filteredLocales = locales.filter((l) => !l.startsWith('_') && l in data);\n if (filteredLocales.length === 0) {\n filteredLocales = ['_default'];\n }\n let languageSpecificMap = undefined;\n for (const locale of filteredLocales) {\n const map = arrayToMap(data[locale]);\n languageSpecificMap = intersectMaps(languageSpecificMap, map);\n }\n const commonMap = arrayToMap(data['_common']);\n const map = mergeMaps(commonMap, languageSpecificMap);\n return new AmbiguousCharacters(map);\n});\nAmbiguousCharacters._locales = new _lazy_js__WEBPACK_IMPORTED_MODULE_1__.Lazy(() => Object.keys(AmbiguousCharacters.ambiguousCharacterData.value).filter((k) => !k.startsWith('_')));\nclass InvisibleCharacters {\n static getRawData() {\n // Generated using https://github.com/hediet/vscode-unicode-data\n return JSON.parse('[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]');\n }\n static getData() {\n if (!this._data) {\n this._data = new Set(InvisibleCharacters.getRawData());\n }\n return this._data;\n }\n static isInvisibleCharacter(codePoint) {\n return InvisibleCharacters.getData().has(codePoint);\n }\n static get codePoints() {\n return InvisibleCharacters.getData();\n }\n}\nInvisibleCharacters._data = undefined;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/strings.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/symbols.js": +/*!******************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/symbols.js ***! + \******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MicrotaskDelay: () => (/* binding */ MicrotaskDelay)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * Can be passed into the Delayed to defer using a microtask\n * */\nconst MicrotaskDelay = Symbol('MicrotaskDelay');\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/symbols.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/ternarySearchTree.js": +/*!****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/ternarySearchTree.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConfigKeysIterator: () => (/* binding */ ConfigKeysIterator),\n/* harmony export */ PathIterator: () => (/* binding */ PathIterator),\n/* harmony export */ StringIterator: () => (/* binding */ StringIterator),\n/* harmony export */ TernarySearchTree: () => (/* binding */ TernarySearchTree),\n/* harmony export */ UriIterator: () => (/* binding */ UriIterator)\n/* harmony export */ });\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n\nclass StringIterator {\n constructor() {\n this._value = '';\n this._pos = 0;\n }\n reset(key) {\n this._value = key;\n this._pos = 0;\n return this;\n }\n next() {\n this._pos += 1;\n return this;\n }\n hasNext() {\n return this._pos < this._value.length - 1;\n }\n cmp(a) {\n const aCode = a.charCodeAt(0);\n const thisCode = this._value.charCodeAt(this._pos);\n return aCode - thisCode;\n }\n value() {\n return this._value[this._pos];\n }\n}\nclass ConfigKeysIterator {\n constructor(_caseSensitive = true) {\n this._caseSensitive = _caseSensitive;\n }\n reset(key) {\n this._value = key;\n this._from = 0;\n this._to = 0;\n return this.next();\n }\n hasNext() {\n return this._to < this._value.length;\n }\n next() {\n // this._data = key.split(/[\\\\/]/).filter(s => !!s);\n this._from = this._to;\n let justSeps = true;\n for (; this._to < this._value.length; this._to++) {\n const ch = this._value.charCodeAt(this._to);\n if (ch === 46 /* CharCode.Period */) {\n if (justSeps) {\n this._from++;\n }\n else {\n break;\n }\n }\n else {\n justSeps = false;\n }\n }\n return this;\n }\n cmp(a) {\n return this._caseSensitive\n ? (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compareSubstring)(a, this._value, 0, a.length, this._from, this._to)\n : (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compareSubstringIgnoreCase)(a, this._value, 0, a.length, this._from, this._to);\n }\n value() {\n return this._value.substring(this._from, this._to);\n }\n}\nclass PathIterator {\n constructor(_splitOnBackslash = true, _caseSensitive = true) {\n this._splitOnBackslash = _splitOnBackslash;\n this._caseSensitive = _caseSensitive;\n }\n reset(key) {\n this._from = 0;\n this._to = 0;\n this._value = key;\n this._valueLen = key.length;\n for (let pos = key.length - 1; pos >= 0; pos--, this._valueLen--) {\n const ch = this._value.charCodeAt(pos);\n if (!(ch === 47 /* CharCode.Slash */ || this._splitOnBackslash && ch === 92 /* CharCode.Backslash */)) {\n break;\n }\n }\n return this.next();\n }\n hasNext() {\n return this._to < this._valueLen;\n }\n next() {\n // this._data = key.split(/[\\\\/]/).filter(s => !!s);\n this._from = this._to;\n let justSeps = true;\n for (; this._to < this._valueLen; this._to++) {\n const ch = this._value.charCodeAt(this._to);\n if (ch === 47 /* CharCode.Slash */ || this._splitOnBackslash && ch === 92 /* CharCode.Backslash */) {\n if (justSeps) {\n this._from++;\n }\n else {\n break;\n }\n }\n else {\n justSeps = false;\n }\n }\n return this;\n }\n cmp(a) {\n return this._caseSensitive\n ? (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compareSubstring)(a, this._value, 0, a.length, this._from, this._to)\n : (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compareSubstringIgnoreCase)(a, this._value, 0, a.length, this._from, this._to);\n }\n value() {\n return this._value.substring(this._from, this._to);\n }\n}\nclass UriIterator {\n constructor(_ignorePathCasing, _ignoreQueryAndFragment) {\n this._ignorePathCasing = _ignorePathCasing;\n this._ignoreQueryAndFragment = _ignoreQueryAndFragment;\n this._states = [];\n this._stateIdx = 0;\n }\n reset(key) {\n this._value = key;\n this._states = [];\n if (this._value.scheme) {\n this._states.push(1 /* UriIteratorState.Scheme */);\n }\n if (this._value.authority) {\n this._states.push(2 /* UriIteratorState.Authority */);\n }\n if (this._value.path) {\n this._pathIterator = new PathIterator(false, !this._ignorePathCasing(key));\n this._pathIterator.reset(key.path);\n if (this._pathIterator.value()) {\n this._states.push(3 /* UriIteratorState.Path */);\n }\n }\n if (!this._ignoreQueryAndFragment(key)) {\n if (this._value.query) {\n this._states.push(4 /* UriIteratorState.Query */);\n }\n if (this._value.fragment) {\n this._states.push(5 /* UriIteratorState.Fragment */);\n }\n }\n this._stateIdx = 0;\n return this;\n }\n next() {\n if (this._states[this._stateIdx] === 3 /* UriIteratorState.Path */ && this._pathIterator.hasNext()) {\n this._pathIterator.next();\n }\n else {\n this._stateIdx += 1;\n }\n return this;\n }\n hasNext() {\n return (this._states[this._stateIdx] === 3 /* UriIteratorState.Path */ && this._pathIterator.hasNext())\n || this._stateIdx < this._states.length - 1;\n }\n cmp(a) {\n if (this._states[this._stateIdx] === 1 /* UriIteratorState.Scheme */) {\n return (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compareIgnoreCase)(a, this._value.scheme);\n }\n else if (this._states[this._stateIdx] === 2 /* UriIteratorState.Authority */) {\n return (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compareIgnoreCase)(a, this._value.authority);\n }\n else if (this._states[this._stateIdx] === 3 /* UriIteratorState.Path */) {\n return this._pathIterator.cmp(a);\n }\n else if (this._states[this._stateIdx] === 4 /* UriIteratorState.Query */) {\n return (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compare)(a, this._value.query);\n }\n else if (this._states[this._stateIdx] === 5 /* UriIteratorState.Fragment */) {\n return (0,_strings_js__WEBPACK_IMPORTED_MODULE_0__.compare)(a, this._value.fragment);\n }\n throw new Error();\n }\n value() {\n if (this._states[this._stateIdx] === 1 /* UriIteratorState.Scheme */) {\n return this._value.scheme;\n }\n else if (this._states[this._stateIdx] === 2 /* UriIteratorState.Authority */) {\n return this._value.authority;\n }\n else if (this._states[this._stateIdx] === 3 /* UriIteratorState.Path */) {\n return this._pathIterator.value();\n }\n else if (this._states[this._stateIdx] === 4 /* UriIteratorState.Query */) {\n return this._value.query;\n }\n else if (this._states[this._stateIdx] === 5 /* UriIteratorState.Fragment */) {\n return this._value.fragment;\n }\n throw new Error();\n }\n}\nclass TernarySearchTreeNode {\n constructor() {\n this.height = 1;\n }\n rotateLeft() {\n const tmp = this.right;\n this.right = tmp.left;\n tmp.left = this;\n this.updateHeight();\n tmp.updateHeight();\n return tmp;\n }\n rotateRight() {\n const tmp = this.left;\n this.left = tmp.right;\n tmp.right = this;\n this.updateHeight();\n tmp.updateHeight();\n return tmp;\n }\n updateHeight() {\n this.height = 1 + Math.max(this.heightLeft, this.heightRight);\n }\n balanceFactor() {\n return this.heightRight - this.heightLeft;\n }\n get heightLeft() {\n var _a, _b;\n return (_b = (_a = this.left) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : 0;\n }\n get heightRight() {\n var _a, _b;\n return (_b = (_a = this.right) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : 0;\n }\n}\nclass TernarySearchTree {\n static forUris(ignorePathCasing = () => false, ignoreQueryAndFragment = () => false) {\n return new TernarySearchTree(new UriIterator(ignorePathCasing, ignoreQueryAndFragment));\n }\n static forStrings() {\n return new TernarySearchTree(new StringIterator());\n }\n static forConfigKeys() {\n return new TernarySearchTree(new ConfigKeysIterator());\n }\n constructor(segments) {\n this._iter = segments;\n }\n clear() {\n this._root = undefined;\n }\n set(key, element) {\n const iter = this._iter.reset(key);\n let node;\n if (!this._root) {\n this._root = new TernarySearchTreeNode();\n this._root.segment = iter.value();\n }\n const stack = [];\n // find insert_node\n node = this._root;\n while (true) {\n const val = iter.cmp(node.segment);\n if (val > 0) {\n // left\n if (!node.left) {\n node.left = new TernarySearchTreeNode();\n node.left.segment = iter.value();\n }\n stack.push([-1 /* Dir.Left */, node]);\n node = node.left;\n }\n else if (val < 0) {\n // right\n if (!node.right) {\n node.right = new TernarySearchTreeNode();\n node.right.segment = iter.value();\n }\n stack.push([1 /* Dir.Right */, node]);\n node = node.right;\n }\n else if (iter.hasNext()) {\n // mid\n iter.next();\n if (!node.mid) {\n node.mid = new TernarySearchTreeNode();\n node.mid.segment = iter.value();\n }\n stack.push([0 /* Dir.Mid */, node]);\n node = node.mid;\n }\n else {\n break;\n }\n }\n // set value\n const oldElement = node.value;\n node.value = element;\n node.key = key;\n // balance\n for (let i = stack.length - 1; i >= 0; i--) {\n const node = stack[i][1];\n node.updateHeight();\n const bf = node.balanceFactor();\n if (bf < -1 || bf > 1) {\n // needs rotate\n const d1 = stack[i][0];\n const d2 = stack[i + 1][0];\n if (d1 === 1 /* Dir.Right */ && d2 === 1 /* Dir.Right */) {\n //right, right -> rotate left\n stack[i][1] = node.rotateLeft();\n }\n else if (d1 === -1 /* Dir.Left */ && d2 === -1 /* Dir.Left */) {\n // left, left -> rotate right\n stack[i][1] = node.rotateRight();\n }\n else if (d1 === 1 /* Dir.Right */ && d2 === -1 /* Dir.Left */) {\n // right, left -> double rotate right, left\n node.right = stack[i + 1][1] = stack[i + 1][1].rotateRight();\n stack[i][1] = node.rotateLeft();\n }\n else if (d1 === -1 /* Dir.Left */ && d2 === 1 /* Dir.Right */) {\n // left, right -> double rotate left, right\n node.left = stack[i + 1][1] = stack[i + 1][1].rotateLeft();\n stack[i][1] = node.rotateRight();\n }\n else {\n throw new Error();\n }\n // patch path to parent\n if (i > 0) {\n switch (stack[i - 1][0]) {\n case -1 /* Dir.Left */:\n stack[i - 1][1].left = stack[i][1];\n break;\n case 1 /* Dir.Right */:\n stack[i - 1][1].right = stack[i][1];\n break;\n case 0 /* Dir.Mid */:\n stack[i - 1][1].mid = stack[i][1];\n break;\n }\n }\n else {\n this._root = stack[0][1];\n }\n }\n }\n return oldElement;\n }\n get(key) {\n var _a;\n return (_a = this._getNode(key)) === null || _a === void 0 ? void 0 : _a.value;\n }\n _getNode(key) {\n const iter = this._iter.reset(key);\n let node = this._root;\n while (node) {\n const val = iter.cmp(node.segment);\n if (val > 0) {\n // left\n node = node.left;\n }\n else if (val < 0) {\n // right\n node = node.right;\n }\n else if (iter.hasNext()) {\n // mid\n iter.next();\n node = node.mid;\n }\n else {\n break;\n }\n }\n return node;\n }\n has(key) {\n const node = this._getNode(key);\n return !((node === null || node === void 0 ? void 0 : node.value) === undefined && (node === null || node === void 0 ? void 0 : node.mid) === undefined);\n }\n delete(key) {\n return this._delete(key, false);\n }\n deleteSuperstr(key) {\n return this._delete(key, true);\n }\n _delete(key, superStr) {\n var _a;\n const iter = this._iter.reset(key);\n const stack = [];\n let node = this._root;\n // find node\n while (node) {\n const val = iter.cmp(node.segment);\n if (val > 0) {\n // left\n stack.push([-1 /* Dir.Left */, node]);\n node = node.left;\n }\n else if (val < 0) {\n // right\n stack.push([1 /* Dir.Right */, node]);\n node = node.right;\n }\n else if (iter.hasNext()) {\n // mid\n iter.next();\n stack.push([0 /* Dir.Mid */, node]);\n node = node.mid;\n }\n else {\n break;\n }\n }\n if (!node) {\n // node not found\n return;\n }\n if (superStr) {\n // removing children, reset height\n node.left = undefined;\n node.mid = undefined;\n node.right = undefined;\n node.height = 1;\n }\n else {\n // removing element\n node.key = undefined;\n node.value = undefined;\n }\n // BST node removal\n if (!node.mid && !node.value) {\n if (node.left && node.right) {\n // full node\n // replace deleted-node with the min-node of the right branch.\n // If there is no true min-node leave things as they are\n const min = this._min(node.right);\n if (min.key) {\n const { key, value, segment } = min;\n this._delete(min.key, false);\n node.key = key;\n node.value = value;\n node.segment = segment;\n }\n }\n else {\n // empty or half empty\n const newChild = (_a = node.left) !== null && _a !== void 0 ? _a : node.right;\n if (stack.length > 0) {\n const [dir, parent] = stack[stack.length - 1];\n switch (dir) {\n case -1 /* Dir.Left */:\n parent.left = newChild;\n break;\n case 0 /* Dir.Mid */:\n parent.mid = newChild;\n break;\n case 1 /* Dir.Right */:\n parent.right = newChild;\n break;\n }\n }\n else {\n this._root = newChild;\n }\n }\n }\n // AVL balance\n for (let i = stack.length - 1; i >= 0; i--) {\n const node = stack[i][1];\n node.updateHeight();\n const bf = node.balanceFactor();\n if (bf > 1) {\n // right heavy\n if (node.right.balanceFactor() >= 0) {\n // right, right -> rotate left\n stack[i][1] = node.rotateLeft();\n }\n else {\n // right, left -> double rotate\n node.right = node.right.rotateRight();\n stack[i][1] = node.rotateLeft();\n }\n }\n else if (bf < -1) {\n // left heavy\n if (node.left.balanceFactor() <= 0) {\n // left, left -> rotate right\n stack[i][1] = node.rotateRight();\n }\n else {\n // left, right -> double rotate\n node.left = node.left.rotateLeft();\n stack[i][1] = node.rotateRight();\n }\n }\n // patch path to parent\n if (i > 0) {\n switch (stack[i - 1][0]) {\n case -1 /* Dir.Left */:\n stack[i - 1][1].left = stack[i][1];\n break;\n case 1 /* Dir.Right */:\n stack[i - 1][1].right = stack[i][1];\n break;\n case 0 /* Dir.Mid */:\n stack[i - 1][1].mid = stack[i][1];\n break;\n }\n }\n else {\n this._root = stack[0][1];\n }\n }\n }\n _min(node) {\n while (node.left) {\n node = node.left;\n }\n return node;\n }\n findSubstr(key) {\n const iter = this._iter.reset(key);\n let node = this._root;\n let candidate = undefined;\n while (node) {\n const val = iter.cmp(node.segment);\n if (val > 0) {\n // left\n node = node.left;\n }\n else if (val < 0) {\n // right\n node = node.right;\n }\n else if (iter.hasNext()) {\n // mid\n iter.next();\n candidate = node.value || candidate;\n node = node.mid;\n }\n else {\n break;\n }\n }\n return node && node.value || candidate;\n }\n findSuperstr(key) {\n return this._findSuperstrOrElement(key, false);\n }\n _findSuperstrOrElement(key, allowValue) {\n const iter = this._iter.reset(key);\n let node = this._root;\n while (node) {\n const val = iter.cmp(node.segment);\n if (val > 0) {\n // left\n node = node.left;\n }\n else if (val < 0) {\n // right\n node = node.right;\n }\n else if (iter.hasNext()) {\n // mid\n iter.next();\n node = node.mid;\n }\n else {\n // collect\n if (!node.mid) {\n if (allowValue) {\n return node.value;\n }\n else {\n return undefined;\n }\n }\n else {\n return this._entries(node.mid);\n }\n }\n }\n return undefined;\n }\n forEach(callback) {\n for (const [key, value] of this) {\n callback(value, key);\n }\n }\n *[Symbol.iterator]() {\n yield* this._entries(this._root);\n }\n _entries(node) {\n const result = [];\n this._dfsEntries(node, result);\n return result[Symbol.iterator]();\n }\n _dfsEntries(node, bucket) {\n // DFS\n if (!node) {\n return;\n }\n if (node.left) {\n this._dfsEntries(node.left, bucket);\n }\n if (node.value) {\n bucket.push([node.key, node.value]);\n }\n if (node.mid) {\n this._dfsEntries(node.mid, bucket);\n }\n if (node.right) {\n this._dfsEntries(node.right, bucket);\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/ternarySearchTree.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/themables.js": +/*!********************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/themables.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ThemeColor: () => (/* binding */ ThemeColor),\n/* harmony export */ ThemeIcon: () => (/* binding */ ThemeIcon)\n/* harmony export */ });\n/* harmony import */ var _codicons_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./codicons.js */ \"./node_modules/monaco-editor/esm/vs/base/common/codicons.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nvar ThemeColor;\n(function (ThemeColor) {\n function isThemeColor(obj) {\n return obj && typeof obj === 'object' && typeof obj.id === 'string';\n }\n ThemeColor.isThemeColor = isThemeColor;\n})(ThemeColor || (ThemeColor = {}));\nvar ThemeIcon;\n(function (ThemeIcon) {\n ThemeIcon.iconNameSegment = '[A-Za-z0-9]+';\n ThemeIcon.iconNameExpression = '[A-Za-z0-9-]+';\n ThemeIcon.iconModifierExpression = '~[A-Za-z]+';\n ThemeIcon.iconNameCharacter = '[A-Za-z0-9~-]';\n const ThemeIconIdRegex = new RegExp(`^(${ThemeIcon.iconNameExpression})(${ThemeIcon.iconModifierExpression})?$`);\n function asClassNameArray(icon) {\n const match = ThemeIconIdRegex.exec(icon.id);\n if (!match) {\n return asClassNameArray(_codicons_js__WEBPACK_IMPORTED_MODULE_0__.Codicon.error);\n }\n const [, id, modifier] = match;\n const classNames = ['codicon', 'codicon-' + id];\n if (modifier) {\n classNames.push('codicon-modifier-' + modifier.substring(1));\n }\n return classNames;\n }\n ThemeIcon.asClassNameArray = asClassNameArray;\n function asClassName(icon) {\n return asClassNameArray(icon).join(' ');\n }\n ThemeIcon.asClassName = asClassName;\n function asCSSSelector(icon) {\n return '.' + asClassNameArray(icon).join('.');\n }\n ThemeIcon.asCSSSelector = asCSSSelector;\n function isThemeIcon(obj) {\n return obj && typeof obj === 'object' && typeof obj.id === 'string' && (typeof obj.color === 'undefined' || ThemeColor.isThemeColor(obj.color));\n }\n ThemeIcon.isThemeIcon = isThemeIcon;\n const _regexFromString = new RegExp(`^\\\\$\\\\((${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?)\\\\)$`);\n function fromString(str) {\n const match = _regexFromString.exec(str);\n if (!match) {\n return undefined;\n }\n const [, name] = match;\n return { id: name };\n }\n ThemeIcon.fromString = fromString;\n function fromId(id) {\n return { id };\n }\n ThemeIcon.fromId = fromId;\n function modify(icon, modifier) {\n let id = icon.id;\n const tildeIndex = id.lastIndexOf('~');\n if (tildeIndex !== -1) {\n id = id.substring(0, tildeIndex);\n }\n if (modifier) {\n id = `${id}~${modifier}`;\n }\n return { id };\n }\n ThemeIcon.modify = modify;\n function getModifier(icon) {\n const tildeIndex = icon.id.lastIndexOf('~');\n if (tildeIndex !== -1) {\n return icon.id.substring(tildeIndex + 1);\n }\n return undefined;\n }\n ThemeIcon.getModifier = getModifier;\n function isEqual(ti1, ti2) {\n var _a, _b;\n return ti1.id === ti2.id && ((_a = ti1.color) === null || _a === void 0 ? void 0 : _a.id) === ((_b = ti2.color) === null || _b === void 0 ? void 0 : _b.id);\n }\n ThemeIcon.isEqual = isEqual;\n})(ThemeIcon || (ThemeIcon = {}));\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/themables.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/types.js": +/*!****************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/types.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ assertIsDefined: () => (/* binding */ assertIsDefined),\n/* harmony export */ assertType: () => (/* binding */ assertType),\n/* harmony export */ isBoolean: () => (/* binding */ isBoolean),\n/* harmony export */ isDefined: () => (/* binding */ isDefined),\n/* harmony export */ isFunction: () => (/* binding */ isFunction),\n/* harmony export */ isIterable: () => (/* binding */ isIterable),\n/* harmony export */ isNumber: () => (/* binding */ isNumber),\n/* harmony export */ isObject: () => (/* binding */ isObject),\n/* harmony export */ isString: () => (/* binding */ isString),\n/* harmony export */ isTypedArray: () => (/* binding */ isTypedArray),\n/* harmony export */ isUndefined: () => (/* binding */ isUndefined),\n/* harmony export */ isUndefinedOrNull: () => (/* binding */ isUndefinedOrNull),\n/* harmony export */ validateConstraint: () => (/* binding */ validateConstraint),\n/* harmony export */ validateConstraints: () => (/* binding */ validateConstraints),\n/* harmony export */ withNullAsUndefined: () => (/* binding */ withNullAsUndefined),\n/* harmony export */ withUndefinedAsNull: () => (/* binding */ withUndefinedAsNull)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * @returns whether the provided parameter is a JavaScript String or not.\n */\nfunction isString(str) {\n return (typeof str === 'string');\n}\n/**\n * @returns whether the provided parameter is of type `object` but **not**\n *\t`null`, an `array`, a `regexp`, nor a `date`.\n */\nfunction isObject(obj) {\n // The method can't do a type cast since there are type (like strings) which\n // are subclasses of any put not positvely matched by the function. Hence type\n // narrowing results in wrong results.\n return typeof obj === 'object'\n && obj !== null\n && !Array.isArray(obj)\n && !(obj instanceof RegExp)\n && !(obj instanceof Date);\n}\n/**\n * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type\n */\nfunction isTypedArray(obj) {\n const TypedArray = Object.getPrototypeOf(Uint8Array);\n return typeof obj === 'object'\n && obj instanceof TypedArray;\n}\n/**\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\n * @returns whether the provided parameter is a JavaScript Number or not.\n */\nfunction isNumber(obj) {\n return (typeof obj === 'number' && !isNaN(obj));\n}\n/**\n * @returns whether the provided parameter is an Iterable, casting to the given generic\n */\nfunction isIterable(obj) {\n return !!obj && typeof obj[Symbol.iterator] === 'function';\n}\n/**\n * @returns whether the provided parameter is a JavaScript Boolean or not.\n */\nfunction isBoolean(obj) {\n return (obj === true || obj === false);\n}\n/**\n * @returns whether the provided parameter is undefined.\n */\nfunction isUndefined(obj) {\n return (typeof obj === 'undefined');\n}\n/**\n * @returns whether the provided parameter is defined.\n */\nfunction isDefined(arg) {\n return !isUndefinedOrNull(arg);\n}\n/**\n * @returns whether the provided parameter is undefined or null.\n */\nfunction isUndefinedOrNull(obj) {\n return (isUndefined(obj) || obj === null);\n}\nfunction assertType(condition, type) {\n if (!condition) {\n throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type');\n }\n}\n/**\n * Asserts that the argument passed in is neither undefined nor null.\n */\nfunction assertIsDefined(arg) {\n if (isUndefinedOrNull(arg)) {\n throw new Error('Assertion Failed: argument is undefined or null');\n }\n return arg;\n}\n/**\n * @returns whether the provided parameter is a JavaScript Function or not.\n */\nfunction isFunction(obj) {\n return (typeof obj === 'function');\n}\nfunction validateConstraints(args, constraints) {\n const len = Math.min(args.length, constraints.length);\n for (let i = 0; i < len; i++) {\n validateConstraint(args[i], constraints[i]);\n }\n}\nfunction validateConstraint(arg, constraint) {\n if (isString(constraint)) {\n if (typeof arg !== constraint) {\n throw new Error(`argument does not match constraint: typeof ${constraint}`);\n }\n }\n else if (isFunction(constraint)) {\n try {\n if (arg instanceof constraint) {\n return;\n }\n }\n catch (_a) {\n // ignore\n }\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\n return;\n }\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\n return;\n }\n throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);\n }\n}\n/**\n * Converts null to undefined, passes all other values through.\n */\nfunction withNullAsUndefined(x) {\n return x === null ? undefined : x;\n}\n/**\n * Converts undefined to null, passes all other values through.\n */\nfunction withUndefinedAsNull(x) {\n return typeof x === 'undefined' ? null : x;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/types.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/uint.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/uint.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ toUint32: () => (/* binding */ toUint32),\n/* harmony export */ toUint8: () => (/* binding */ toUint8)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction toUint8(v) {\n if (v < 0) {\n return 0;\n }\n if (v > 255 /* Constants.MAX_UINT_8 */) {\n return 255 /* Constants.MAX_UINT_8 */;\n }\n return v | 0;\n}\nfunction toUint32(v) {\n if (v < 0) {\n return 0;\n }\n if (v > 4294967295 /* Constants.MAX_UINT_32 */) {\n return 4294967295 /* Constants.MAX_UINT_32 */;\n }\n return v | 0;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/uint.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/uri.js": +/*!**************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/uri.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ URI: () => (/* binding */ URI),\n/* harmony export */ uriToFsPath: () => (/* binding */ uriToFsPath)\n/* harmony export */ });\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"./node_modules/monaco-editor/esm/vs/base/common/path.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\nconst _singleSlashStart = /^\\//;\nconst _doubleSlashStart = /^\\/\\//;\nfunction _validateUri(ret, _strict) {\n // scheme, must be set\n if (!ret.scheme && _strict) {\n throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\n }\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\n throw new Error('[UriError]: Scheme contains illegal characters.');\n }\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\n // If a URI contains an authority component, then the path component\n // must either be empty or begin with a slash (\"/\") character. If a URI\n // does not contain an authority component, then the path cannot begin\n // with two slash characters (\"//\").\n if (ret.path) {\n if (ret.authority) {\n if (!_singleSlashStart.test(ret.path)) {\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\n }\n }\n else {\n if (_doubleSlashStart.test(ret.path)) {\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\n }\n }\n }\n}\n// for a while we allowed uris *without* schemes and this is the migration\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\n// back to the file-scheme. that should cause the least carnage and still be a\n// clear warning\nfunction _schemeFix(scheme, _strict) {\n if (!scheme && !_strict) {\n return 'file';\n }\n return scheme;\n}\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\nfunction _referenceResolution(scheme, path) {\n // the slash-character is our 'default base' as we don't\n // support constructing URIs relative to other URIs. This\n // also means that we alter and potentially break paths.\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\n switch (scheme) {\n case 'https':\n case 'http':\n case 'file':\n if (!path) {\n path = _slash;\n }\n else if (path[0] !== _slash) {\n path = _slash + path;\n }\n break;\n }\n return path;\n}\nconst _empty = '';\nconst _slash = '/';\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n/**\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component parts\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * ```txt\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n * ```\n */\nclass URI {\n static isUri(thing) {\n if (thing instanceof URI) {\n return true;\n }\n if (!thing) {\n return false;\n }\n return typeof thing.authority === 'string'\n && typeof thing.fragment === 'string'\n && typeof thing.path === 'string'\n && typeof thing.query === 'string'\n && typeof thing.scheme === 'string'\n && typeof thing.fsPath === 'string'\n && typeof thing.with === 'function'\n && typeof thing.toString === 'function';\n }\n /**\n * @internal\n */\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\n if (typeof schemeOrData === 'object') {\n this.scheme = schemeOrData.scheme || _empty;\n this.authority = schemeOrData.authority || _empty;\n this.path = schemeOrData.path || _empty;\n this.query = schemeOrData.query || _empty;\n this.fragment = schemeOrData.fragment || _empty;\n // no validation because it's this URI\n // that creates uri components.\n // _validateUri(this);\n }\n else {\n this.scheme = _schemeFix(schemeOrData, _strict);\n this.authority = authority || _empty;\n this.path = _referenceResolution(this.scheme, path || _empty);\n this.query = query || _empty;\n this.fragment = fragment || _empty;\n _validateUri(this, _strict);\n }\n }\n // ---- filesystem path -----------------------\n /**\n * Returns a string representing the corresponding file system path of this URI.\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\n * platform specific path separator.\n *\n * * Will *not* validate the path for invalid characters and semantics.\n * * Will *not* look at the scheme of this URI.\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\n *\n *\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\n *\n * ```ts\n const u = URI.parse('file://server/c$/folder/file.txt')\n u.authority === 'server'\n u.path === '/shares/c$/file.txt'\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\n ```\n *\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\n * with URIs that represent files on disk (`file` scheme).\n */\n get fsPath() {\n // if (this.scheme !== 'file') {\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\n // }\n return uriToFsPath(this, false);\n }\n // ---- modify to new -------------------------\n with(change) {\n if (!change) {\n return this;\n }\n let { scheme, authority, path, query, fragment } = change;\n if (scheme === undefined) {\n scheme = this.scheme;\n }\n else if (scheme === null) {\n scheme = _empty;\n }\n if (authority === undefined) {\n authority = this.authority;\n }\n else if (authority === null) {\n authority = _empty;\n }\n if (path === undefined) {\n path = this.path;\n }\n else if (path === null) {\n path = _empty;\n }\n if (query === undefined) {\n query = this.query;\n }\n else if (query === null) {\n query = _empty;\n }\n if (fragment === undefined) {\n fragment = this.fragment;\n }\n else if (fragment === null) {\n fragment = _empty;\n }\n if (scheme === this.scheme\n && authority === this.authority\n && path === this.path\n && query === this.query\n && fragment === this.fragment) {\n return this;\n }\n return new Uri(scheme, authority, path, query, fragment);\n }\n // ---- parse & validate ------------------------\n /**\n * Creates a new URI from a string, e.g. `http://www.example.com/some/path`,\n * `file:///usr/home`, or `scheme:with/path`.\n *\n * @param value A string which represents an URI (see `URI#toString`).\n */\n static parse(value, _strict = false) {\n const match = _regexp.exec(value);\n if (!match) {\n return new Uri(_empty, _empty, _empty, _empty, _empty);\n }\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\n }\n /**\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\n *\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\n * `URI.parse('file://' + path)` because the path might contain characters that are\n * interpreted (# and ?). See the following sample:\n * ```ts\n const good = URI.file('/coding/c#/project1');\n good.scheme === 'file';\n good.path === '/coding/c#/project1';\n good.fragment === '';\n const bad = URI.parse('file://' + '/coding/c#/project1');\n bad.scheme === 'file';\n bad.path === '/coding/c'; // path is now broken\n bad.fragment === '/project1';\n ```\n *\n * @param path A file system path (see `URI#fsPath`)\n */\n static file(path) {\n let authority = _empty;\n // normalize to fwd-slashes on windows,\n // on other systems bwd-slashes are valid\n // filename character, eg /f\\oo/ba\\r.txt\n if (_platform_js__WEBPACK_IMPORTED_MODULE_1__.isWindows) {\n path = path.replace(/\\\\/g, _slash);\n }\n // check for authority as used in UNC shares\n // or use the path as given\n if (path[0] === _slash && path[1] === _slash) {\n const idx = path.indexOf(_slash, 2);\n if (idx === -1) {\n authority = path.substring(2);\n path = _slash;\n }\n else {\n authority = path.substring(2, idx);\n path = path.substring(idx) || _slash;\n }\n }\n return new Uri('file', authority, path, _empty, _empty);\n }\n /**\n * Creates new URI from uri components.\n *\n * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs\n * validation and should be used for untrusted uri components retrieved from storage,\n * user input, command arguments etc\n */\n static from(components, strict) {\n const result = new Uri(components.scheme, components.authority, components.path, components.query, components.fragment, strict);\n return result;\n }\n /**\n * Join a URI path with path fragments and normalizes the resulting path.\n *\n * @param uri The input URI.\n * @param pathFragment The path fragment to add to the URI path.\n * @returns The resulting URI.\n */\n static joinPath(uri, ...pathFragment) {\n if (!uri.path) {\n throw new Error(`[UriError]: cannot call joinPath on URI without path`);\n }\n let newPath;\n if (_platform_js__WEBPACK_IMPORTED_MODULE_1__.isWindows && uri.scheme === 'file') {\n newPath = URI.file(_path_js__WEBPACK_IMPORTED_MODULE_0__.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\n }\n else {\n newPath = _path_js__WEBPACK_IMPORTED_MODULE_0__.posix.join(uri.path, ...pathFragment);\n }\n return uri.with({ path: newPath });\n }\n // ---- printing/externalize ---------------------------\n /**\n * Creates a string representation for this URI. It's guaranteed that calling\n * `URI.parse` with the result of this function creates an URI which is equal\n * to this URI.\n *\n * * The result shall *not* be used for display purposes but for externalization or transport.\n * * The result will be encoded using the percentage encoding and encoding happens mostly\n * ignore the scheme-specific encoding rules.\n *\n * @param skipEncoding Do not encode the result, default is `false`\n */\n toString(skipEncoding = false) {\n return _asFormatted(this, skipEncoding);\n }\n toJSON() {\n return this;\n }\n static revive(data) {\n var _a, _b;\n if (!data) {\n return data;\n }\n else if (data instanceof URI) {\n return data;\n }\n else {\n const result = new Uri(data);\n result._formatted = (_a = data.external) !== null && _a !== void 0 ? _a : null;\n result._fsPath = data._sep === _pathSepMarker ? (_b = data.fsPath) !== null && _b !== void 0 ? _b : null : null;\n return result;\n }\n }\n}\nconst _pathSepMarker = _platform_js__WEBPACK_IMPORTED_MODULE_1__.isWindows ? 1 : undefined;\n// This class exists so that URI is compatible with vscode.Uri (API).\nclass Uri extends URI {\n constructor() {\n super(...arguments);\n this._formatted = null;\n this._fsPath = null;\n }\n get fsPath() {\n if (!this._fsPath) {\n this._fsPath = uriToFsPath(this, false);\n }\n return this._fsPath;\n }\n toString(skipEncoding = false) {\n if (!skipEncoding) {\n if (!this._formatted) {\n this._formatted = _asFormatted(this, false);\n }\n return this._formatted;\n }\n else {\n // we don't cache that\n return _asFormatted(this, true);\n }\n }\n toJSON() {\n const res = {\n $mid: 1 /* MarshalledId.Uri */\n };\n // cached state\n if (this._fsPath) {\n res.fsPath = this._fsPath;\n res._sep = _pathSepMarker;\n }\n if (this._formatted) {\n res.external = this._formatted;\n }\n //--- uri components\n if (this.path) {\n res.path = this.path;\n }\n // TODO\n // this isn't correct and can violate the UriComponents contract but\n // this is part of the vscode.Uri API and we shouldn't change how that\n // works anymore\n if (this.scheme) {\n res.scheme = this.scheme;\n }\n if (this.authority) {\n res.authority = this.authority;\n }\n if (this.query) {\n res.query = this.query;\n }\n if (this.fragment) {\n res.fragment = this.fragment;\n }\n return res;\n }\n}\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\nconst encodeTable = {\n [58 /* CharCode.Colon */]: '%3A',\n [47 /* CharCode.Slash */]: '%2F',\n [63 /* CharCode.QuestionMark */]: '%3F',\n [35 /* CharCode.Hash */]: '%23',\n [91 /* CharCode.OpenSquareBracket */]: '%5B',\n [93 /* CharCode.CloseSquareBracket */]: '%5D',\n [64 /* CharCode.AtSign */]: '%40',\n [33 /* CharCode.ExclamationMark */]: '%21',\n [36 /* CharCode.DollarSign */]: '%24',\n [38 /* CharCode.Ampersand */]: '%26',\n [39 /* CharCode.SingleQuote */]: '%27',\n [40 /* CharCode.OpenParen */]: '%28',\n [41 /* CharCode.CloseParen */]: '%29',\n [42 /* CharCode.Asterisk */]: '%2A',\n [43 /* CharCode.Plus */]: '%2B',\n [44 /* CharCode.Comma */]: '%2C',\n [59 /* CharCode.Semicolon */]: '%3B',\n [61 /* CharCode.Equals */]: '%3D',\n [32 /* CharCode.Space */]: '%20',\n};\nfunction encodeURIComponentFast(uriComponent, isPath, isAuthority) {\n let res = undefined;\n let nativeEncodePos = -1;\n for (let pos = 0; pos < uriComponent.length; pos++) {\n const code = uriComponent.charCodeAt(pos);\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\n if ((code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */)\n || (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */)\n || (code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */)\n || code === 45 /* CharCode.Dash */\n || code === 46 /* CharCode.Period */\n || code === 95 /* CharCode.Underline */\n || code === 126 /* CharCode.Tilde */\n || (isPath && code === 47 /* CharCode.Slash */)\n || (isAuthority && code === 91 /* CharCode.OpenSquareBracket */)\n || (isAuthority && code === 93 /* CharCode.CloseSquareBracket */)\n || (isAuthority && code === 58 /* CharCode.Colon */)) {\n // check if we are delaying native encode\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n // check if we write into a new string (by default we try to return the param)\n if (res !== undefined) {\n res += uriComponent.charAt(pos);\n }\n }\n else {\n // encoding needed, we need to allocate a new string\n if (res === undefined) {\n res = uriComponent.substr(0, pos);\n }\n // check with default table first\n const escaped = encodeTable[code];\n if (escaped !== undefined) {\n // check if we are delaying native encode\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n // append escaped variant to result\n res += escaped;\n }\n else if (nativeEncodePos === -1) {\n // use native encode only when needed\n nativeEncodePos = pos;\n }\n }\n }\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\n }\n return res !== undefined ? res : uriComponent;\n}\nfunction encodeURIComponentMinimal(path) {\n let res = undefined;\n for (let pos = 0; pos < path.length; pos++) {\n const code = path.charCodeAt(pos);\n if (code === 35 /* CharCode.Hash */ || code === 63 /* CharCode.QuestionMark */) {\n if (res === undefined) {\n res = path.substr(0, pos);\n }\n res += encodeTable[code];\n }\n else {\n if (res !== undefined) {\n res += path[pos];\n }\n }\n }\n return res !== undefined ? res : path;\n}\n/**\n * Compute `fsPath` for the given uri\n */\nfunction uriToFsPath(uri, keepDriveLetterCasing) {\n let value;\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\n // unc path: file://shares/c$/far/boo\n value = `//${uri.authority}${uri.path}`;\n }\n else if (uri.path.charCodeAt(0) === 47 /* CharCode.Slash */\n && (uri.path.charCodeAt(1) >= 65 /* CharCode.A */ && uri.path.charCodeAt(1) <= 90 /* CharCode.Z */ || uri.path.charCodeAt(1) >= 97 /* CharCode.a */ && uri.path.charCodeAt(1) <= 122 /* CharCode.z */)\n && uri.path.charCodeAt(2) === 58 /* CharCode.Colon */) {\n if (!keepDriveLetterCasing) {\n // windows drive letter: file:///c:/far/boo\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\n }\n else {\n value = uri.path.substr(1);\n }\n }\n else {\n // other path\n value = uri.path;\n }\n if (_platform_js__WEBPACK_IMPORTED_MODULE_1__.isWindows) {\n value = value.replace(/\\//g, '\\\\');\n }\n return value;\n}\n/**\n * Create the external version of a uri\n */\nfunction _asFormatted(uri, skipEncoding) {\n const encoder = !skipEncoding\n ? encodeURIComponentFast\n : encodeURIComponentMinimal;\n let res = '';\n let { scheme, authority, path, query, fragment } = uri;\n if (scheme) {\n res += scheme;\n res += ':';\n }\n if (authority || scheme === 'file') {\n res += _slash;\n res += _slash;\n }\n if (authority) {\n let idx = authority.indexOf('@');\n if (idx !== -1) {\n // @\n const userinfo = authority.substr(0, idx);\n authority = authority.substr(idx + 1);\n idx = userinfo.lastIndexOf(':');\n if (idx === -1) {\n res += encoder(userinfo, false, false);\n }\n else {\n // :@\n res += encoder(userinfo.substr(0, idx), false, false);\n res += ':';\n res += encoder(userinfo.substr(idx + 1), false, true);\n }\n res += '@';\n }\n authority = authority.toLowerCase();\n idx = authority.lastIndexOf(':');\n if (idx === -1) {\n res += encoder(authority, false, true);\n }\n else {\n // :\n res += encoder(authority.substr(0, idx), false, true);\n res += authority.substr(idx);\n }\n }\n if (path) {\n // lower-case windows drive letters in /C:/fff or C:/fff\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* CharCode.Slash */ && path.charCodeAt(2) === 58 /* CharCode.Colon */) {\n const code = path.charCodeAt(1);\n if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) {\n path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\n }\n }\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* CharCode.Colon */) {\n const code = path.charCodeAt(0);\n if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) {\n path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\n }\n }\n // encode the rest of the path\n res += encoder(path, true, false);\n }\n if (query) {\n res += '?';\n res += encoder(query, false, false);\n }\n if (fragment) {\n res += '#';\n res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment;\n }\n return res;\n}\n// --- decode\nfunction decodeURIComponentGraceful(str) {\n try {\n return decodeURIComponent(str);\n }\n catch (_a) {\n if (str.length > 3) {\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\n }\n else {\n return str;\n }\n }\n}\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\nfunction percentDecode(str) {\n if (!str.match(_rEncodedAsHex)) {\n return str;\n }\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/uri.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/uuid.js": +/*!***************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/uuid.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ generateUuid: () => (/* binding */ generateUuid)\n/* harmony export */ });\nconst generateUuid = (function () {\n // use `randomUUID` if possible\n if (typeof crypto === 'object' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID.bind(crypto);\n }\n // use `randomValues` if possible\n let getRandomValues;\n if (typeof crypto === 'object' && typeof crypto.getRandomValues === 'function') {\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n else {\n getRandomValues = function (bucket) {\n for (let i = 0; i < bucket.length; i++) {\n bucket[i] = Math.floor(Math.random() * 256);\n }\n return bucket;\n };\n }\n // prep-work\n const _data = new Uint8Array(16);\n const _hex = [];\n for (let i = 0; i < 256; i++) {\n _hex.push(i.toString(16).padStart(2, '0'));\n }\n return function generateUuid() {\n // get data\n getRandomValues(_data);\n // set version bits\n _data[6] = (_data[6] & 0x0f) | 0x40;\n _data[8] = (_data[8] & 0x3f) | 0x80;\n // print as string\n let i = 0;\n let result = '';\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += '-';\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += '-';\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += '-';\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += '-';\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n result += _hex[_data[i++]];\n return result;\n };\n})();\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/uuid.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js": +/*!******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SimpleWorkerClient: () => (/* binding */ SimpleWorkerClient),\n/* harmony export */ SimpleWorkerServer: () => (/* binding */ SimpleWorkerServer),\n/* harmony export */ create: () => (/* binding */ create),\n/* harmony export */ logOnceWebWorkerWarning: () => (/* binding */ logOnceWebWorkerWarning)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors.js */ \"./node_modules/monaco-editor/esm/vs/base/common/errors.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _objects_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../objects.js */ \"./node_modules/monaco-editor/esm/vs/base/common/objects.js\");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../strings.js */ \"./node_modules/monaco-editor/esm/vs/base/common/strings.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nconst INITIALIZE = '$initialize';\nlet webWorkerWarningLogged = false;\nfunction logOnceWebWorkerWarning(err) {\n if (!_platform_js__WEBPACK_IMPORTED_MODULE_4__.isWeb) {\n // running tests\n return;\n }\n if (!webWorkerWarningLogged) {\n webWorkerWarningLogged = true;\n console.warn('Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq');\n }\n console.warn(err.message);\n}\nclass RequestMessage {\n constructor(vsWorker, req, method, args) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.method = method;\n this.args = args;\n this.type = 0 /* MessageType.Request */;\n }\n}\nclass ReplyMessage {\n constructor(vsWorker, seq, res, err) {\n this.vsWorker = vsWorker;\n this.seq = seq;\n this.res = res;\n this.err = err;\n this.type = 1 /* MessageType.Reply */;\n }\n}\nclass SubscribeEventMessage {\n constructor(vsWorker, req, eventName, arg) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.eventName = eventName;\n this.arg = arg;\n this.type = 2 /* MessageType.SubscribeEvent */;\n }\n}\nclass EventMessage {\n constructor(vsWorker, req, event) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.event = event;\n this.type = 3 /* MessageType.Event */;\n }\n}\nclass UnsubscribeEventMessage {\n constructor(vsWorker, req) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.type = 4 /* MessageType.UnsubscribeEvent */;\n }\n}\nclass SimpleWorkerProtocol {\n constructor(handler) {\n this._workerId = -1;\n this._handler = handler;\n this._lastSentReq = 0;\n this._pendingReplies = Object.create(null);\n this._pendingEmitters = new Map();\n this._pendingEvents = new Map();\n }\n setWorkerId(workerId) {\n this._workerId = workerId;\n }\n sendMessage(method, args) {\n const req = String(++this._lastSentReq);\n return new Promise((resolve, reject) => {\n this._pendingReplies[req] = {\n resolve: resolve,\n reject: reject\n };\n this._send(new RequestMessage(this._workerId, req, method, args));\n });\n }\n listen(eventName, arg) {\n let req = null;\n const emitter = new _event_js__WEBPACK_IMPORTED_MODULE_1__.Emitter({\n onWillAddFirstListener: () => {\n req = String(++this._lastSentReq);\n this._pendingEmitters.set(req, emitter);\n this._send(new SubscribeEventMessage(this._workerId, req, eventName, arg));\n },\n onDidRemoveLastListener: () => {\n this._pendingEmitters.delete(req);\n this._send(new UnsubscribeEventMessage(this._workerId, req));\n req = null;\n }\n });\n return emitter.event;\n }\n handleMessage(message) {\n if (!message || !message.vsWorker) {\n return;\n }\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\n return;\n }\n this._handleMessage(message);\n }\n _handleMessage(msg) {\n switch (msg.type) {\n case 1 /* MessageType.Reply */:\n return this._handleReplyMessage(msg);\n case 0 /* MessageType.Request */:\n return this._handleRequestMessage(msg);\n case 2 /* MessageType.SubscribeEvent */:\n return this._handleSubscribeEventMessage(msg);\n case 3 /* MessageType.Event */:\n return this._handleEventMessage(msg);\n case 4 /* MessageType.UnsubscribeEvent */:\n return this._handleUnsubscribeEventMessage(msg);\n }\n }\n _handleReplyMessage(replyMessage) {\n if (!this._pendingReplies[replyMessage.seq]) {\n console.warn('Got reply to unknown seq');\n return;\n }\n const reply = this._pendingReplies[replyMessage.seq];\n delete this._pendingReplies[replyMessage.seq];\n if (replyMessage.err) {\n let err = replyMessage.err;\n if (replyMessage.err.$isError) {\n err = new Error();\n err.name = replyMessage.err.name;\n err.message = replyMessage.err.message;\n err.stack = replyMessage.err.stack;\n }\n reply.reject(err);\n return;\n }\n reply.resolve(replyMessage.res);\n }\n _handleRequestMessage(requestMessage) {\n const req = requestMessage.req;\n const result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\n result.then((r) => {\n this._send(new ReplyMessage(this._workerId, req, r, undefined));\n }, (e) => {\n if (e.detail instanceof Error) {\n // Loading errors have a detail property that points to the actual error\n e.detail = (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.transformErrorForSerialization)(e.detail);\n }\n this._send(new ReplyMessage(this._workerId, req, undefined, (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.transformErrorForSerialization)(e)));\n });\n }\n _handleSubscribeEventMessage(msg) {\n const req = msg.req;\n const disposable = this._handler.handleEvent(msg.eventName, msg.arg)((event) => {\n this._send(new EventMessage(this._workerId, req, event));\n });\n this._pendingEvents.set(req, disposable);\n }\n _handleEventMessage(msg) {\n if (!this._pendingEmitters.has(msg.req)) {\n console.warn('Got event for unknown req');\n return;\n }\n this._pendingEmitters.get(msg.req).fire(msg.event);\n }\n _handleUnsubscribeEventMessage(msg) {\n if (!this._pendingEvents.has(msg.req)) {\n console.warn('Got unsubscribe for unknown req');\n return;\n }\n this._pendingEvents.get(msg.req).dispose();\n this._pendingEvents.delete(msg.req);\n }\n _send(msg) {\n const transfer = [];\n if (msg.type === 0 /* MessageType.Request */) {\n for (let i = 0; i < msg.args.length; i++) {\n if (msg.args[i] instanceof ArrayBuffer) {\n transfer.push(msg.args[i]);\n }\n }\n }\n else if (msg.type === 1 /* MessageType.Reply */) {\n if (msg.res instanceof ArrayBuffer) {\n transfer.push(msg.res);\n }\n }\n this._handler.sendMessage(msg, transfer);\n }\n}\n/**\n * Main thread side\n */\nclass SimpleWorkerClient extends _lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor(workerFactory, moduleId, host) {\n super();\n let lazyProxyReject = null;\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\n this._protocol.handleMessage(msg);\n }, (err) => {\n // in Firefox, web workers fail lazily :(\n // we will reject the proxy\n lazyProxyReject === null || lazyProxyReject === void 0 ? void 0 : lazyProxyReject(err);\n }));\n this._protocol = new SimpleWorkerProtocol({\n sendMessage: (msg, transfer) => {\n this._worker.postMessage(msg, transfer);\n },\n handleMessage: (method, args) => {\n if (typeof host[method] !== 'function') {\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\n }\n try {\n return Promise.resolve(host[method].apply(host, args));\n }\n catch (e) {\n return Promise.reject(e);\n }\n },\n handleEvent: (eventName, arg) => {\n if (propertyIsDynamicEvent(eventName)) {\n const event = host[eventName].call(host, arg);\n if (typeof event !== 'function') {\n throw new Error(`Missing dynamic event ${eventName} on main thread host.`);\n }\n return event;\n }\n if (propertyIsEvent(eventName)) {\n const event = host[eventName];\n if (typeof event !== 'function') {\n throw new Error(`Missing event ${eventName} on main thread host.`);\n }\n return event;\n }\n throw new Error(`Malformed event name ${eventName}`);\n }\n });\n this._protocol.setWorkerId(this._worker.getId());\n // Gather loader configuration\n let loaderConfiguration = null;\n const globalRequire = globalThis.require;\n if (typeof globalRequire !== 'undefined' && typeof globalRequire.getConfig === 'function') {\n // Get the configuration from the Monaco AMD Loader\n loaderConfiguration = globalRequire.getConfig();\n }\n else if (typeof globalThis.requirejs !== 'undefined') {\n // Get the configuration from requirejs\n loaderConfiguration = globalThis.requirejs.s.contexts._.config;\n }\n const hostMethods = (0,_objects_js__WEBPACK_IMPORTED_MODULE_3__.getAllMethodNames)(host);\n // Send initialize message\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\n this._worker.getId(),\n JSON.parse(JSON.stringify(loaderConfiguration)),\n moduleId,\n hostMethods,\n ]);\n // Create proxy to loaded code\n const proxyMethodRequest = (method, args) => {\n return this._request(method, args);\n };\n const proxyListen = (eventName, arg) => {\n return this._protocol.listen(eventName, arg);\n };\n this._lazyProxy = new Promise((resolve, reject) => {\n lazyProxyReject = reject;\n this._onModuleLoaded.then((availableMethods) => {\n resolve(createProxyObject(availableMethods, proxyMethodRequest, proxyListen));\n }, (e) => {\n reject(e);\n this._onError('Worker failed to load ' + moduleId, e);\n });\n });\n }\n getProxyObject() {\n return this._lazyProxy;\n }\n _request(method, args) {\n return new Promise((resolve, reject) => {\n this._onModuleLoaded.then(() => {\n this._protocol.sendMessage(method, args).then(resolve, reject);\n }, reject);\n });\n }\n _onError(message, error) {\n console.error(message);\n console.info(error);\n }\n}\nfunction propertyIsEvent(name) {\n // Assume a property is an event if it has a form of \"onSomething\"\n return name[0] === 'o' && name[1] === 'n' && _strings_js__WEBPACK_IMPORTED_MODULE_5__.isUpperAsciiLetter(name.charCodeAt(2));\n}\nfunction propertyIsDynamicEvent(name) {\n // Assume a property is a dynamic event (a method that returns an event) if it has a form of \"onDynamicSomething\"\n return /^onDynamic/.test(name) && _strings_js__WEBPACK_IMPORTED_MODULE_5__.isUpperAsciiLetter(name.charCodeAt(9));\n}\nfunction createProxyObject(methodNames, invoke, proxyListen) {\n const createProxyMethod = (method) => {\n return function () {\n const args = Array.prototype.slice.call(arguments, 0);\n return invoke(method, args);\n };\n };\n const createProxyDynamicEvent = (eventName) => {\n return function (arg) {\n return proxyListen(eventName, arg);\n };\n };\n const result = {};\n for (const methodName of methodNames) {\n if (propertyIsDynamicEvent(methodName)) {\n result[methodName] = createProxyDynamicEvent(methodName);\n continue;\n }\n if (propertyIsEvent(methodName)) {\n result[methodName] = proxyListen(methodName, undefined);\n continue;\n }\n result[methodName] = createProxyMethod(methodName);\n }\n return result;\n}\n/**\n * Worker side\n */\nclass SimpleWorkerServer {\n constructor(postMessage, requestHandlerFactory) {\n this._requestHandlerFactory = requestHandlerFactory;\n this._requestHandler = null;\n this._protocol = new SimpleWorkerProtocol({\n sendMessage: (msg, transfer) => {\n postMessage(msg, transfer);\n },\n handleMessage: (method, args) => this._handleMessage(method, args),\n handleEvent: (eventName, arg) => this._handleEvent(eventName, arg)\n });\n }\n onmessage(msg) {\n this._protocol.handleMessage(msg);\n }\n _handleMessage(method, args) {\n if (method === INITIALIZE) {\n return this.initialize(args[0], args[1], args[2], args[3]);\n }\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\n }\n try {\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n _handleEvent(eventName, arg) {\n if (!this._requestHandler) {\n throw new Error(`Missing requestHandler`);\n }\n if (propertyIsDynamicEvent(eventName)) {\n const event = this._requestHandler[eventName].call(this._requestHandler, arg);\n if (typeof event !== 'function') {\n throw new Error(`Missing dynamic event ${eventName} on request handler.`);\n }\n return event;\n }\n if (propertyIsEvent(eventName)) {\n const event = this._requestHandler[eventName];\n if (typeof event !== 'function') {\n throw new Error(`Missing event ${eventName} on request handler.`);\n }\n return event;\n }\n throw new Error(`Malformed event name ${eventName}`);\n }\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\n this._protocol.setWorkerId(workerId);\n const proxyMethodRequest = (method, args) => {\n return this._protocol.sendMessage(method, args);\n };\n const proxyListen = (eventName, arg) => {\n return this._protocol.listen(eventName, arg);\n };\n const hostProxy = createProxyObject(hostMethods, proxyMethodRequest, proxyListen);\n if (this._requestHandlerFactory) {\n // static request handler\n this._requestHandler = this._requestHandlerFactory(hostProxy);\n return Promise.resolve((0,_objects_js__WEBPACK_IMPORTED_MODULE_3__.getAllMethodNames)(this._requestHandler));\n }\n if (loaderConfig) {\n // Remove 'baseUrl', handling it is beyond scope for now\n if (typeof loaderConfig.baseUrl !== 'undefined') {\n delete loaderConfig['baseUrl'];\n }\n if (typeof loaderConfig.paths !== 'undefined') {\n if (typeof loaderConfig.paths.vs !== 'undefined') {\n delete loaderConfig.paths['vs'];\n }\n }\n if (typeof loaderConfig.trustedTypesPolicy !== undefined) {\n // don't use, it has been destroyed during serialize\n delete loaderConfig['trustedTypesPolicy'];\n }\n // Since this is in a web worker, enable catching errors\n loaderConfig.catchError = true;\n globalThis.require.config(loaderConfig);\n }\n return new Promise((resolve, reject) => {\n // Use the global require to be sure to get the global config\n // ESM-comment-begin\n // \t\t\tconst req = (globalThis.require || require);\n // ESM-comment-end\n // ESM-uncomment-begin\n const req = globalThis.require;\n // ESM-uncomment-end\n req([moduleId], (module) => {\n this._requestHandler = module.create(hostProxy);\n if (!this._requestHandler) {\n reject(new Error(`No RequestHandler!`));\n return;\n }\n resolve((0,_objects_js__WEBPACK_IMPORTED_MODULE_3__.getAllMethodNames)(this._requestHandler));\n }, reject);\n });\n }\n}\n/**\n * Called on the worker side\n * @skipMangle\n */\nfunction create(postMessage) {\n return new SimpleWorkerServer(postMessage, null);\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/base/parts/storage/common/storage.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/base/parts/storage/common/storage.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ InMemoryStorageDatabase: () => (/* binding */ InMemoryStorageDatabase),\n/* harmony export */ Storage: () => (/* binding */ Storage),\n/* harmony export */ StorageHint: () => (/* binding */ StorageHint),\n/* harmony export */ StorageState: () => (/* binding */ StorageState)\n/* harmony export */ });\n/* harmony import */ var _common_async_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../common/async.js */ \"./node_modules/monaco-editor/esm/vs/base/common/async.js\");\n/* harmony import */ var _common_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _common_marshalling_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/marshalling.js */ \"./node_modules/monaco-editor/esm/vs/base/common/marshalling.js\");\n/* harmony import */ var _common_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/types.js */ \"./node_modules/monaco-editor/esm/vs/base/common/types.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\nvar StorageHint;\n(function (StorageHint) {\n // A hint to the storage that the storage\n // does not exist on disk yet. This allows\n // the storage library to improve startup\n // time by not checking the storage for data.\n StorageHint[StorageHint[\"STORAGE_DOES_NOT_EXIST\"] = 0] = \"STORAGE_DOES_NOT_EXIST\";\n // A hint to the storage that the storage\n // is backed by an in-memory storage.\n StorageHint[StorageHint[\"STORAGE_IN_MEMORY\"] = 1] = \"STORAGE_IN_MEMORY\";\n})(StorageHint || (StorageHint = {}));\nvar StorageState;\n(function (StorageState) {\n StorageState[StorageState[\"None\"] = 0] = \"None\";\n StorageState[StorageState[\"Initialized\"] = 1] = \"Initialized\";\n StorageState[StorageState[\"Closed\"] = 2] = \"Closed\";\n})(StorageState || (StorageState = {}));\nclass Storage extends _common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor(database, options = Object.create(null)) {\n super();\n this.database = database;\n this.options = options;\n this._onDidChangeStorage = this._register(new _common_event_js__WEBPACK_IMPORTED_MODULE_1__.PauseableEmitter());\n this.onDidChangeStorage = this._onDidChangeStorage.event;\n this.state = StorageState.None;\n this.cache = new Map();\n this.flushDelayer = new _common_async_js__WEBPACK_IMPORTED_MODULE_0__.ThrottledDelayer(Storage.DEFAULT_FLUSH_DELAY);\n this.pendingDeletes = new Set();\n this.pendingInserts = new Map();\n this.whenFlushedCallbacks = [];\n this.registerListeners();\n }\n registerListeners() {\n this._register(this.database.onDidChangeItemsExternal(e => this.onDidChangeItemsExternal(e)));\n }\n onDidChangeItemsExternal(e) {\n var _a, _b;\n this._onDidChangeStorage.pause();\n try {\n // items that change external require us to update our\n // caches with the values. we just accept the value and\n // emit an event if there is a change.\n (_a = e.changed) === null || _a === void 0 ? void 0 : _a.forEach((value, key) => this.acceptExternal(key, value));\n (_b = e.deleted) === null || _b === void 0 ? void 0 : _b.forEach(key => this.acceptExternal(key, undefined));\n }\n finally {\n this._onDidChangeStorage.resume();\n }\n }\n acceptExternal(key, value) {\n if (this.state === StorageState.Closed) {\n return; // Return early if we are already closed\n }\n let changed = false;\n // Item got removed, check for deletion\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_4__.isUndefinedOrNull)(value)) {\n changed = this.cache.delete(key);\n }\n // Item got updated, check for change\n else {\n const currentValue = this.cache.get(key);\n if (currentValue !== value) {\n this.cache.set(key, value);\n changed = true;\n }\n }\n // Signal to outside listeners\n if (changed) {\n this._onDidChangeStorage.fire({ key, external: true });\n }\n }\n get(key, fallbackValue) {\n const value = this.cache.get(key);\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_4__.isUndefinedOrNull)(value)) {\n return fallbackValue;\n }\n return value;\n }\n getBoolean(key, fallbackValue) {\n const value = this.get(key);\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_4__.isUndefinedOrNull)(value)) {\n return fallbackValue;\n }\n return value === 'true';\n }\n getNumber(key, fallbackValue) {\n const value = this.get(key);\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_4__.isUndefinedOrNull)(value)) {\n return fallbackValue;\n }\n return parseInt(value, 10);\n }\n set(key, value, external = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.state === StorageState.Closed) {\n return; // Return early if we are already closed\n }\n // We remove the key for undefined/null values\n if ((0,_common_types_js__WEBPACK_IMPORTED_MODULE_4__.isUndefinedOrNull)(value)) {\n return this.delete(key, external);\n }\n // Otherwise, convert to String and store\n const valueStr = (0,_common_types_js__WEBPACK_IMPORTED_MODULE_4__.isObject)(value) || Array.isArray(value) ? (0,_common_marshalling_js__WEBPACK_IMPORTED_MODULE_3__.stringify)(value) : String(value);\n // Return early if value already set\n const currentValue = this.cache.get(key);\n if (currentValue === valueStr) {\n return;\n }\n // Update in cache and pending\n this.cache.set(key, valueStr);\n this.pendingInserts.set(key, valueStr);\n this.pendingDeletes.delete(key);\n // Event\n this._onDidChangeStorage.fire({ key, external });\n // Accumulate work by scheduling after timeout\n return this.doFlush();\n });\n }\n delete(key, external = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.state === StorageState.Closed) {\n return; // Return early if we are already closed\n }\n // Remove from cache and add to pending\n const wasDeleted = this.cache.delete(key);\n if (!wasDeleted) {\n return; // Return early if value already deleted\n }\n if (!this.pendingDeletes.has(key)) {\n this.pendingDeletes.add(key);\n }\n this.pendingInserts.delete(key);\n // Event\n this._onDidChangeStorage.fire({ key, external });\n // Accumulate work by scheduling after timeout\n return this.doFlush();\n });\n }\n get hasPending() {\n return this.pendingInserts.size > 0 || this.pendingDeletes.size > 0;\n }\n flushPending() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.hasPending) {\n return; // return early if nothing to do\n }\n // Get pending data\n const updateRequest = { insert: this.pendingInserts, delete: this.pendingDeletes };\n // Reset pending data for next run\n this.pendingDeletes = new Set();\n this.pendingInserts = new Map();\n // Update in storage and release any\n // waiters we have once done\n return this.database.updateItems(updateRequest).finally(() => {\n var _a;\n if (!this.hasPending) {\n while (this.whenFlushedCallbacks.length) {\n (_a = this.whenFlushedCallbacks.pop()) === null || _a === void 0 ? void 0 : _a();\n }\n }\n });\n });\n }\n doFlush(delay) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.flushDelayer.trigger(() => this.flushPending(), delay);\n });\n }\n dispose() {\n this.flushDelayer.dispose();\n super.dispose();\n }\n}\nStorage.DEFAULT_FLUSH_DELAY = 100;\nclass InMemoryStorageDatabase {\n constructor() {\n this.onDidChangeItemsExternal = _common_event_js__WEBPACK_IMPORTED_MODULE_1__.Event.None;\n this.items = new Map();\n }\n updateItems(request) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = request.insert) === null || _a === void 0 ? void 0 : _a.forEach((value, key) => this.items.set(key, value));\n (_b = request.delete) === null || _b === void 0 ? void 0 : _b.forEach(key => this.items.delete(key));\n });\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/base/parts/storage/common/storage.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadLanguage: () => (/* binding */ loadLanguage),\n/* harmony export */ registerLanguage: () => (/* binding */ registerLanguage)\n/* harmony export */ });\n/* harmony import */ var _editor_editor_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../editor/editor.api.js */ \"./node_modules/monaco-editor/esm/vs/editor/editor.api.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, _editor_editor_api_js__WEBPACK_IMPORTED_MODULE_0__);\n\n\n// src/basic-languages/_.contribution.ts\nvar languageDefinitions = {};\nvar lazyLanguageLoaders = {};\nvar LazyLanguageLoader = class {\n static getOrCreate(languageId) {\n if (!lazyLanguageLoaders[languageId]) {\n lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);\n }\n return lazyLanguageLoaders[languageId];\n }\n _languageId;\n _loadingTriggered;\n _lazyLoadPromise;\n _lazyLoadPromiseResolve;\n _lazyLoadPromiseReject;\n constructor(languageId) {\n this._languageId = languageId;\n this._loadingTriggered = false;\n this._lazyLoadPromise = new Promise((resolve, reject) => {\n this._lazyLoadPromiseResolve = resolve;\n this._lazyLoadPromiseReject = reject;\n });\n }\n load() {\n if (!this._loadingTriggered) {\n this._loadingTriggered = true;\n languageDefinitions[this._languageId].loader().then((mod) => this._lazyLoadPromiseResolve(mod), (err) => this._lazyLoadPromiseReject(err));\n }\n return this._lazyLoadPromise;\n }\n};\nasync function loadLanguage(languageId) {\n await LazyLanguageLoader.getOrCreate(languageId).load();\n const model = monaco_editor_core_exports.editor.createModel(\"\", languageId);\n model.dispose();\n}\nfunction registerLanguage(def) {\n const languageId = def.id;\n languageDefinitions[languageId] = def;\n monaco_editor_core_exports.languages.register(def);\n const lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);\n monaco_editor_core_exports.languages.registerTokensProviderFactory(languageId, {\n create: async () => {\n const mod = await lazyLanguageLoader.load();\n return mod.language;\n }\n });\n monaco_editor_core_exports.languages.onLanguageEncountered(languageId, async () => {\n const mod = await lazyLanguageLoader.load();\n monaco_editor_core_exports.languages.setLanguageConfiguration(languageId, mod.conf);\n });\n}\n\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/abap/abap.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/abap/abap.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/abap/abap.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"abap\",\n extensions: [\".abap\"],\n aliases: [\"abap\", \"ABAP\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_abap_abap_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./abap.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/abap/abap.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/abap/abap.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/apex/apex.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/apex/apex.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/apex/apex.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"apex\",\n extensions: [\".cls\"],\n aliases: [\"Apex\", \"apex\"],\n mimetypes: [\"text/x-apex-source\", \"text/x-apex\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_apex_apex_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./apex.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/apex/apex.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/apex/apex.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/azcli/azcli.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/azcli/azcli.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/azcli/azcli.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"azcli\",\n extensions: [\".azcli\"],\n aliases: [\"Azure CLI\", \"azcli\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_azcli_azcli_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./azcli.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/azcli/azcli.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/azcli/azcli.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/bat/bat.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/bat/bat.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/bat/bat.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"bat\",\n extensions: [\".bat\", \".cmd\"],\n aliases: [\"Batch\", \"bat\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_bat_bat_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./bat.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/bat/bat.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/bat/bat.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/bicep/bicep.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/bicep/bicep.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/bicep/bicep.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"bicep\",\n extensions: [\".bicep\"],\n aliases: [\"Bicep\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_bicep_bicep_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./bicep.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/bicep/bicep.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/bicep/bicep.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/cameligo/cameligo.contribution.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/cameligo/cameligo.contribution.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/cameligo/cameligo.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"cameligo\",\n extensions: [\".mligo\"],\n aliases: [\"Cameligo\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_cameligo_cameligo_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./cameligo.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/cameligo/cameligo.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/cameligo/cameligo.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/clojure/clojure.contribution.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/clojure/clojure.contribution.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/clojure/clojure.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"clojure\",\n extensions: [\".clj\", \".cljs\", \".cljc\", \".edn\"],\n aliases: [\"clojure\", \"Clojure\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_clojure_clojure_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./clojure.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/clojure/clojure.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/clojure/clojure.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/coffee/coffee.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/coffee/coffee.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/coffee/coffee.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"coffeescript\",\n extensions: [\".coffee\"],\n aliases: [\"CoffeeScript\", \"coffeescript\", \"coffee\"],\n mimetypes: [\"text/x-coffeescript\", \"text/coffeescript\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_coffee_coffee_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./coffee.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/coffee/coffee.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/coffee/coffee.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/cpp/cpp.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"c\",\n extensions: [\".c\", \".h\"],\n aliases: [\"C\", \"c\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_cpp_cpp_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./cpp.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.js\"));\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"cpp\",\n extensions: [\".cpp\", \".cc\", \".cxx\", \".hpp\", \".hh\", \".hxx\"],\n aliases: [\"C++\", \"Cpp\", \"cpp\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_cpp_cpp_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./cpp.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/csharp/csharp.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"csharp\",\n extensions: [\".cs\", \".csx\", \".cake\"],\n aliases: [\"C#\", \"csharp\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_csharp_csharp_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./csharp.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/csp/csp.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/csp/csp.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/csp/csp.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"csp\",\n extensions: [],\n aliases: [\"CSP\", \"csp\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_csp_csp_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./csp.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/csp/csp.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/csp/csp.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/css/css.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/css/css.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/css/css.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"css\",\n extensions: [\".css\"],\n aliases: [\"CSS\", \"css\"],\n mimetypes: [\"text/css\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_css_css_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./css.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/css/css.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/css/css.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/cypher/cypher.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/cypher/cypher.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/cypher/cypher.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"cypher\",\n extensions: [\".cypher\", \".cyp\"],\n aliases: [\"Cypher\", \"OpenCypher\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_cypher_cypher_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./cypher.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/cypher/cypher.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/cypher/cypher.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/dart/dart.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/dart/dart.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/dart/dart.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"dart\",\n extensions: [\".dart\"],\n aliases: [\"Dart\", \"dart\"],\n mimetypes: [\"text/x-dart-source\", \"text/x-dart\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_dart_dart_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./dart.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/dart/dart.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/dart/dart.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/dockerfile/dockerfile.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"dockerfile\",\n extensions: [\".dockerfile\"],\n filenames: [\"Dockerfile\"],\n aliases: [\"Dockerfile\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_dockerfile_dockerfile_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./dockerfile.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/ecl/ecl.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/ecl/ecl.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/ecl/ecl.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"ecl\",\n extensions: [\".ecl\"],\n aliases: [\"ECL\", \"Ecl\", \"ecl\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_ecl_ecl_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ecl.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/ecl/ecl.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/ecl/ecl.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/elixir/elixir.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/elixir/elixir.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/elixir/elixir.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"elixir\",\n extensions: [\".ex\", \".exs\"],\n aliases: [\"Elixir\", \"elixir\", \"ex\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_elixir_elixir_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./elixir.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/elixir/elixir.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/elixir/elixir.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/flow9/flow9.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/flow9/flow9.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/flow9/flow9.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"flow9\",\n extensions: [\".flow\"],\n aliases: [\"Flow9\", \"Flow\", \"flow9\", \"flow\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_flow9_flow9_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./flow9.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/flow9/flow9.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/flow9/flow9.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.contribution.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.contribution.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/freemarker2/freemarker2.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"freemarker2\",\n extensions: [\".ftl\", \".ftlh\", \".ftlx\"],\n aliases: [\"FreeMarker2\", \"Apache FreeMarker2\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./freemarker2.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js\")).then((m) => m.TagAutoInterpolationDollar);\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"freemarker2.tag-angle.interpolation-dollar\",\n aliases: [\"FreeMarker2 (Angle/Dollar)\", \"Apache FreeMarker2 (Angle/Dollar)\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./freemarker2.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js\")).then((m) => m.TagAngleInterpolationDollar);\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"freemarker2.tag-bracket.interpolation-dollar\",\n aliases: [\"FreeMarker2 (Bracket/Dollar)\", \"Apache FreeMarker2 (Bracket/Dollar)\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./freemarker2.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js\")).then((m) => m.TagBracketInterpolationDollar);\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"freemarker2.tag-angle.interpolation-bracket\",\n aliases: [\"FreeMarker2 (Angle/Bracket)\", \"Apache FreeMarker2 (Angle/Bracket)\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./freemarker2.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js\")).then((m) => m.TagAngleInterpolationBracket);\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"freemarker2.tag-bracket.interpolation-bracket\",\n aliases: [\"FreeMarker2 (Bracket/Bracket)\", \"Apache FreeMarker2 (Bracket/Bracket)\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./freemarker2.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js\")).then((m) => m.TagBracketInterpolationBracket);\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"freemarker2.tag-auto.interpolation-dollar\",\n aliases: [\"FreeMarker2 (Auto/Dollar)\", \"Apache FreeMarker2 (Auto/Dollar)\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./freemarker2.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js\")).then((m) => m.TagAutoInterpolationDollar);\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"freemarker2.tag-auto.interpolation-bracket\",\n aliases: [\"FreeMarker2 (Auto/Bracket)\", \"Apache FreeMarker2 (Auto/Bracket)\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_freemarker2_freemarker2_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./freemarker2.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js\")).then((m) => m.TagAutoInterpolationBracket);\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/fsharp/fsharp.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/fsharp/fsharp.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/fsharp/fsharp.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"fsharp\",\n extensions: [\".fs\", \".fsi\", \".ml\", \".mli\", \".fsx\", \".fsscript\"],\n aliases: [\"F#\", \"FSharp\", \"fsharp\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_fsharp_fsharp_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./fsharp.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/fsharp/fsharp.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/fsharp/fsharp.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/go/go.contribution.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/go/go.contribution.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/go/go.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"go\",\n extensions: [\".go\"],\n aliases: [\"Go\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_go_go_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./go.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/go/go.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/go/go.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js": +/*!*******************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/graphql/graphql.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"graphql\",\n extensions: [\".graphql\", \".gql\"],\n aliases: [\"GraphQL\", \"graphql\", \"gql\"],\n mimetypes: [\"application/graphql\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_graphql_graphql_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./graphql.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/graphql/graphql.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/handlebars/handlebars.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"handlebars\",\n extensions: [\".handlebars\", \".hbs\"],\n aliases: [\"Handlebars\", \"handlebars\", \"hbs\"],\n mimetypes: [\"text/x-handlebars-template\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_handlebars_handlebars_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./handlebars.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/hcl/hcl.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/hcl/hcl.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/hcl/hcl.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"hcl\",\n extensions: [\".tf\", \".tfvars\", \".hcl\"],\n aliases: [\"Terraform\", \"tf\", \"HCL\", \"hcl\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_hcl_hcl_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./hcl.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/hcl/hcl.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/hcl/hcl.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/html/html.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"html\",\n extensions: [\".html\", \".htm\", \".shtml\", \".xhtml\", \".mdoc\", \".jsp\", \".asp\", \".aspx\", \".jshtm\"],\n aliases: [\"HTML\", \"htm\", \"html\", \"xhtml\"],\n mimetypes: [\"text/html\", \"text/x-jshtm\", \"text/template\", \"text/ng-template\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_html_html_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./html.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/html/html.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/ini/ini.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/ini/ini.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/ini/ini.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"ini\",\n extensions: [\".ini\", \".properties\", \".gitconfig\"],\n filenames: [\"config\", \".gitattributes\", \".gitconfig\", \".editorconfig\"],\n aliases: [\"Ini\", \"ini\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_ini_ini_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ini.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/ini/ini.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/ini/ini.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/java/java.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/java/java.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/java/java.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"java\",\n extensions: [\".java\", \".jav\"],\n aliases: [\"Java\", \"java\"],\n mimetypes: [\"text/x-java-source\", \"text/x-java\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_java_java_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./java.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/java/java.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/java/java.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/javascript/javascript.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"javascript\",\n extensions: [\".js\", \".es6\", \".jsx\", \".mjs\", \".cjs\"],\n firstLine: \"^#!.*\\\\bnode\",\n filenames: [\"jakefile\"],\n aliases: [\"JavaScript\", \"javascript\", \"js\"],\n mimetypes: [\"text/javascript\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_javascript_javascript_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./javascript.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/julia/julia.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/julia/julia.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/julia/julia.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"julia\",\n extensions: [\".jl\"],\n aliases: [\"julia\", \"Julia\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_julia_julia_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./julia.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/julia/julia.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/julia/julia.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/kotlin/kotlin.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"kotlin\",\n extensions: [\".kt\", \".kts\"],\n aliases: [\"Kotlin\", \"kotlin\"],\n mimetypes: [\"text/x-kotlin-source\", \"text/x-kotlin\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_kotlin_kotlin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./kotlin.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/kotlin/kotlin.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/less/less.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/less/less.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/less/less.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"less\",\n extensions: [\".less\"],\n aliases: [\"Less\", \"less\"],\n mimetypes: [\"text/x-less\", \"text/less\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_less_less_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./less.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/less/less.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/less/less.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/lexon/lexon.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/lexon/lexon.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/lexon/lexon.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"lexon\",\n extensions: [\".lex\"],\n aliases: [\"Lexon\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_lexon_lexon_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./lexon.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/lexon/lexon.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/lexon/lexon.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/liquid/liquid.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/liquid/liquid.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/liquid/liquid.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"liquid\",\n extensions: [\".liquid\", \".html.liquid\"],\n aliases: [\"Liquid\", \"liquid\"],\n mimetypes: [\"application/liquid\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_liquid_liquid_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./liquid.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/liquid/liquid.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/liquid/liquid.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/lua/lua.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"lua\",\n extensions: [\".lua\"],\n aliases: [\"Lua\", \"lua\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_lua_lua_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./lua.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/m3/m3.contribution.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/m3/m3.contribution.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/m3/m3.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"m3\",\n extensions: [\".m3\", \".i3\", \".mg\", \".ig\"],\n aliases: [\"Modula-3\", \"Modula3\", \"modula3\", \"m3\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_m3_m3_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./m3.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/m3/m3.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/m3/m3.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/markdown/markdown.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"markdown\",\n extensions: [\".md\", \".markdown\", \".mdown\", \".mkdn\", \".mkd\", \".mdwn\", \".mdtxt\", \".mdtext\"],\n aliases: [\"Markdown\", \"markdown\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_markdown_markdown_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./markdown.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/mips/mips.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/mips/mips.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/mips/mips.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"mips\",\n extensions: [\".s\"],\n aliases: [\"MIPS\", \"MIPS-V\"],\n mimetypes: [\"text/x-mips\", \"text/mips\", \"text/plaintext\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_mips_mips_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./mips.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/mips/mips.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/mips/mips.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/monaco.contribution.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/monaco.contribution.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _editor_editor_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../editor/editor.api.js */ \"./node_modules/monaco-editor/esm/vs/editor/editor.api.js\");\n/* harmony import */ var _abap_abap_contribution_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abap/abap.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/abap/abap.contribution.js\");\n/* harmony import */ var _apex_apex_contribution_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./apex/apex.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/apex/apex.contribution.js\");\n/* harmony import */ var _azcli_azcli_contribution_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./azcli/azcli.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/azcli/azcli.contribution.js\");\n/* harmony import */ var _bat_bat_contribution_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bat/bat.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/bat/bat.contribution.js\");\n/* harmony import */ var _bicep_bicep_contribution_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./bicep/bicep.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/bicep/bicep.contribution.js\");\n/* harmony import */ var _cameligo_cameligo_contribution_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cameligo/cameligo.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/cameligo/cameligo.contribution.js\");\n/* harmony import */ var _clojure_clojure_contribution_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./clojure/clojure.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/clojure/clojure.contribution.js\");\n/* harmony import */ var _coffee_coffee_contribution_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./coffee/coffee.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/coffee/coffee.contribution.js\");\n/* harmony import */ var _cpp_cpp_contribution_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./cpp/cpp.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution.js\");\n/* harmony import */ var _csharp_csharp_contribution_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./csharp/csharp.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js\");\n/* harmony import */ var _csp_csp_contribution_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./csp/csp.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/csp/csp.contribution.js\");\n/* harmony import */ var _css_css_contribution_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./css/css.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/css/css.contribution.js\");\n/* harmony import */ var _cypher_cypher_contribution_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./cypher/cypher.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/cypher/cypher.contribution.js\");\n/* harmony import */ var _dart_dart_contribution_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./dart/dart.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/dart/dart.contribution.js\");\n/* harmony import */ var _dockerfile_dockerfile_contribution_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./dockerfile/dockerfile.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js\");\n/* harmony import */ var _ecl_ecl_contribution_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ecl/ecl.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/ecl/ecl.contribution.js\");\n/* harmony import */ var _elixir_elixir_contribution_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./elixir/elixir.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/elixir/elixir.contribution.js\");\n/* harmony import */ var _flow9_flow9_contribution_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./flow9/flow9.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/flow9/flow9.contribution.js\");\n/* harmony import */ var _fsharp_fsharp_contribution_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./fsharp/fsharp.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/fsharp/fsharp.contribution.js\");\n/* harmony import */ var _freemarker2_freemarker2_contribution_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./freemarker2/freemarker2.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.contribution.js\");\n/* harmony import */ var _go_go_contribution_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./go/go.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/go/go.contribution.js\");\n/* harmony import */ var _graphql_graphql_contribution_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./graphql/graphql.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js\");\n/* harmony import */ var _handlebars_handlebars_contribution_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./handlebars/handlebars.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js\");\n/* harmony import */ var _hcl_hcl_contribution_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./hcl/hcl.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/hcl/hcl.contribution.js\");\n/* harmony import */ var _html_html_contribution_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./html/html.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js\");\n/* harmony import */ var _ini_ini_contribution_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ini/ini.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/ini/ini.contribution.js\");\n/* harmony import */ var _java_java_contribution_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./java/java.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/java/java.contribution.js\");\n/* harmony import */ var _javascript_javascript_contribution_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./javascript/javascript.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js\");\n/* harmony import */ var _julia_julia_contribution_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./julia/julia.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/julia/julia.contribution.js\");\n/* harmony import */ var _kotlin_kotlin_contribution_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./kotlin/kotlin.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution.js\");\n/* harmony import */ var _less_less_contribution_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./less/less.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/less/less.contribution.js\");\n/* harmony import */ var _lexon_lexon_contribution_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./lexon/lexon.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/lexon/lexon.contribution.js\");\n/* harmony import */ var _lua_lua_contribution_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./lua/lua.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.contribution.js\");\n/* harmony import */ var _liquid_liquid_contribution_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./liquid/liquid.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/liquid/liquid.contribution.js\");\n/* harmony import */ var _m3_m3_contribution_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./m3/m3.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/m3/m3.contribution.js\");\n/* harmony import */ var _markdown_markdown_contribution_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./markdown/markdown.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js\");\n/* harmony import */ var _mips_mips_contribution_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./mips/mips.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/mips/mips.contribution.js\");\n/* harmony import */ var _msdax_msdax_contribution_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./msdax/msdax.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/msdax/msdax.contribution.js\");\n/* harmony import */ var _mysql_mysql_contribution_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./mysql/mysql.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution.js\");\n/* harmony import */ var _objective_c_objective_c_contribution_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./objective-c/objective-c.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution.js\");\n/* harmony import */ var _pascal_pascal_contribution_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./pascal/pascal.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pascal/pascal.contribution.js\");\n/* harmony import */ var _pascaligo_pascaligo_contribution_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./pascaligo/pascaligo.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js\");\n/* harmony import */ var _perl_perl_contribution_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./perl/perl.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/perl/perl.contribution.js\");\n/* harmony import */ var _pgsql_pgsql_contribution_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./pgsql/pgsql.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution.js\");\n/* harmony import */ var _php_php_contribution_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./php/php.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/php/php.contribution.js\");\n/* harmony import */ var _pla_pla_contribution_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./pla/pla.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pla/pla.contribution.js\");\n/* harmony import */ var _postiats_postiats_contribution_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./postiats/postiats.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.contribution.js\");\n/* harmony import */ var _powerquery_powerquery_contribution_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./powerquery/powerquery.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/powerquery/powerquery.contribution.js\");\n/* harmony import */ var _powershell_powershell_contribution_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./powershell/powershell.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution.js\");\n/* harmony import */ var _protobuf_protobuf_contribution_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./protobuf/protobuf.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/protobuf/protobuf.contribution.js\");\n/* harmony import */ var _pug_pug_contribution_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./pug/pug.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.contribution.js\");\n/* harmony import */ var _python_python_contribution_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./python/python.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/python/python.contribution.js\");\n/* harmony import */ var _qsharp_qsharp_contribution_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./qsharp/qsharp.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/qsharp/qsharp.contribution.js\");\n/* harmony import */ var _r_r_contribution_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./r/r.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/r/r.contribution.js\");\n/* harmony import */ var _razor_razor_contribution_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./razor/razor.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/razor/razor.contribution.js\");\n/* harmony import */ var _redis_redis_contribution_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./redis/redis.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/redis/redis.contribution.js\");\n/* harmony import */ var _redshift_redshift_contribution_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./redshift/redshift.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/redshift/redshift.contribution.js\");\n/* harmony import */ var _restructuredtext_restructuredtext_contribution_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./restructuredtext/restructuredtext.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js\");\n/* harmony import */ var _ruby_ruby_contribution_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./ruby/ruby.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution.js\");\n/* harmony import */ var _rust_rust_contribution_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./rust/rust.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/rust/rust.contribution.js\");\n/* harmony import */ var _sb_sb_contribution_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./sb/sb.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sb/sb.contribution.js\");\n/* harmony import */ var _scala_scala_contribution_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./scala/scala.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/scala/scala.contribution.js\");\n/* harmony import */ var _scheme_scheme_contribution_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./scheme/scheme.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/scheme/scheme.contribution.js\");\n/* harmony import */ var _scss_scss_contribution_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./scss/scss.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/scss/scss.contribution.js\");\n/* harmony import */ var _shell_shell_contribution_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./shell/shell.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js\");\n/* harmony import */ var _solidity_solidity_contribution_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./solidity/solidity.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/solidity/solidity.contribution.js\");\n/* harmony import */ var _sophia_sophia_contribution_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./sophia/sophia.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sophia/sophia.contribution.js\");\n/* harmony import */ var _sparql_sparql_contribution_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./sparql/sparql.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sparql/sparql.contribution.js\");\n/* harmony import */ var _sql_sql_contribution_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./sql/sql.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js\");\n/* harmony import */ var _st_st_contribution_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./st/st.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/st/st.contribution.js\");\n/* harmony import */ var _swift_swift_contribution_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./swift/swift.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/swift/swift.contribution.js\");\n/* harmony import */ var _systemverilog_systemverilog_contribution_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./systemverilog/systemverilog.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.contribution.js\");\n/* harmony import */ var _tcl_tcl_contribution_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./tcl/tcl.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/tcl/tcl.contribution.js\");\n/* harmony import */ var _twig_twig_contribution_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./twig/twig.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/twig/twig.contribution.js\");\n/* harmony import */ var _typescript_typescript_contribution_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./typescript/typescript.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js\");\n/* harmony import */ var _vb_vb_contribution_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./vb/vb.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/vb/vb.contribution.js\");\n/* harmony import */ var _wgsl_wgsl_contribution_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./wgsl/wgsl.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/wgsl/wgsl.contribution.js\");\n/* harmony import */ var _xml_xml_contribution_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./xml/xml.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js\");\n/* harmony import */ var _yaml_yaml_contribution_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./yaml/yaml.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js\");\n\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/monaco.contribution.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/monaco.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/msdax/msdax.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/msdax/msdax.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/msdax/msdax.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"msdax\",\n extensions: [\".dax\", \".msdax\"],\n aliases: [\"DAX\", \"MSDAX\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_msdax_msdax_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./msdax.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/msdax/msdax.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/msdax/msdax.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/mysql/mysql.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"mysql\",\n extensions: [],\n aliases: [\"MySQL\", \"mysql\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_mysql_mysql_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./mysql.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/mysql/mysql.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution.js": +/*!***************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution.js ***! + \***************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/objective-c/objective-c.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"objective-c\",\n extensions: [\".m\"],\n aliases: [\"Objective-C\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_objective-c_objective-c_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./objective-c.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/objective-c/objective-c.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/pascal/pascal.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/pascal/pascal.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/pascal/pascal.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"pascal\",\n extensions: [\".pas\", \".p\", \".pp\"],\n aliases: [\"Pascal\", \"pas\"],\n mimetypes: [\"text/x-pascal-source\", \"text/x-pascal\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_pascal_pascal_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./pascal.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pascal/pascal.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/pascal/pascal.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js": +/*!***********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js ***! + \***********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/pascaligo/pascaligo.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"pascaligo\",\n extensions: [\".ligo\"],\n aliases: [\"Pascaligo\", \"ligo\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_pascaligo_pascaligo_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./pascaligo.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/perl/perl.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/perl/perl.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/perl/perl.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"perl\",\n extensions: [\".pl\", \".pm\"],\n aliases: [\"Perl\", \"pl\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_perl_perl_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./perl.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/perl/perl.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/perl/perl.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/pgsql/pgsql.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"pgsql\",\n extensions: [],\n aliases: [\"PostgreSQL\", \"postgres\", \"pg\", \"postgre\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_pgsql_pgsql_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./pgsql.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pgsql/pgsql.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/php/php.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/php/php.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/php/php.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"php\",\n extensions: [\".php\", \".php4\", \".php5\", \".phtml\", \".ctp\"],\n aliases: [\"PHP\", \"php\"],\n mimetypes: [\"application/x-php\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_php_php_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./php.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/php/php.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/php/php.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/pla/pla.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/pla/pla.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/pla/pla.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"pla\",\n extensions: [\".pla\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_pla_pla_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./pla.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pla/pla.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/pla/pla.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.contribution.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.contribution.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/postiats/postiats.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"postiats\",\n extensions: [\".dats\", \".sats\", \".hats\"],\n aliases: [\"ATS\", \"ATS/Postiats\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_postiats_postiats_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./postiats.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/powerquery/powerquery.contribution.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/powerquery/powerquery.contribution.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/powerquery/powerquery.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"powerquery\",\n extensions: [\".pq\", \".pqm\"],\n aliases: [\"PQ\", \"M\", \"Power Query\", \"Power Query M\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_powerquery_powerquery_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./powerquery.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/powerquery/powerquery.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/powerquery/powerquery.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/powershell/powershell.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"powershell\",\n extensions: [\".ps1\", \".psm1\", \".psd1\"],\n aliases: [\"PowerShell\", \"powershell\", \"ps\", \"ps1\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_powershell_powershell_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./powershell.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/powershell/powershell.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/protobuf/protobuf.contribution.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/protobuf/protobuf.contribution.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/protobuf/protobuf.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"proto\",\n extensions: [\".proto\"],\n aliases: [\"protobuf\", \"Protocol Buffers\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_protobuf_protobuf_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./protobuf.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/protobuf/protobuf.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/protobuf/protobuf.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/pug/pug.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"pug\",\n extensions: [\".jade\", \".pug\"],\n aliases: [\"Pug\", \"Jade\", \"jade\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_pug_pug_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./pug.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/python/python.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/python/python.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/python/python.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"python\",\n extensions: [\".py\", \".rpy\", \".pyw\", \".cpy\", \".gyp\", \".gypi\"],\n aliases: [\"Python\", \"py\"],\n firstLine: \"^#!/.*\\\\bpython[0-9.-]*\\\\b\",\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_python_python_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./python.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/python/python.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/python/python.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/qsharp/qsharp.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/qsharp/qsharp.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/qsharp/qsharp.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"qsharp\",\n extensions: [\".qs\"],\n aliases: [\"Q#\", \"qsharp\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_qsharp_qsharp_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./qsharp.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/qsharp/qsharp.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/qsharp/qsharp.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/r/r.contribution.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/r/r.contribution.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/r/r.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"r\",\n extensions: [\".r\", \".rhistory\", \".rmd\", \".rprofile\", \".rt\"],\n aliases: [\"R\", \"r\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_r_r_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./r.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/r/r.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/r/r.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/razor/razor.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/razor/razor.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/razor/razor.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"razor\",\n extensions: [\".cshtml\"],\n aliases: [\"Razor\", \"razor\"],\n mimetypes: [\"text/x-cshtml\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_razor_razor_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./razor.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/razor/razor.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/razor/razor.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/redis/redis.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/redis/redis.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/redis/redis.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"redis\",\n extensions: [\".redis\"],\n aliases: [\"redis\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_redis_redis_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./redis.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/redis/redis.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/redis/redis.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/redshift/redshift.contribution.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/redshift/redshift.contribution.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/redshift/redshift.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"redshift\",\n extensions: [],\n aliases: [\"Redshift\", \"redshift\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_redshift_redshift_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./redshift.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/redshift/redshift.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/redshift/redshift.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js ***! + \*************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/restructuredtext/restructuredtext.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"restructuredtext\",\n extensions: [\".rst\"],\n aliases: [\"reStructuredText\", \"restructuredtext\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_restructuredtext_restructuredtext_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./restructuredtext.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/ruby/ruby.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"ruby\",\n extensions: [\".rb\", \".rbx\", \".rjs\", \".gemspec\", \".pp\"],\n filenames: [\"rakefile\", \"Gemfile\"],\n aliases: [\"Ruby\", \"rb\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_ruby_ruby_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ruby.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/ruby/ruby.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/rust/rust.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/rust/rust.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/rust/rust.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"rust\",\n extensions: [\".rs\", \".rlib\"],\n aliases: [\"Rust\", \"rust\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_rust_rust_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./rust.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/rust/rust.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/rust/rust.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/sb/sb.contribution.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/sb/sb.contribution.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/sb/sb.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"sb\",\n extensions: [\".sb\"],\n aliases: [\"Small Basic\", \"sb\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_sb_sb_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./sb.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sb/sb.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/sb/sb.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/scala/scala.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/scala/scala.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/scala/scala.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"scala\",\n extensions: [\".scala\", \".sc\", \".sbt\"],\n aliases: [\"Scala\", \"scala\", \"SBT\", \"Sbt\", \"sbt\", \"Dotty\", \"dotty\"],\n mimetypes: [\"text/x-scala-source\", \"text/x-scala\", \"text/x-sbt\", \"text/x-dotty\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_scala_scala_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./scala.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/scala/scala.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/scala/scala.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/scheme/scheme.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/scheme/scheme.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/scheme/scheme.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"scheme\",\n extensions: [\".scm\", \".ss\", \".sch\", \".rkt\"],\n aliases: [\"scheme\", \"Scheme\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_scheme_scheme_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./scheme.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/scheme/scheme.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/scheme/scheme.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/scss/scss.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/scss/scss.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/scss/scss.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"scss\",\n extensions: [\".scss\"],\n aliases: [\"Sass\", \"sass\", \"scss\"],\n mimetypes: [\"text/x-scss\", \"text/scss\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_scss_scss_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./scss.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/scss/scss.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/scss/scss.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/shell/shell.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"shell\",\n extensions: [\".sh\", \".bash\"],\n aliases: [\"Shell\", \"sh\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_shell_shell_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./shell.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/solidity/solidity.contribution.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/solidity/solidity.contribution.js ***! + \*********************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/solidity/solidity.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"sol\",\n extensions: [\".sol\"],\n aliases: [\"sol\", \"solidity\", \"Solidity\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_solidity_solidity_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./solidity.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/solidity/solidity.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/solidity/solidity.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/sophia/sophia.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/sophia/sophia.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/sophia/sophia.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"aes\",\n extensions: [\".aes\"],\n aliases: [\"aes\", \"sophia\", \"Sophia\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_sophia_sophia_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./sophia.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sophia/sophia.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/sophia/sophia.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/sparql/sparql.contribution.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/sparql/sparql.contribution.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/sparql/sparql.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"sparql\",\n extensions: [\".rq\"],\n aliases: [\"sparql\", \"SPARQL\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_sparql_sparql_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./sparql.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sparql/sparql.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/sparql/sparql.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/sql/sql.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"sql\",\n extensions: [\".sql\"],\n aliases: [\"SQL\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_sql_sql_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./sql.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/st/st.contribution.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/st/st.contribution.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/st/st.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"st\",\n extensions: [\".st\", \".iecst\", \".iecplc\", \".lc3lib\"],\n aliases: [\"StructuredText\", \"scl\", \"stl\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_st_st_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./st.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/st/st.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/st/st.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/swift/swift.contribution.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/swift/swift.contribution.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/swift/swift.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"swift\",\n aliases: [\"Swift\", \"swift\"],\n extensions: [\".swift\"],\n mimetypes: [\"text/swift\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_swift_swift_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./swift.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/swift/swift.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/swift/swift.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.contribution.js": +/*!*******************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.contribution.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/systemverilog/systemverilog.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"systemverilog\",\n extensions: [\".sv\", \".svh\"],\n aliases: [\"SV\", \"sv\", \"SystemVerilog\", \"systemverilog\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_systemverilog_systemverilog_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./systemverilog.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.js\"));\n }\n }\n});\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"verilog\",\n extensions: [\".v\", \".vh\"],\n aliases: [\"V\", \"v\", \"Verilog\", \"verilog\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"vendors-node_modules_monaco-editor_esm_vs_basic-languages_systemverilog_systemverilog_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./systemverilog.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/tcl/tcl.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/tcl/tcl.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/tcl/tcl.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"tcl\",\n extensions: [\".tcl\"],\n aliases: [\"tcl\", \"Tcl\", \"tcltk\", \"TclTk\", \"tcl/tk\", \"Tcl/Tk\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_tcl_tcl_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./tcl.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/tcl/tcl.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/tcl/tcl.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/twig/twig.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/twig/twig.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/twig/twig.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"twig\",\n extensions: [\".twig\"],\n aliases: [\"Twig\", \"twig\"],\n mimetypes: [\"text/x-twig\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_twig_twig_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./twig.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/twig/twig.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/twig/twig.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js": +/*!*************************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/typescript/typescript.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"typescript\",\n extensions: [\".ts\", \".tsx\", \".cts\", \".mts\"],\n aliases: [\"TypeScript\", \"ts\", \"typescript\"],\n mimetypes: [\"text/typescript\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_typescript_typescript_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./typescript.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/vb/vb.contribution.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/vb/vb.contribution.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/vb/vb.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"vb\",\n extensions: [\".vb\"],\n aliases: [\"Visual Basic\", \"vb\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_vb_vb_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./vb.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/vb/vb.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/vb/vb.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/wgsl/wgsl.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/wgsl/wgsl.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/wgsl/wgsl.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"wgsl\",\n extensions: [\".wgsl\"],\n aliases: [\"WebGPU Shading Language\", \"WGSL\", \"wgsl\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_wgsl_wgsl_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./wgsl.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/wgsl/wgsl.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/wgsl/wgsl.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/xml/xml.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"xml\",\n extensions: [\n \".xml\",\n \".xsd\",\n \".dtd\",\n \".ascx\",\n \".csproj\",\n \".config\",\n \".props\",\n \".targets\",\n \".wxi\",\n \".wxl\",\n \".wxs\",\n \".xaml\",\n \".svg\",\n \".svgz\",\n \".opf\",\n \".xslt\",\n \".xsl\"\n ],\n firstLine: \"(\\\\<\\\\?xml.*)|(\\\\ {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_xml_xml_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./xml.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contribution_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_.contribution.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js\");\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.40.0(83b3cf23ca80c94cccca7c5b3e48351b220f8e35)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n// src/basic-languages/yaml/yaml.contribution.ts\n\n(0,_contribution_js__WEBPACK_IMPORTED_MODULE_0__.registerLanguage)({\n id: \"yaml\",\n extensions: [\".yaml\", \".yml\"],\n aliases: [\"YAML\", \"yaml\", \"YML\", \"yml\"],\n mimetypes: [\"application/x-yaml\", \"text/x-yaml\"],\n loader: () => {\n if (false) {} else {\n return __webpack_require__.e(/*! import() */ \"node_modules_monaco-editor_esm_vs_basic-languages_yaml_yaml_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./yaml.js */ \"./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.js\"));\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js": +/*!************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CharWidthRequest: () => (/* binding */ CharWidthRequest),\n/* harmony export */ readCharWidths: () => (/* binding */ readCharWidths)\n/* harmony export */ });\n/* harmony import */ var _domFontInfo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./domFontInfo.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/config/domFontInfo.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nclass CharWidthRequest {\n constructor(chr, type) {\n this.chr = chr;\n this.type = type;\n this.width = 0;\n }\n fulfill(width) {\n this.width = width;\n }\n}\nclass DomCharWidthReader {\n constructor(bareFontInfo, requests) {\n this._bareFontInfo = bareFontInfo;\n this._requests = requests;\n this._container = null;\n this._testElements = null;\n }\n read() {\n // Create a test container with all these test elements\n this._createDomElements();\n // Add the container to the DOM\n document.body.appendChild(this._container);\n // Read character widths\n this._readFromDomElements();\n // Remove the container from the DOM\n document.body.removeChild(this._container);\n this._container = null;\n this._testElements = null;\n }\n _createDomElements() {\n const container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.top = '-50000px';\n container.style.width = '50000px';\n const regularDomNode = document.createElement('div');\n (0,_domFontInfo_js__WEBPACK_IMPORTED_MODULE_0__.applyFontInfo)(regularDomNode, this._bareFontInfo);\n container.appendChild(regularDomNode);\n const boldDomNode = document.createElement('div');\n (0,_domFontInfo_js__WEBPACK_IMPORTED_MODULE_0__.applyFontInfo)(boldDomNode, this._bareFontInfo);\n boldDomNode.style.fontWeight = 'bold';\n container.appendChild(boldDomNode);\n const italicDomNode = document.createElement('div');\n (0,_domFontInfo_js__WEBPACK_IMPORTED_MODULE_0__.applyFontInfo)(italicDomNode, this._bareFontInfo);\n italicDomNode.style.fontStyle = 'italic';\n container.appendChild(italicDomNode);\n const testElements = [];\n for (const request of this._requests) {\n let parent;\n if (request.type === 0 /* CharWidthRequestType.Regular */) {\n parent = regularDomNode;\n }\n if (request.type === 2 /* CharWidthRequestType.Bold */) {\n parent = boldDomNode;\n }\n if (request.type === 1 /* CharWidthRequestType.Italic */) {\n parent = italicDomNode;\n }\n parent.appendChild(document.createElement('br'));\n const testElement = document.createElement('span');\n DomCharWidthReader._render(testElement, request);\n parent.appendChild(testElement);\n testElements.push(testElement);\n }\n this._container = container;\n this._testElements = testElements;\n }\n static _render(testElement, request) {\n if (request.chr === ' ') {\n let htmlString = '\\u00a0';\n // Repeat character 256 (2^8) times\n for (let i = 0; i < 8; i++) {\n htmlString += htmlString;\n }\n testElement.innerText = htmlString;\n }\n else {\n let testString = request.chr;\n // Repeat character 256 (2^8) times\n for (let i = 0; i < 8; i++) {\n testString += testString;\n }\n testElement.textContent = testString;\n }\n }\n _readFromDomElements() {\n for (let i = 0, len = this._requests.length; i < len; i++) {\n const request = this._requests[i];\n const testElement = this._testElements[i];\n request.fulfill(testElement.offsetWidth / 256);\n }\n }\n}\nfunction readCharWidths(bareFontInfo, requests) {\n const reader = new DomCharWidthReader(bareFontInfo, requests);\n reader.read();\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/config/domFontInfo.js": +/*!********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/config/domFontInfo.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ applyFontInfo: () => (/* binding */ applyFontInfo)\n/* harmony export */ });\n/* harmony import */ var _base_browser_fastDomNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/browser/fastDomNode.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/fastDomNode.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction applyFontInfo(domNode, fontInfo) {\n if (domNode instanceof _base_browser_fastDomNode_js__WEBPACK_IMPORTED_MODULE_0__.FastDomNode) {\n domNode.setFontFamily(fontInfo.getMassagedFontFamily());\n domNode.setFontWeight(fontInfo.fontWeight);\n domNode.setFontSize(fontInfo.fontSize);\n domNode.setFontFeatureSettings(fontInfo.fontFeatureSettings);\n domNode.setFontVariationSettings(fontInfo.fontVariationSettings);\n domNode.setLineHeight(fontInfo.lineHeight);\n domNode.setLetterSpacing(fontInfo.letterSpacing);\n }\n else {\n domNode.style.fontFamily = fontInfo.getMassagedFontFamily();\n domNode.style.fontWeight = fontInfo.fontWeight;\n domNode.style.fontSize = fontInfo.fontSize + 'px';\n domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\n domNode.style.fontVariationSettings = fontInfo.fontVariationSettings;\n domNode.style.lineHeight = fontInfo.lineHeight + 'px';\n domNode.style.letterSpacing = fontInfo.letterSpacing + 'px';\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/config/domFontInfo.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/config/editorConfiguration.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/config/editorConfiguration.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ComputedEditorOptions: () => (/* binding */ ComputedEditorOptions),\n/* harmony export */ EditorConfiguration: () => (/* binding */ EditorConfiguration)\n/* harmony export */ });\n/* harmony import */ var _base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/browser/browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _base_common_arrays_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/common/arrays.js */ \"./node_modules/monaco-editor/esm/vs/base/common/arrays.js\");\n/* harmony import */ var _base_common_event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../base/common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../base/common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _base_common_objects_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../base/common/objects.js */ \"./node_modules/monaco-editor/esm/vs/base/common/objects.js\");\n/* harmony import */ var _base_common_platform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../base/common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _elementSizeObserver_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./elementSizeObserver.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js\");\n/* harmony import */ var _fontMeasurements_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./fontMeasurements.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/config/fontMeasurements.js\");\n/* harmony import */ var _migrateOptions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./migrateOptions.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/config/migrateOptions.js\");\n/* harmony import */ var _tabFocus_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./tabFocus.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/config/tabFocus.js\");\n/* harmony import */ var _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/config/editorOptions.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/config/editorOptions.js\");\n/* harmony import */ var _common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/config/editorZoom.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/config/editorZoom.js\");\n/* harmony import */ var _common_config_fontInfo_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../common/config/fontInfo.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/config/fontInfo.js\");\n/* harmony import */ var _platform_accessibility_common_accessibility_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../platform/accessibility/common/accessibility.js */ \"./node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibility.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet EditorConfiguration = class EditorConfiguration extends _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__.Disposable {\n constructor(isSimpleWidget, options, container, _accessibilityService) {\n super();\n this._accessibilityService = _accessibilityService;\n this._onDidChange = this._register(new _base_common_event_js__WEBPACK_IMPORTED_MODULE_2__.Emitter());\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeFast = this._register(new _base_common_event_js__WEBPACK_IMPORTED_MODULE_2__.Emitter());\n this.onDidChangeFast = this._onDidChangeFast.event;\n this._isDominatedByLongLines = false;\n this._viewLineCount = 1;\n this._lineNumbersDigitCount = 1;\n this._reservedHeight = 0;\n this._glyphMarginDecorationLaneCount = 1;\n this._computeOptionsMemory = new _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_10__.ComputeOptionsMemory();\n this.isSimpleWidget = isSimpleWidget;\n this._containerObserver = this._register(new _elementSizeObserver_js__WEBPACK_IMPORTED_MODULE_6__.ElementSizeObserver(container, options.dimension));\n this._rawOptions = deepCloneAndMigrateOptions(options);\n this._validatedOptions = EditorOptionsUtil.validateOptions(this._rawOptions);\n this.options = this._computeOptions();\n if (this.options.get(11 /* EditorOption.automaticLayout */)) {\n this._containerObserver.startObserving();\n }\n this._register(_common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_11__.EditorZoom.onDidChangeZoomLevel(() => this._recomputeOptions()));\n this._register(_tabFocus_js__WEBPACK_IMPORTED_MODULE_9__.TabFocus.onDidChangeTabFocus(() => this._recomputeOptions()));\n this._register(this._containerObserver.onDidChange(() => this._recomputeOptions()));\n this._register(_fontMeasurements_js__WEBPACK_IMPORTED_MODULE_7__.FontMeasurements.onDidChange(() => this._recomputeOptions()));\n this._register(_base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.PixelRatio.onDidChange(() => this._recomputeOptions()));\n this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(() => this._recomputeOptions()));\n }\n _recomputeOptions() {\n const newOptions = this._computeOptions();\n const changeEvent = EditorOptionsUtil.checkEquals(this.options, newOptions);\n if (changeEvent === null) {\n // nothing changed!\n return;\n }\n this.options = newOptions;\n this._onDidChangeFast.fire(changeEvent);\n this._onDidChange.fire(changeEvent);\n }\n _computeOptions() {\n const partialEnv = this._readEnvConfiguration();\n const bareFontInfo = _common_config_fontInfo_js__WEBPACK_IMPORTED_MODULE_12__.BareFontInfo.createFromValidatedSettings(this._validatedOptions, partialEnv.pixelRatio, this.isSimpleWidget);\n const fontInfo = this._readFontInfo(bareFontInfo);\n const env = {\n memory: this._computeOptionsMemory,\n outerWidth: partialEnv.outerWidth,\n outerHeight: partialEnv.outerHeight - this._reservedHeight,\n fontInfo: fontInfo,\n extraEditorClassName: partialEnv.extraEditorClassName,\n isDominatedByLongLines: this._isDominatedByLongLines,\n viewLineCount: this._viewLineCount,\n lineNumbersDigitCount: this._lineNumbersDigitCount,\n emptySelectionClipboard: partialEnv.emptySelectionClipboard,\n pixelRatio: partialEnv.pixelRatio,\n tabFocusMode: _tabFocus_js__WEBPACK_IMPORTED_MODULE_9__.TabFocus.getTabFocusMode(\"editorFocus\" /* TabFocusContext.Editor */),\n accessibilitySupport: partialEnv.accessibilitySupport,\n glyphMarginDecorationLaneCount: this._glyphMarginDecorationLaneCount\n };\n return EditorOptionsUtil.computeOptions(this._validatedOptions, env);\n }\n _readEnvConfiguration() {\n return {\n extraEditorClassName: getExtraEditorClassName(),\n outerWidth: this._containerObserver.getWidth(),\n outerHeight: this._containerObserver.getHeight(),\n emptySelectionClipboard: _base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.isWebKit || _base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.isFirefox,\n pixelRatio: _base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.PixelRatio.value,\n accessibilitySupport: (this._accessibilityService.isScreenReaderOptimized()\n ? 2 /* AccessibilitySupport.Enabled */\n : this._accessibilityService.getAccessibilitySupport())\n };\n }\n _readFontInfo(bareFontInfo) {\n return _fontMeasurements_js__WEBPACK_IMPORTED_MODULE_7__.FontMeasurements.readFontInfo(bareFontInfo);\n }\n getRawOptions() {\n return this._rawOptions;\n }\n updateOptions(_newOptions) {\n const newOptions = deepCloneAndMigrateOptions(_newOptions);\n const didChange = EditorOptionsUtil.applyUpdate(this._rawOptions, newOptions);\n if (!didChange) {\n return;\n }\n this._validatedOptions = EditorOptionsUtil.validateOptions(this._rawOptions);\n this._recomputeOptions();\n }\n observeContainer(dimension) {\n this._containerObserver.observe(dimension);\n }\n setIsDominatedByLongLines(isDominatedByLongLines) {\n if (this._isDominatedByLongLines === isDominatedByLongLines) {\n return;\n }\n this._isDominatedByLongLines = isDominatedByLongLines;\n this._recomputeOptions();\n }\n setModelLineCount(modelLineCount) {\n const lineNumbersDigitCount = digitCount(modelLineCount);\n if (this._lineNumbersDigitCount === lineNumbersDigitCount) {\n return;\n }\n this._lineNumbersDigitCount = lineNumbersDigitCount;\n this._recomputeOptions();\n }\n setViewLineCount(viewLineCount) {\n if (this._viewLineCount === viewLineCount) {\n return;\n }\n this._viewLineCount = viewLineCount;\n this._recomputeOptions();\n }\n setReservedHeight(reservedHeight) {\n if (this._reservedHeight === reservedHeight) {\n return;\n }\n this._reservedHeight = reservedHeight;\n this._recomputeOptions();\n }\n setGlyphMarginDecorationLaneCount(decorationLaneCount) {\n if (this._glyphMarginDecorationLaneCount === decorationLaneCount) {\n return;\n }\n this._glyphMarginDecorationLaneCount = decorationLaneCount;\n this._recomputeOptions();\n }\n};\nEditorConfiguration = __decorate([\n __param(3, _platform_accessibility_common_accessibility_js__WEBPACK_IMPORTED_MODULE_13__.IAccessibilityService)\n], EditorConfiguration);\nfunction digitCount(n) {\n let r = 0;\n while (n) {\n n = Math.floor(n / 10);\n r++;\n }\n return r ? r : 1;\n}\nfunction getExtraEditorClassName() {\n let extra = '';\n if (!_base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.isSafari && !_base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.isWebkitWebView) {\n // Use user-select: none in all browsers except Safari and native macOS WebView\n extra += 'no-user-select ';\n }\n if (_base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.isSafari) {\n // See https://github.com/microsoft/vscode/issues/108822\n extra += 'no-minimap-shadow ';\n extra += 'enable-user-select ';\n }\n if (_base_common_platform_js__WEBPACK_IMPORTED_MODULE_5__.isMacintosh) {\n extra += 'mac ';\n }\n return extra;\n}\nclass ValidatedEditorOptions {\n constructor() {\n this._values = [];\n }\n _read(option) {\n return this._values[option];\n }\n get(id) {\n return this._values[id];\n }\n _write(option, value) {\n this._values[option] = value;\n }\n}\nclass ComputedEditorOptions {\n constructor() {\n this._values = [];\n }\n _read(id) {\n if (id >= this._values.length) {\n throw new Error('Cannot read uninitialized value');\n }\n return this._values[id];\n }\n get(id) {\n return this._read(id);\n }\n _write(id, value) {\n this._values[id] = value;\n }\n}\nclass EditorOptionsUtil {\n static validateOptions(options) {\n const result = new ValidatedEditorOptions();\n for (const editorOption of _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_10__.editorOptionsRegistry) {\n const value = (editorOption.name === '_never_' ? undefined : options[editorOption.name]);\n result._write(editorOption.id, editorOption.validate(value));\n }\n return result;\n }\n static computeOptions(options, env) {\n const result = new ComputedEditorOptions();\n for (const editorOption of _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_10__.editorOptionsRegistry) {\n result._write(editorOption.id, editorOption.compute(env, result, options._read(editorOption.id)));\n }\n return result;\n }\n static _deepEquals(a, b) {\n if (typeof a !== 'object' || typeof b !== 'object' || !a || !b) {\n return a === b;\n }\n if (Array.isArray(a) || Array.isArray(b)) {\n return (Array.isArray(a) && Array.isArray(b) ? _base_common_arrays_js__WEBPACK_IMPORTED_MODULE_1__.equals(a, b) : false);\n }\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (!EditorOptionsUtil._deepEquals(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n static checkEquals(a, b) {\n const result = [];\n let somethingChanged = false;\n for (const editorOption of _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_10__.editorOptionsRegistry) {\n const changed = !EditorOptionsUtil._deepEquals(a._read(editorOption.id), b._read(editorOption.id));\n result[editorOption.id] = changed;\n if (changed) {\n somethingChanged = true;\n }\n }\n return (somethingChanged ? new _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_10__.ConfigurationChangedEvent(result) : null);\n }\n /**\n * Returns true if something changed.\n * Modifies `options`.\n */\n static applyUpdate(options, update) {\n let changed = false;\n for (const editorOption of _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_10__.editorOptionsRegistry) {\n if (update.hasOwnProperty(editorOption.name)) {\n const result = editorOption.applyUpdate(options[editorOption.name], update[editorOption.name]);\n options[editorOption.name] = result.newValue;\n changed = changed || result.didChange;\n }\n }\n return changed;\n }\n}\nfunction deepCloneAndMigrateOptions(_options) {\n const options = _base_common_objects_js__WEBPACK_IMPORTED_MODULE_4__.deepClone(_options);\n (0,_migrateOptions_js__WEBPACK_IMPORTED_MODULE_8__.migrateOptions)(options);\n return options;\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/config/editorConfiguration.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ElementSizeObserver: () => (/* binding */ ElementSizeObserver)\n/* harmony export */ });\n/* harmony import */ var _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _base_common_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nclass ElementSizeObserver extends _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_0__.Disposable {\n constructor(referenceDomElement, dimension) {\n super();\n this._onDidChange = this._register(new _base_common_event_js__WEBPACK_IMPORTED_MODULE_1__.Emitter());\n this.onDidChange = this._onDidChange.event;\n this._referenceDomElement = referenceDomElement;\n this._width = -1;\n this._height = -1;\n this._resizeObserver = null;\n this.measureReferenceDomElement(false, dimension);\n }\n dispose() {\n this.stopObserving();\n super.dispose();\n }\n getWidth() {\n return this._width;\n }\n getHeight() {\n return this._height;\n }\n startObserving() {\n if (!this._resizeObserver && this._referenceDomElement) {\n this._resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0] && entries[0].contentRect) {\n this.observe({ width: entries[0].contentRect.width, height: entries[0].contentRect.height });\n }\n else {\n this.observe();\n }\n });\n this._resizeObserver.observe(this._referenceDomElement);\n }\n }\n stopObserving() {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = null;\n }\n }\n observe(dimension) {\n this.measureReferenceDomElement(true, dimension);\n }\n measureReferenceDomElement(emitEvent, dimension) {\n let observedWidth = 0;\n let observedHeight = 0;\n if (dimension) {\n observedWidth = dimension.width;\n observedHeight = dimension.height;\n }\n else if (this._referenceDomElement) {\n observedWidth = this._referenceDomElement.clientWidth;\n observedHeight = this._referenceDomElement.clientHeight;\n }\n observedWidth = Math.max(5, observedWidth);\n observedHeight = Math.max(5, observedHeight);\n if (this._width !== observedWidth || this._height !== observedHeight) {\n this._width = observedWidth;\n this._height = observedHeight;\n if (emitEvent) {\n this._onDidChange.fire();\n }\n }\n }\n}\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/config/fontMeasurements.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/config/fontMeasurements.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FontMeasurements: () => (/* binding */ FontMeasurements),\n/* harmony export */ FontMeasurementsImpl: () => (/* binding */ FontMeasurementsImpl)\n/* harmony export */ });\n/* harmony import */ var _base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/browser/browser.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/browser.js\");\n/* harmony import */ var _base_common_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../base/common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _charWidthReader_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./charWidthReader.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js\");\n/* harmony import */ var _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/config/editorOptions.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/config/editorOptions.js\");\n/* harmony import */ var _common_config_fontInfo_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/config/fontInfo.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/config/fontInfo.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nclass FontMeasurementsImpl extends _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor() {\n super();\n this._onDidChange = this._register(new _base_common_event_js__WEBPACK_IMPORTED_MODULE_1__.Emitter());\n this.onDidChange = this._onDidChange.event;\n this._cache = new FontMeasurementsCache();\n this._evictUntrustedReadingsTimeout = -1;\n }\n dispose() {\n if (this._evictUntrustedReadingsTimeout !== -1) {\n window.clearTimeout(this._evictUntrustedReadingsTimeout);\n this._evictUntrustedReadingsTimeout = -1;\n }\n super.dispose();\n }\n /**\n * Clear all cached font information and trigger a change event.\n */\n clearAllFontInfos() {\n this._cache = new FontMeasurementsCache();\n this._onDidChange.fire();\n }\n _writeToCache(item, value) {\n this._cache.put(item, value);\n if (!value.isTrusted && this._evictUntrustedReadingsTimeout === -1) {\n // Try reading again after some time\n this._evictUntrustedReadingsTimeout = window.setTimeout(() => {\n this._evictUntrustedReadingsTimeout = -1;\n this._evictUntrustedReadings();\n }, 5000);\n }\n }\n _evictUntrustedReadings() {\n const values = this._cache.getValues();\n let somethingRemoved = false;\n for (const item of values) {\n if (!item.isTrusted) {\n somethingRemoved = true;\n this._cache.remove(item);\n }\n }\n if (somethingRemoved) {\n this._onDidChange.fire();\n }\n }\n /**\n * Read font information.\n */\n readFontInfo(bareFontInfo) {\n if (!this._cache.has(bareFontInfo)) {\n let readConfig = this._actualReadFontInfo(bareFontInfo);\n if (readConfig.typicalHalfwidthCharacterWidth <= 2 || readConfig.typicalFullwidthCharacterWidth <= 2 || readConfig.spaceWidth <= 2 || readConfig.maxDigitWidth <= 2) {\n // Hey, it's Bug 14341 ... we couldn't read\n readConfig = new _common_config_fontInfo_js__WEBPACK_IMPORTED_MODULE_5__.FontInfo({\n pixelRatio: _base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.PixelRatio.value,\n fontFamily: readConfig.fontFamily,\n fontWeight: readConfig.fontWeight,\n fontSize: readConfig.fontSize,\n fontFeatureSettings: readConfig.fontFeatureSettings,\n fontVariationSettings: readConfig.fontVariationSettings,\n lineHeight: readConfig.lineHeight,\n letterSpacing: readConfig.letterSpacing,\n isMonospace: readConfig.isMonospace,\n typicalHalfwidthCharacterWidth: Math.max(readConfig.typicalHalfwidthCharacterWidth, 5),\n typicalFullwidthCharacterWidth: Math.max(readConfig.typicalFullwidthCharacterWidth, 5),\n canUseHalfwidthRightwardsArrow: readConfig.canUseHalfwidthRightwardsArrow,\n spaceWidth: Math.max(readConfig.spaceWidth, 5),\n middotWidth: Math.max(readConfig.middotWidth, 5),\n wsmiddotWidth: Math.max(readConfig.wsmiddotWidth, 5),\n maxDigitWidth: Math.max(readConfig.maxDigitWidth, 5),\n }, false);\n }\n this._writeToCache(bareFontInfo, readConfig);\n }\n return this._cache.get(bareFontInfo);\n }\n _createRequest(chr, type, all, monospace) {\n const result = new _charWidthReader_js__WEBPACK_IMPORTED_MODULE_3__.CharWidthRequest(chr, type);\n all.push(result);\n monospace === null || monospace === void 0 ? void 0 : monospace.push(result);\n return result;\n }\n _actualReadFontInfo(bareFontInfo) {\n const all = [];\n const monospace = [];\n const typicalHalfwidthCharacter = this._createRequest('n', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const typicalFullwidthCharacter = this._createRequest('\\uff4d', 0 /* CharWidthRequestType.Regular */, all, null);\n const space = this._createRequest(' ', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit0 = this._createRequest('0', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit1 = this._createRequest('1', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit2 = this._createRequest('2', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit3 = this._createRequest('3', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit4 = this._createRequest('4', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit5 = this._createRequest('5', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit6 = this._createRequest('6', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit7 = this._createRequest('7', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit8 = this._createRequest('8', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const digit9 = this._createRequest('9', 0 /* CharWidthRequestType.Regular */, all, monospace);\n // monospace test: used for whitespace rendering\n const rightwardsArrow = this._createRequest('→', 0 /* CharWidthRequestType.Regular */, all, monospace);\n const halfwidthRightwardsArrow = this._createRequest('→', 0 /* CharWidthRequestType.Regular */, all, null);\n // U+00B7 - MIDDLE DOT\n const middot = this._createRequest('·', 0 /* CharWidthRequestType.Regular */, all, monospace);\n // U+2E31 - WORD SEPARATOR MIDDLE DOT\n const wsmiddotWidth = this._createRequest(String.fromCharCode(0x2E31), 0 /* CharWidthRequestType.Regular */, all, null);\n // monospace test: some characters\n const monospaceTestChars = '|/-_ilm%';\n for (let i = 0, len = monospaceTestChars.length; i < len; i++) {\n this._createRequest(monospaceTestChars.charAt(i), 0 /* CharWidthRequestType.Regular */, all, monospace);\n this._createRequest(monospaceTestChars.charAt(i), 1 /* CharWidthRequestType.Italic */, all, monospace);\n this._createRequest(monospaceTestChars.charAt(i), 2 /* CharWidthRequestType.Bold */, all, monospace);\n }\n (0,_charWidthReader_js__WEBPACK_IMPORTED_MODULE_3__.readCharWidths)(bareFontInfo, all);\n const maxDigitWidth = Math.max(digit0.width, digit1.width, digit2.width, digit3.width, digit4.width, digit5.width, digit6.width, digit7.width, digit8.width, digit9.width);\n let isMonospace = (bareFontInfo.fontFeatureSettings === _common_config_editorOptions_js__WEBPACK_IMPORTED_MODULE_4__.EditorFontLigatures.OFF);\n const referenceWidth = monospace[0].width;\n for (let i = 1, len = monospace.length; isMonospace && i < len; i++) {\n const diff = referenceWidth - monospace[i].width;\n if (diff < -0.001 || diff > 0.001) {\n isMonospace = false;\n break;\n }\n }\n let canUseHalfwidthRightwardsArrow = true;\n if (isMonospace && halfwidthRightwardsArrow.width !== referenceWidth) {\n // using a halfwidth rightwards arrow would break monospace...\n canUseHalfwidthRightwardsArrow = false;\n }\n if (halfwidthRightwardsArrow.width > rightwardsArrow.width) {\n // using a halfwidth rightwards arrow would paint a larger arrow than a regular rightwards arrow\n canUseHalfwidthRightwardsArrow = false;\n }\n return new _common_config_fontInfo_js__WEBPACK_IMPORTED_MODULE_5__.FontInfo({\n pixelRatio: _base_browser_browser_js__WEBPACK_IMPORTED_MODULE_0__.PixelRatio.value,\n fontFamily: bareFontInfo.fontFamily,\n fontWeight: bareFontInfo.fontWeight,\n fontSize: bareFontInfo.fontSize,\n fontFeatureSettings: bareFontInfo.fontFeatureSettings,\n fontVariationSettings: bareFontInfo.fontVariationSettings,\n lineHeight: bareFontInfo.lineHeight,\n letterSpacing: bareFontInfo.letterSpacing,\n isMonospace: isMonospace,\n typicalHalfwidthCharacterWidth: typicalHalfwidthCharacter.width,\n typicalFullwidthCharacterWidth: typicalFullwidthCharacter.width,\n canUseHalfwidthRightwardsArrow: canUseHalfwidthRightwardsArrow,\n spaceWidth: space.width,\n middotWidth: middot.width,\n wsmiddotWidth: wsmiddotWidth.width,\n maxDigitWidth: maxDigitWidth\n }, true);\n }\n}\nclass FontMeasurementsCache {\n constructor() {\n this._keys = Object.create(null);\n this._values = Object.create(null);\n }\n has(item) {\n const itemId = item.getId();\n return !!this._values[itemId];\n }\n get(item) {\n const itemId = item.getId();\n return this._values[itemId];\n }\n put(item, value) {\n const itemId = item.getId();\n this._keys[itemId] = item;\n this._values[itemId] = value;\n }\n remove(item) {\n const itemId = item.getId();\n delete this._keys[itemId];\n delete this._values[itemId];\n }\n getValues() {\n return Object.keys(this._keys).map(id => this._values[id]);\n }\n}\nconst FontMeasurements = new FontMeasurementsImpl();\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/config/fontMeasurements.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/config/migrateOptions.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/config/migrateOptions.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EditorSettingMigration: () => (/* binding */ EditorSettingMigration),\n/* harmony export */ migrateOptions: () => (/* binding */ migrateOptions)\n/* harmony export */ });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass EditorSettingMigration {\n constructor(key, migrate) {\n this.key = key;\n this.migrate = migrate;\n }\n apply(options) {\n const value = EditorSettingMigration._read(options, this.key);\n const read = (key) => EditorSettingMigration._read(options, key);\n const write = (key, value) => EditorSettingMigration._write(options, key, value);\n this.migrate(value, read, write);\n }\n static _read(source, key) {\n if (typeof source === 'undefined') {\n return undefined;\n }\n const firstDotIndex = key.indexOf('.');\n if (firstDotIndex >= 0) {\n const firstSegment = key.substring(0, firstDotIndex);\n return this._read(source[firstSegment], key.substring(firstDotIndex + 1));\n }\n return source[key];\n }\n static _write(target, key, value) {\n const firstDotIndex = key.indexOf('.');\n if (firstDotIndex >= 0) {\n const firstSegment = key.substring(0, firstDotIndex);\n target[firstSegment] = target[firstSegment] || {};\n this._write(target[firstSegment], key.substring(firstDotIndex + 1), value);\n return;\n }\n target[key] = value;\n }\n}\nEditorSettingMigration.items = [];\nfunction registerEditorSettingMigration(key, migrate) {\n EditorSettingMigration.items.push(new EditorSettingMigration(key, migrate));\n}\nfunction registerSimpleEditorSettingMigration(key, values) {\n registerEditorSettingMigration(key, (value, read, write) => {\n if (typeof value !== 'undefined') {\n for (const [oldValue, newValue] of values) {\n if (value === oldValue) {\n write(key, newValue);\n return;\n }\n }\n }\n });\n}\n/**\n * Compatibility with old options\n */\nfunction migrateOptions(options) {\n EditorSettingMigration.items.forEach(migration => migration.apply(options));\n}\nregisterSimpleEditorSettingMigration('wordWrap', [[true, 'on'], [false, 'off']]);\nregisterSimpleEditorSettingMigration('lineNumbers', [[true, 'on'], [false, 'off']]);\nregisterSimpleEditorSettingMigration('cursorBlinking', [['visible', 'solid']]);\nregisterSimpleEditorSettingMigration('renderWhitespace', [[true, 'boundary'], [false, 'none']]);\nregisterSimpleEditorSettingMigration('renderLineHighlight', [[true, 'line'], [false, 'none']]);\nregisterSimpleEditorSettingMigration('acceptSuggestionOnEnter', [[true, 'on'], [false, 'off']]);\nregisterSimpleEditorSettingMigration('tabCompletion', [[false, 'off'], [true, 'onlySnippets']]);\nregisterSimpleEditorSettingMigration('hover', [[true, { enabled: true }], [false, { enabled: false }]]);\nregisterSimpleEditorSettingMigration('parameterHints', [[true, { enabled: true }], [false, { enabled: false }]]);\nregisterSimpleEditorSettingMigration('autoIndent', [[false, 'advanced'], [true, 'full']]);\nregisterSimpleEditorSettingMigration('matchBrackets', [[true, 'always'], [false, 'never']]);\nregisterSimpleEditorSettingMigration('renderFinalNewline', [[true, 'on'], [false, 'off']]);\nregisterSimpleEditorSettingMigration('cursorSmoothCaretAnimation', [[true, 'on'], [false, 'off']]);\nregisterEditorSettingMigration('autoClosingBrackets', (value, read, write) => {\n if (value === false) {\n write('autoClosingBrackets', 'never');\n if (typeof read('autoClosingQuotes') === 'undefined') {\n write('autoClosingQuotes', 'never');\n }\n if (typeof read('autoSurround') === 'undefined') {\n write('autoSurround', 'never');\n }\n }\n});\nregisterEditorSettingMigration('renderIndentGuides', (value, read, write) => {\n if (typeof value !== 'undefined') {\n write('renderIndentGuides', undefined);\n if (typeof read('guides.indentation') === 'undefined') {\n write('guides.indentation', !!value);\n }\n }\n});\nregisterEditorSettingMigration('highlightActiveIndentGuide', (value, read, write) => {\n if (typeof value !== 'undefined') {\n write('highlightActiveIndentGuide', undefined);\n if (typeof read('guides.highlightActiveIndentation') === 'undefined') {\n write('guides.highlightActiveIndentation', !!value);\n }\n }\n});\nconst suggestFilteredTypesMapping = {\n method: 'showMethods',\n function: 'showFunctions',\n constructor: 'showConstructors',\n deprecated: 'showDeprecated',\n field: 'showFields',\n variable: 'showVariables',\n class: 'showClasses',\n struct: 'showStructs',\n interface: 'showInterfaces',\n module: 'showModules',\n property: 'showProperties',\n event: 'showEvents',\n operator: 'showOperators',\n unit: 'showUnits',\n value: 'showValues',\n constant: 'showConstants',\n enum: 'showEnums',\n enumMember: 'showEnumMembers',\n keyword: 'showKeywords',\n text: 'showWords',\n color: 'showColors',\n file: 'showFiles',\n reference: 'showReferences',\n folder: 'showFolders',\n typeParameter: 'showTypeParameters',\n snippet: 'showSnippets',\n};\nregisterEditorSettingMigration('suggest.filteredTypes', (value, read, write) => {\n if (value && typeof value === 'object') {\n for (const entry of Object.entries(suggestFilteredTypesMapping)) {\n const v = value[entry[0]];\n if (v === false) {\n if (typeof read(`suggest.${entry[1]}`) === 'undefined') {\n write(`suggest.${entry[1]}`, false);\n }\n }\n }\n write('suggest.filteredTypes', undefined);\n }\n});\nregisterEditorSettingMigration('quickSuggestions', (input, read, write) => {\n if (typeof input === 'boolean') {\n const value = input ? 'on' : 'off';\n const newValue = { comments: value, strings: value, other: value };\n write('quickSuggestions', newValue);\n }\n});\n// Sticky Scroll\nregisterEditorSettingMigration('experimental.stickyScroll.enabled', (value, read, write) => {\n if (typeof value === 'boolean') {\n write('experimental.stickyScroll.enabled', undefined);\n if (typeof read('stickyScroll.enabled') === 'undefined') {\n write('stickyScroll.enabled', value);\n }\n }\n});\nregisterEditorSettingMigration('experimental.stickyScroll.maxLineCount', (value, read, write) => {\n if (typeof value === 'number') {\n write('experimental.stickyScroll.maxLineCount', undefined);\n if (typeof read('stickyScroll.maxLineCount') === 'undefined') {\n write('stickyScroll.maxLineCount', value);\n }\n }\n});\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/config/migrateOptions.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/config/tabFocus.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/config/tabFocus.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TabFocus: () => (/* binding */ TabFocus)\n/* harmony export */ });\n/* harmony import */ var _base_common_event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/common/event.js */ \"./node_modules/monaco-editor/esm/vs/base/common/event.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nclass TabFocusImpl {\n constructor() {\n this._tabFocusTerminal = false;\n this._tabFocusEditor = false;\n this._onDidChangeTabFocus = new _base_common_event_js__WEBPACK_IMPORTED_MODULE_0__.Emitter();\n this.onDidChangeTabFocus = this._onDidChangeTabFocus.event;\n }\n getTabFocusMode(context) {\n return context === \"terminalFocus\" /* TabFocusContext.Terminal */ ? this._tabFocusTerminal : this._tabFocusEditor;\n }\n setTabFocusMode(tabFocusMode, context) {\n if (context === \"terminalFocus\" /* TabFocusContext.Terminal */) {\n this._tabFocusTerminal = tabFocusMode;\n }\n else {\n this._tabFocusEditor = tabFocusMode;\n }\n this._onDidChangeTabFocus.fire();\n }\n}\n/**\n * Control what pressing Tab does.\n * If it is false, pressing Tab or Shift-Tab will be handled by the editor.\n * If it is true, pressing Tab or Shift-Tab will move the browser focus.\n * Defaults to false.\n */\nconst TabFocus = new TabFocusImpl();\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/config/tabFocus.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MouseHandler: () => (/* binding */ MouseHandler)\n/* harmony export */ });\n/* harmony import */ var _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/browser/dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _base_browser_mouseEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/browser/mouseEvent.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js\");\n/* harmony import */ var _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../base/common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _base_common_platform_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../base/common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mouseTarget.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js\");\n/* harmony import */ var _editorDom_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../editorDom.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/editorDom.js\");\n/* harmony import */ var _common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/config/editorZoom.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/config/editorZoom.js\");\n/* harmony import */ var _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/core/position.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/position.js\");\n/* harmony import */ var _common_core_selection_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/core/selection.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js\");\n/* harmony import */ var _common_viewEventHandler_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../common/viewEventHandler.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/viewEventHandler.js\");\n/* harmony import */ var _base_browser_ui_scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../base/browser/ui/scrollbar/scrollableElement.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\nclass MouseHandler extends _common_viewEventHandler_js__WEBPACK_IMPORTED_MODULE_9__.ViewEventHandler {\n constructor(context, viewController, viewHelper) {\n super();\n this._mouseLeaveMonitor = null;\n this._context = context;\n this.viewController = viewController;\n this.viewHelper = viewHelper;\n this.mouseTargetFactory = new _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTargetFactory(this._context, viewHelper);\n this._mouseDownOperation = this._register(new MouseDownOperation(this._context, this.viewController, this.viewHelper, this.mouseTargetFactory, (e, testEventTarget) => this._createMouseTarget(e, testEventTarget), (e) => this._getMouseColumn(e)));\n this.lastMouseLeaveTime = -1;\n this._height = this._context.configuration.options.get(141 /* EditorOption.layoutInfo */).height;\n const mouseEvents = new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.EditorMouseEventFactory(this.viewHelper.viewDomNode);\n this._register(mouseEvents.onContextMenu(this.viewHelper.viewDomNode, (e) => this._onContextMenu(e, true)));\n this._register(mouseEvents.onMouseMove(this.viewHelper.viewDomNode, (e) => {\n this._onMouseMove(e);\n // See https://github.com/microsoft/vscode/issues/138789\n // When moving the mouse really quickly, the browser sometimes forgets to\n // send us a `mouseleave` or `mouseout` event. We therefore install here\n // a global `mousemove` listener to manually recover if the mouse goes outside\n // the editor. As soon as the mouse leaves outside of the editor, we\n // remove this listener\n if (!this._mouseLeaveMonitor) {\n this._mouseLeaveMonitor = _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(document, 'mousemove', (e) => {\n if (!this.viewHelper.viewDomNode.contains(e.target)) {\n // went outside the editor!\n this._onMouseLeave(new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.EditorMouseEvent(e, false, this.viewHelper.viewDomNode));\n }\n });\n }\n }));\n this._register(mouseEvents.onMouseUp(this.viewHelper.viewDomNode, (e) => this._onMouseUp(e)));\n this._register(mouseEvents.onMouseLeave(this.viewHelper.viewDomNode, (e) => this._onMouseLeave(e)));\n // `pointerdown` events can't be used to determine if there's a double click, or triple click\n // because their `e.detail` is always 0.\n // We will therefore save the pointer id for the mouse and then reuse it in the `mousedown` event\n // for `element.setPointerCapture`.\n let capturePointerId = 0;\n this._register(mouseEvents.onPointerDown(this.viewHelper.viewDomNode, (e, pointerId) => {\n capturePointerId = pointerId;\n }));\n // The `pointerup` listener registered by `GlobalEditorPointerMoveMonitor` does not get invoked 100% of the times.\n // I speculate that this is because the `pointerup` listener is only registered during the `mousedown` event, and perhaps\n // the `pointerup` event is already queued for dispatching, which makes it that the new listener doesn't get fired.\n // See https://github.com/microsoft/vscode/issues/146486 for repro steps.\n // To compensate for that, we simply register here a `pointerup` listener and just communicate it.\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.viewDomNode, _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.POINTER_UP, (e) => {\n this._mouseDownOperation.onPointerUp();\n }));\n this._register(mouseEvents.onMouseDown(this.viewHelper.viewDomNode, (e) => this._onMouseDown(e, capturePointerId)));\n this._setupMouseWheelZoomListener();\n this._context.addEventHandler(this);\n }\n _setupMouseWheelZoomListener() {\n const classifier = _base_browser_ui_scrollbar_scrollableElement_js__WEBPACK_IMPORTED_MODULE_10__.MouseWheelClassifier.INSTANCE;\n let prevMouseWheelTime = 0;\n let gestureStartZoomLevel = _common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_6__.EditorZoom.getZoomLevel();\n let gestureHasZoomModifiers = false;\n let gestureAccumulatedDelta = 0;\n const onMouseWheel = (browserEvent) => {\n this.viewController.emitMouseWheel(browserEvent);\n if (!this._context.configuration.options.get(73 /* EditorOption.mouseWheelZoom */)) {\n return;\n }\n const e = new _base_browser_mouseEvent_js__WEBPACK_IMPORTED_MODULE_1__.StandardWheelEvent(browserEvent);\n classifier.acceptStandardWheelEvent(e);\n if (classifier.isPhysicalMouseWheel()) {\n if (hasMouseWheelZoomModifiers(browserEvent)) {\n const zoomLevel = _common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_6__.EditorZoom.getZoomLevel();\n const delta = e.deltaY > 0 ? 1 : -1;\n _common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_6__.EditorZoom.setZoomLevel(zoomLevel + delta);\n e.preventDefault();\n e.stopPropagation();\n }\n }\n else {\n // we consider mousewheel events that occur within 50ms of each other to be part of the same gesture\n // we don't want to consider mouse wheel events where ctrl/cmd is pressed during the inertia phase\n // we also want to accumulate deltaY values from the same gesture and use that to set the zoom level\n if (Date.now() - prevMouseWheelTime > 50) {\n // reset if more than 50ms have passed\n gestureStartZoomLevel = _common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_6__.EditorZoom.getZoomLevel();\n gestureHasZoomModifiers = hasMouseWheelZoomModifiers(browserEvent);\n gestureAccumulatedDelta = 0;\n }\n prevMouseWheelTime = Date.now();\n gestureAccumulatedDelta += e.deltaY;\n if (gestureHasZoomModifiers) {\n _common_config_editorZoom_js__WEBPACK_IMPORTED_MODULE_6__.EditorZoom.setZoomLevel(gestureStartZoomLevel + gestureAccumulatedDelta / 5);\n e.preventDefault();\n e.stopPropagation();\n }\n }\n };\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.viewDomNode, _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.EventType.MOUSE_WHEEL, onMouseWheel, { capture: true, passive: false }));\n function hasMouseWheelZoomModifiers(browserEvent) {\n return (_base_common_platform_js__WEBPACK_IMPORTED_MODULE_3__.isMacintosh\n // on macOS we support cmd + two fingers scroll (`metaKey` set)\n // and also the two fingers pinch gesture (`ctrKey` set)\n ? ((browserEvent.metaKey || browserEvent.ctrlKey) && !browserEvent.shiftKey && !browserEvent.altKey)\n : (browserEvent.ctrlKey && !browserEvent.metaKey && !browserEvent.shiftKey && !browserEvent.altKey));\n }\n }\n dispose() {\n this._context.removeEventHandler(this);\n if (this._mouseLeaveMonitor) {\n this._mouseLeaveMonitor.dispose();\n this._mouseLeaveMonitor = null;\n }\n super.dispose();\n }\n // --- begin event handlers\n onConfigurationChanged(e) {\n if (e.hasChanged(141 /* EditorOption.layoutInfo */)) {\n // layout change\n const height = this._context.configuration.options.get(141 /* EditorOption.layoutInfo */).height;\n if (this._height !== height) {\n this._height = height;\n this._mouseDownOperation.onHeightChanged();\n }\n }\n return false;\n }\n onCursorStateChanged(e) {\n this._mouseDownOperation.onCursorStateChanged(e);\n return false;\n }\n onFocusChanged(e) {\n return false;\n }\n // --- end event handlers\n getTargetAtClientPoint(clientX, clientY) {\n const clientPos = new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.ClientCoordinates(clientX, clientY);\n const pos = clientPos.toPageCoordinates();\n const editorPos = (0,_editorDom_js__WEBPACK_IMPORTED_MODULE_5__.createEditorPagePosition)(this.viewHelper.viewDomNode);\n if (pos.y < editorPos.y || pos.y > editorPos.y + editorPos.height || pos.x < editorPos.x || pos.x > editorPos.x + editorPos.width) {\n return null;\n }\n const relativePos = (0,_editorDom_js__WEBPACK_IMPORTED_MODULE_5__.createCoordinatesRelativeToEditor)(this.viewHelper.viewDomNode, editorPos, pos);\n return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), editorPos, pos, relativePos, null);\n }\n _createMouseTarget(e, testEventTarget) {\n let target = e.target;\n if (!this.viewHelper.viewDomNode.contains(target)) {\n const shadowRoot = _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.getShadowRoot(this.viewHelper.viewDomNode);\n if (shadowRoot) {\n target = shadowRoot.elementsFromPoint(e.posx, e.posy).find((el) => this.viewHelper.viewDomNode.contains(el));\n }\n }\n return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, e.relativePos, testEventTarget ? target : null);\n }\n _getMouseColumn(e) {\n return this.mouseTargetFactory.getMouseColumn(e.relativePos);\n }\n _onContextMenu(e, testEventTarget) {\n this.viewController.emitContextMenu({\n event: e,\n target: this._createMouseTarget(e, testEventTarget)\n });\n }\n _onMouseMove(e) {\n const targetIsWidget = this.mouseTargetFactory.mouseTargetIsWidget(e);\n if (!targetIsWidget) {\n e.preventDefault();\n }\n if (this._mouseDownOperation.isActive()) {\n // In selection/drag operation\n return;\n }\n const actualMouseMoveTime = e.timestamp;\n if (actualMouseMoveTime < this.lastMouseLeaveTime) {\n // Due to throttling, this event occurred before the mouse left the editor, therefore ignore it.\n return;\n }\n this.viewController.emitMouseMove({\n event: e,\n target: this._createMouseTarget(e, true)\n });\n }\n _onMouseLeave(e) {\n if (this._mouseLeaveMonitor) {\n this._mouseLeaveMonitor.dispose();\n this._mouseLeaveMonitor = null;\n }\n this.lastMouseLeaveTime = (new Date()).getTime();\n this.viewController.emitMouseLeave({\n event: e,\n target: null\n });\n }\n _onMouseUp(e) {\n this.viewController.emitMouseUp({\n event: e,\n target: this._createMouseTarget(e, true)\n });\n }\n _onMouseDown(e, pointerId) {\n const t = this._createMouseTarget(e, true);\n const targetIsContent = (t.type === 6 /* MouseTargetType.CONTENT_TEXT */ || t.type === 7 /* MouseTargetType.CONTENT_EMPTY */);\n const targetIsGutter = (t.type === 2 /* MouseTargetType.GUTTER_GLYPH_MARGIN */ || t.type === 3 /* MouseTargetType.GUTTER_LINE_NUMBERS */ || t.type === 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */);\n const targetIsLineNumbers = (t.type === 3 /* MouseTargetType.GUTTER_LINE_NUMBERS */);\n const selectOnLineNumbers = this._context.configuration.options.get(106 /* EditorOption.selectOnLineNumbers */);\n const targetIsViewZone = (t.type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */ || t.type === 5 /* MouseTargetType.GUTTER_VIEW_ZONE */);\n const targetIsWidget = (t.type === 9 /* MouseTargetType.CONTENT_WIDGET */);\n let shouldHandle = e.leftButton || e.middleButton;\n if (_base_common_platform_js__WEBPACK_IMPORTED_MODULE_3__.isMacintosh && e.leftButton && e.ctrlKey) {\n shouldHandle = false;\n }\n const focus = () => {\n e.preventDefault();\n this.viewHelper.focusTextArea();\n };\n if (shouldHandle && (targetIsContent || (targetIsLineNumbers && selectOnLineNumbers))) {\n focus();\n this._mouseDownOperation.start(t.type, e, pointerId);\n }\n else if (targetIsGutter) {\n // Do not steal focus\n e.preventDefault();\n }\n else if (targetIsViewZone) {\n const viewZoneData = t.detail;\n if (shouldHandle && this.viewHelper.shouldSuppressMouseDownOnViewZone(viewZoneData.viewZoneId)) {\n focus();\n this._mouseDownOperation.start(t.type, e, pointerId);\n e.preventDefault();\n }\n }\n else if (targetIsWidget && this.viewHelper.shouldSuppressMouseDownOnWidget(t.detail)) {\n focus();\n e.preventDefault();\n }\n this.viewController.emitMouseDown({\n event: e,\n target: t\n });\n }\n}\nclass MouseDownOperation extends _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor(_context, _viewController, _viewHelper, _mouseTargetFactory, createMouseTarget, getMouseColumn) {\n super();\n this._context = _context;\n this._viewController = _viewController;\n this._viewHelper = _viewHelper;\n this._mouseTargetFactory = _mouseTargetFactory;\n this._createMouseTarget = createMouseTarget;\n this._getMouseColumn = getMouseColumn;\n this._mouseMoveMonitor = this._register(new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.GlobalEditorPointerMoveMonitor(this._viewHelper.viewDomNode));\n this._topBottomDragScrolling = this._register(new TopBottomDragScrolling(this._context, this._viewHelper, this._mouseTargetFactory, (position, inSelectionMode, revealType) => this._dispatchMouse(position, inSelectionMode, revealType)));\n this._mouseState = new MouseDownState();\n this._currentSelection = new _common_core_selection_js__WEBPACK_IMPORTED_MODULE_8__.Selection(1, 1, 1, 1);\n this._isActive = false;\n this._lastMouseEvent = null;\n }\n dispose() {\n super.dispose();\n }\n isActive() {\n return this._isActive;\n }\n _onMouseDownThenMove(e) {\n this._lastMouseEvent = e;\n this._mouseState.setModifiers(e);\n const position = this._findMousePosition(e, false);\n if (!position) {\n // Ignoring because position is unknown\n return;\n }\n if (this._mouseState.isDragAndDrop) {\n this._viewController.emitMouseDrag({\n event: e,\n target: position\n });\n }\n else {\n if (position.type === 13 /* MouseTargetType.OUTSIDE_EDITOR */ && (position.outsidePosition === 'above' || position.outsidePosition === 'below')) {\n this._topBottomDragScrolling.start(position, e);\n }\n else {\n this._topBottomDragScrolling.stop();\n this._dispatchMouse(position, true, 1 /* NavigationCommandRevealType.Minimal */);\n }\n }\n }\n start(targetType, e, pointerId) {\n this._lastMouseEvent = e;\n this._mouseState.setStartedOnLineNumbers(targetType === 3 /* MouseTargetType.GUTTER_LINE_NUMBERS */);\n this._mouseState.setStartButtons(e);\n this._mouseState.setModifiers(e);\n const position = this._findMousePosition(e, true);\n if (!position || !position.position) {\n // Ignoring because position is unknown\n return;\n }\n this._mouseState.trySetCount(e.detail, position.position);\n // Overwrite the detail of the MouseEvent, as it will be sent out in an event and contributions might rely on it.\n e.detail = this._mouseState.count;\n const options = this._context.configuration.options;\n if (!options.get(88 /* EditorOption.readOnly */)\n && options.get(33 /* EditorOption.dragAndDrop */)\n && !options.get(20 /* EditorOption.columnSelection */)\n && !this._mouseState.altKey // we don't support multiple mouse\n && e.detail < 2 // only single click on a selection can work\n && !this._isActive // the mouse is not down yet\n && !this._currentSelection.isEmpty() // we don't drag single cursor\n && (position.type === 6 /* MouseTargetType.CONTENT_TEXT */) // single click on text\n && position.position && this._currentSelection.containsPosition(position.position) // single click on a selection\n ) {\n this._mouseState.isDragAndDrop = true;\n this._isActive = true;\n this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode, pointerId, e.buttons, (e) => this._onMouseDownThenMove(e), (browserEvent) => {\n const position = this._findMousePosition(this._lastMouseEvent, false);\n if (browserEvent && browserEvent instanceof KeyboardEvent) {\n // cancel\n this._viewController.emitMouseDropCanceled();\n }\n else {\n this._viewController.emitMouseDrop({\n event: this._lastMouseEvent,\n target: (position ? this._createMouseTarget(this._lastMouseEvent, true) : null) // Ignoring because position is unknown, e.g., Content View Zone\n });\n }\n this._stop();\n });\n return;\n }\n this._mouseState.isDragAndDrop = false;\n this._dispatchMouse(position, e.shiftKey, 1 /* NavigationCommandRevealType.Minimal */);\n if (!this._isActive) {\n this._isActive = true;\n this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode, pointerId, e.buttons, (e) => this._onMouseDownThenMove(e), () => this._stop());\n }\n }\n _stop() {\n this._isActive = false;\n this._topBottomDragScrolling.stop();\n }\n onHeightChanged() {\n this._mouseMoveMonitor.stopMonitoring();\n }\n onPointerUp() {\n this._mouseMoveMonitor.stopMonitoring();\n }\n onCursorStateChanged(e) {\n this._currentSelection = e.selections[0];\n }\n _getPositionOutsideEditor(e) {\n const editorContent = e.editorPos;\n const model = this._context.viewModel;\n const viewLayout = this._context.viewLayout;\n const mouseColumn = this._getMouseColumn(e);\n if (e.posy < editorContent.y) {\n const outsideDistance = editorContent.y - e.posy;\n const verticalOffset = Math.max(viewLayout.getCurrentScrollTop() - outsideDistance, 0);\n const viewZoneData = _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.HitTestContext.getZoneAtCoord(this._context, verticalOffset);\n if (viewZoneData) {\n const newPosition = this._helpPositionJumpOverViewZone(viewZoneData);\n if (newPosition) {\n return _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(mouseColumn, newPosition, 'above', outsideDistance);\n }\n }\n const aboveLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset);\n return _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(mouseColumn, new _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__.Position(aboveLineNumber, 1), 'above', outsideDistance);\n }\n if (e.posy > editorContent.y + editorContent.height) {\n const outsideDistance = e.posy - editorContent.y - editorContent.height;\n const verticalOffset = viewLayout.getCurrentScrollTop() + e.relativePos.y;\n const viewZoneData = _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.HitTestContext.getZoneAtCoord(this._context, verticalOffset);\n if (viewZoneData) {\n const newPosition = this._helpPositionJumpOverViewZone(viewZoneData);\n if (newPosition) {\n return _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(mouseColumn, newPosition, 'below', outsideDistance);\n }\n }\n const belowLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset);\n return _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(mouseColumn, new _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__.Position(belowLineNumber, model.getLineMaxColumn(belowLineNumber)), 'below', outsideDistance);\n }\n const possibleLineNumber = viewLayout.getLineNumberAtVerticalOffset(viewLayout.getCurrentScrollTop() + e.relativePos.y);\n if (e.posx < editorContent.x) {\n const outsideDistance = editorContent.x - e.posx;\n return _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(mouseColumn, new _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__.Position(possibleLineNumber, 1), 'left', outsideDistance);\n }\n if (e.posx > editorContent.x + editorContent.width) {\n const outsideDistance = e.posx - editorContent.x - editorContent.width;\n return _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(mouseColumn, new _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__.Position(possibleLineNumber, model.getLineMaxColumn(possibleLineNumber)), 'right', outsideDistance);\n }\n return null;\n }\n _findMousePosition(e, testEventTarget) {\n const positionOutsideEditor = this._getPositionOutsideEditor(e);\n if (positionOutsideEditor) {\n return positionOutsideEditor;\n }\n const t = this._createMouseTarget(e, testEventTarget);\n const hintedPosition = t.position;\n if (!hintedPosition) {\n return null;\n }\n if (t.type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */ || t.type === 5 /* MouseTargetType.GUTTER_VIEW_ZONE */) {\n const newPosition = this._helpPositionJumpOverViewZone(t.detail);\n if (newPosition) {\n return _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createViewZone(t.type, t.element, t.mouseColumn, newPosition, t.detail);\n }\n }\n return t;\n }\n _helpPositionJumpOverViewZone(viewZoneData) {\n // Force position on view zones to go above or below depending on where selection started from\n const selectionStart = new _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__.Position(this._currentSelection.selectionStartLineNumber, this._currentSelection.selectionStartColumn);\n const positionBefore = viewZoneData.positionBefore;\n const positionAfter = viewZoneData.positionAfter;\n if (positionBefore && positionAfter) {\n if (positionBefore.isBefore(selectionStart)) {\n return positionBefore;\n }\n else {\n return positionAfter;\n }\n }\n return null;\n }\n _dispatchMouse(position, inSelectionMode, revealType) {\n if (!position.position) {\n return;\n }\n this._viewController.dispatchMouse({\n position: position.position,\n mouseColumn: position.mouseColumn,\n startedOnLineNumbers: this._mouseState.startedOnLineNumbers,\n revealType,\n inSelectionMode: inSelectionMode,\n mouseDownCount: this._mouseState.count,\n altKey: this._mouseState.altKey,\n ctrlKey: this._mouseState.ctrlKey,\n metaKey: this._mouseState.metaKey,\n shiftKey: this._mouseState.shiftKey,\n leftButton: this._mouseState.leftButton,\n middleButton: this._mouseState.middleButton,\n onInjectedText: position.type === 6 /* MouseTargetType.CONTENT_TEXT */ && position.detail.injectedText !== null\n });\n }\n}\nclass TopBottomDragScrolling extends _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor(_context, _viewHelper, _mouseTargetFactory, _dispatchMouse) {\n super();\n this._context = _context;\n this._viewHelper = _viewHelper;\n this._mouseTargetFactory = _mouseTargetFactory;\n this._dispatchMouse = _dispatchMouse;\n this._operation = null;\n }\n dispose() {\n super.dispose();\n this.stop();\n }\n start(position, mouseEvent) {\n if (this._operation) {\n this._operation.setPosition(position, mouseEvent);\n }\n else {\n this._operation = new TopBottomDragScrollingOperation(this._context, this._viewHelper, this._mouseTargetFactory, this._dispatchMouse, position, mouseEvent);\n }\n }\n stop() {\n if (this._operation) {\n this._operation.dispose();\n this._operation = null;\n }\n }\n}\nclass TopBottomDragScrollingOperation extends _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_2__.Disposable {\n constructor(_context, _viewHelper, _mouseTargetFactory, _dispatchMouse, position, mouseEvent) {\n super();\n this._context = _context;\n this._viewHelper = _viewHelper;\n this._mouseTargetFactory = _mouseTargetFactory;\n this._dispatchMouse = _dispatchMouse;\n this._position = position;\n this._mouseEvent = mouseEvent;\n this._lastTime = Date.now();\n this._animationFrameDisposable = _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.scheduleAtNextAnimationFrame(() => this._execute());\n }\n dispose() {\n this._animationFrameDisposable.dispose();\n }\n setPosition(position, mouseEvent) {\n this._position = position;\n this._mouseEvent = mouseEvent;\n }\n /**\n * update internal state and return elapsed ms since last time\n */\n _tick() {\n const now = Date.now();\n const elapsed = now - this._lastTime;\n this._lastTime = now;\n return elapsed;\n }\n /**\n * get the number of lines per second to auto-scroll\n */\n _getScrollSpeed() {\n const lineHeight = this._context.configuration.options.get(64 /* EditorOption.lineHeight */);\n const viewportInLines = this._context.configuration.options.get(141 /* EditorOption.layoutInfo */).height / lineHeight;\n const outsideDistanceInLines = this._position.outsideDistance / lineHeight;\n if (outsideDistanceInLines <= 1.5) {\n return Math.max(30, viewportInLines * (1 + outsideDistanceInLines));\n }\n if (outsideDistanceInLines <= 3) {\n return Math.max(60, viewportInLines * (2 + outsideDistanceInLines));\n }\n return Math.max(200, viewportInLines * (7 + outsideDistanceInLines));\n }\n _execute() {\n const lineHeight = this._context.configuration.options.get(64 /* EditorOption.lineHeight */);\n const scrollSpeedInLines = this._getScrollSpeed();\n const elapsed = this._tick();\n const scrollInPixels = scrollSpeedInLines * (elapsed / 1000) * lineHeight;\n const scrollValue = (this._position.outsidePosition === 'above' ? -scrollInPixels : scrollInPixels);\n this._context.viewModel.viewLayout.deltaScrollNow(0, scrollValue);\n this._viewHelper.renderNow();\n const viewportData = this._context.viewLayout.getLinesViewportData();\n const edgeLineNumber = (this._position.outsidePosition === 'above' ? viewportData.startLineNumber : viewportData.endLineNumber);\n // First, try to find a position that matches the horizontal position of the mouse\n let mouseTarget;\n {\n const editorPos = (0,_editorDom_js__WEBPACK_IMPORTED_MODULE_5__.createEditorPagePosition)(this._viewHelper.viewDomNode);\n const horizontalScrollbarHeight = this._context.configuration.options.get(141 /* EditorOption.layoutInfo */).horizontalScrollbarHeight;\n const pos = new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.PageCoordinates(this._mouseEvent.pos.x, editorPos.y + editorPos.height - horizontalScrollbarHeight - 0.1);\n const relativePos = (0,_editorDom_js__WEBPACK_IMPORTED_MODULE_5__.createCoordinatesRelativeToEditor)(this._viewHelper.viewDomNode, editorPos, pos);\n mouseTarget = this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(), editorPos, pos, relativePos, null);\n }\n if (!mouseTarget.position || mouseTarget.position.lineNumber !== edgeLineNumber) {\n if (this._position.outsidePosition === 'above') {\n mouseTarget = _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(this._position.mouseColumn, new _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__.Position(edgeLineNumber, 1), 'above', this._position.outsideDistance);\n }\n else {\n mouseTarget = _mouseTarget_js__WEBPACK_IMPORTED_MODULE_4__.MouseTarget.createOutsideEditor(this._position.mouseColumn, new _common_core_position_js__WEBPACK_IMPORTED_MODULE_7__.Position(edgeLineNumber, this._context.viewModel.getLineMaxColumn(edgeLineNumber)), 'below', this._position.outsideDistance);\n }\n }\n this._dispatchMouse(mouseTarget, true, 2 /* NavigationCommandRevealType.None */);\n this._animationFrameDisposable = _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.scheduleAtNextAnimationFrame(() => this._execute());\n }\n}\nclass MouseDownState {\n get altKey() { return this._altKey; }\n get ctrlKey() { return this._ctrlKey; }\n get metaKey() { return this._metaKey; }\n get shiftKey() { return this._shiftKey; }\n get leftButton() { return this._leftButton; }\n get middleButton() { return this._middleButton; }\n get startedOnLineNumbers() { return this._startedOnLineNumbers; }\n constructor() {\n this._altKey = false;\n this._ctrlKey = false;\n this._metaKey = false;\n this._shiftKey = false;\n this._leftButton = false;\n this._middleButton = false;\n this._startedOnLineNumbers = false;\n this._lastMouseDownPosition = null;\n this._lastMouseDownPositionEqualCount = 0;\n this._lastMouseDownCount = 0;\n this._lastSetMouseDownCountTime = 0;\n this.isDragAndDrop = false;\n }\n get count() {\n return this._lastMouseDownCount;\n }\n setModifiers(source) {\n this._altKey = source.altKey;\n this._ctrlKey = source.ctrlKey;\n this._metaKey = source.metaKey;\n this._shiftKey = source.shiftKey;\n }\n setStartButtons(source) {\n this._leftButton = source.leftButton;\n this._middleButton = source.middleButton;\n }\n setStartedOnLineNumbers(startedOnLineNumbers) {\n this._startedOnLineNumbers = startedOnLineNumbers;\n }\n trySetCount(setMouseDownCount, newMouseDownPosition) {\n // a. Invalidate multiple clicking if too much time has passed (will be hit by IE because the detail field of mouse events contains garbage in IE10)\n const currentTime = (new Date()).getTime();\n if (currentTime - this._lastSetMouseDownCountTime > MouseDownState.CLEAR_MOUSE_DOWN_COUNT_TIME) {\n setMouseDownCount = 1;\n }\n this._lastSetMouseDownCountTime = currentTime;\n // b. Ensure that we don't jump from single click to triple click in one go (will be hit by IE because the detail field of mouse events contains garbage in IE10)\n if (setMouseDownCount > this._lastMouseDownCount + 1) {\n setMouseDownCount = this._lastMouseDownCount + 1;\n }\n // c. Invalidate multiple clicking if the logical position is different\n if (this._lastMouseDownPosition && this._lastMouseDownPosition.equals(newMouseDownPosition)) {\n this._lastMouseDownPositionEqualCount++;\n }\n else {\n this._lastMouseDownPositionEqualCount = 1;\n }\n this._lastMouseDownPosition = newMouseDownPosition;\n // Finally set the lastMouseDownCount\n this._lastMouseDownCount = Math.min(setMouseDownCount, this._lastMouseDownPositionEqualCount);\n }\n}\nMouseDownState.CLEAR_MOUSE_DOWN_COUNT_TIME = 400; // ms\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js": +/*!************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HitTestContext: () => (/* binding */ HitTestContext),\n/* harmony export */ MouseTarget: () => (/* binding */ MouseTarget),\n/* harmony export */ MouseTargetFactory: () => (/* binding */ MouseTargetFactory),\n/* harmony export */ PointerHandlerLastRenderData: () => (/* binding */ PointerHandlerLastRenderData)\n/* harmony export */ });\n/* harmony import */ var _editorDom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../editorDom.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/editorDom.js\");\n/* harmony import */ var _view_viewPart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../view/viewPart.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/view/viewPart.js\");\n/* harmony import */ var _viewParts_lines_viewLine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../viewParts/lines/viewLine.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLine.js\");\n/* harmony import */ var _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/core/position.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/position.js\");\n/* harmony import */ var _common_core_range_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/core/range.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/range.js\");\n/* harmony import */ var _common_core_cursorColumns_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/core/cursorColumns.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/core/cursorColumns.js\");\n/* harmony import */ var _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../base/browser/dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _common_cursor_cursorAtomicMoveOperations_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/cursor/cursorAtomicMoveOperations.js */ \"./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorAtomicMoveOperations.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\nclass UnknownHitTestResult {\n constructor(hitTarget = null) {\n this.hitTarget = hitTarget;\n this.type = 0 /* HitTestResultType.Unknown */;\n }\n}\nclass ContentHitTestResult {\n constructor(position, spanNode, injectedText) {\n this.position = position;\n this.spanNode = spanNode;\n this.injectedText = injectedText;\n this.type = 1 /* HitTestResultType.Content */;\n }\n}\nvar HitTestResult;\n(function (HitTestResult) {\n function createFromDOMInfo(ctx, spanNode, offset) {\n const position = ctx.getPositionFromDOMInfo(spanNode, offset);\n if (position) {\n return new ContentHitTestResult(position, spanNode, null);\n }\n return new UnknownHitTestResult(spanNode);\n }\n HitTestResult.createFromDOMInfo = createFromDOMInfo;\n})(HitTestResult || (HitTestResult = {}));\nclass PointerHandlerLastRenderData {\n constructor(lastViewCursorsRenderData, lastTextareaPosition) {\n this.lastViewCursorsRenderData = lastViewCursorsRenderData;\n this.lastTextareaPosition = lastTextareaPosition;\n }\n}\nclass MouseTarget {\n static _deduceRage(position, range = null) {\n if (!range && position) {\n return new _common_core_range_js__WEBPACK_IMPORTED_MODULE_4__.Range(position.lineNumber, position.column, position.lineNumber, position.column);\n }\n return range !== null && range !== void 0 ? range : null;\n }\n static createUnknown(element, mouseColumn, position) {\n return { type: 0 /* MouseTargetType.UNKNOWN */, element, mouseColumn, position, range: this._deduceRage(position) };\n }\n static createTextarea(element, mouseColumn) {\n return { type: 1 /* MouseTargetType.TEXTAREA */, element, mouseColumn, position: null, range: null };\n }\n static createMargin(type, element, mouseColumn, position, range, detail) {\n return { type, element, mouseColumn, position, range, detail };\n }\n static createViewZone(type, element, mouseColumn, position, detail) {\n return { type, element, mouseColumn, position, range: this._deduceRage(position), detail };\n }\n static createContentText(element, mouseColumn, position, range, detail) {\n return { type: 6 /* MouseTargetType.CONTENT_TEXT */, element, mouseColumn, position, range: this._deduceRage(position, range), detail };\n }\n static createContentEmpty(element, mouseColumn, position, detail) {\n return { type: 7 /* MouseTargetType.CONTENT_EMPTY */, element, mouseColumn, position, range: this._deduceRage(position), detail };\n }\n static createContentWidget(element, mouseColumn, detail) {\n return { type: 9 /* MouseTargetType.CONTENT_WIDGET */, element, mouseColumn, position: null, range: null, detail };\n }\n static createScrollbar(element, mouseColumn, position) {\n return { type: 11 /* MouseTargetType.SCROLLBAR */, element, mouseColumn, position, range: this._deduceRage(position) };\n }\n static createOverlayWidget(element, mouseColumn, detail) {\n return { type: 12 /* MouseTargetType.OVERLAY_WIDGET */, element, mouseColumn, position: null, range: null, detail };\n }\n static createOutsideEditor(mouseColumn, position, outsidePosition, outsideDistance) {\n return { type: 13 /* MouseTargetType.OUTSIDE_EDITOR */, element: null, mouseColumn, position, range: this._deduceRage(position), outsidePosition, outsideDistance };\n }\n static _typeToString(type) {\n if (type === 1 /* MouseTargetType.TEXTAREA */) {\n return 'TEXTAREA';\n }\n if (type === 2 /* MouseTargetType.GUTTER_GLYPH_MARGIN */) {\n return 'GUTTER_GLYPH_MARGIN';\n }\n if (type === 3 /* MouseTargetType.GUTTER_LINE_NUMBERS */) {\n return 'GUTTER_LINE_NUMBERS';\n }\n if (type === 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */) {\n return 'GUTTER_LINE_DECORATIONS';\n }\n if (type === 5 /* MouseTargetType.GUTTER_VIEW_ZONE */) {\n return 'GUTTER_VIEW_ZONE';\n }\n if (type === 6 /* MouseTargetType.CONTENT_TEXT */) {\n return 'CONTENT_TEXT';\n }\n if (type === 7 /* MouseTargetType.CONTENT_EMPTY */) {\n return 'CONTENT_EMPTY';\n }\n if (type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */) {\n return 'CONTENT_VIEW_ZONE';\n }\n if (type === 9 /* MouseTargetType.CONTENT_WIDGET */) {\n return 'CONTENT_WIDGET';\n }\n if (type === 10 /* MouseTargetType.OVERVIEW_RULER */) {\n return 'OVERVIEW_RULER';\n }\n if (type === 11 /* MouseTargetType.SCROLLBAR */) {\n return 'SCROLLBAR';\n }\n if (type === 12 /* MouseTargetType.OVERLAY_WIDGET */) {\n return 'OVERLAY_WIDGET';\n }\n return 'UNKNOWN';\n }\n static toString(target) {\n return this._typeToString(target.type) + ': ' + target.position + ' - ' + target.range + ' - ' + JSON.stringify(target.detail);\n }\n}\nclass ElementPath {\n static isTextArea(path) {\n return (path.length === 2\n && path[0] === 3 /* PartFingerprint.OverflowGuard */\n && path[1] === 6 /* PartFingerprint.TextArea */);\n }\n static isChildOfViewLines(path) {\n return (path.length >= 4\n && path[0] === 3 /* PartFingerprint.OverflowGuard */\n && path[3] === 7 /* PartFingerprint.ViewLines */);\n }\n static isStrictChildOfViewLines(path) {\n return (path.length > 4\n && path[0] === 3 /* PartFingerprint.OverflowGuard */\n && path[3] === 7 /* PartFingerprint.ViewLines */);\n }\n static isChildOfScrollableElement(path) {\n return (path.length >= 2\n && path[0] === 3 /* PartFingerprint.OverflowGuard */\n && path[1] === 5 /* PartFingerprint.ScrollableElement */);\n }\n static isChildOfMinimap(path) {\n return (path.length >= 2\n && path[0] === 3 /* PartFingerprint.OverflowGuard */\n && path[1] === 8 /* PartFingerprint.Minimap */);\n }\n static isChildOfContentWidgets(path) {\n return (path.length >= 4\n && path[0] === 3 /* PartFingerprint.OverflowGuard */\n && path[3] === 1 /* PartFingerprint.ContentWidgets */);\n }\n static isChildOfOverflowingContentWidgets(path) {\n return (path.length >= 1\n && path[0] === 2 /* PartFingerprint.OverflowingContentWidgets */);\n }\n static isChildOfOverlayWidgets(path) {\n return (path.length >= 2\n && path[0] === 3 /* PartFingerprint.OverflowGuard */\n && path[1] === 4 /* PartFingerprint.OverlayWidgets */);\n }\n}\nclass HitTestContext {\n constructor(context, viewHelper, lastRenderData) {\n this.viewModel = context.viewModel;\n const options = context.configuration.options;\n this.layoutInfo = options.get(141 /* EditorOption.layoutInfo */);\n this.viewDomNode = viewHelper.viewDomNode;\n this.lineHeight = options.get(64 /* EditorOption.lineHeight */);\n this.stickyTabStops = options.get(113 /* EditorOption.stickyTabStops */);\n this.typicalHalfwidthCharacterWidth = options.get(48 /* EditorOption.fontInfo */).typicalHalfwidthCharacterWidth;\n this.lastRenderData = lastRenderData;\n this._context = context;\n this._viewHelper = viewHelper;\n }\n getZoneAtCoord(mouseVerticalOffset) {\n return HitTestContext.getZoneAtCoord(this._context, mouseVerticalOffset);\n }\n static getZoneAtCoord(context, mouseVerticalOffset) {\n // The target is either a view zone or the empty space after the last view-line\n const viewZoneWhitespace = context.viewLayout.getWhitespaceAtVerticalOffset(mouseVerticalOffset);\n if (viewZoneWhitespace) {\n const viewZoneMiddle = viewZoneWhitespace.verticalOffset + viewZoneWhitespace.height / 2;\n const lineCount = context.viewModel.getLineCount();\n let positionBefore = null;\n let position;\n let positionAfter = null;\n if (viewZoneWhitespace.afterLineNumber !== lineCount) {\n // There are more lines after this view zone\n positionAfter = new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(viewZoneWhitespace.afterLineNumber + 1, 1);\n }\n if (viewZoneWhitespace.afterLineNumber > 0) {\n // There are more lines above this view zone\n positionBefore = new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(viewZoneWhitespace.afterLineNumber, context.viewModel.getLineMaxColumn(viewZoneWhitespace.afterLineNumber));\n }\n if (positionAfter === null) {\n position = positionBefore;\n }\n else if (positionBefore === null) {\n position = positionAfter;\n }\n else if (mouseVerticalOffset < viewZoneMiddle) {\n position = positionBefore;\n }\n else {\n position = positionAfter;\n }\n return {\n viewZoneId: viewZoneWhitespace.id,\n afterLineNumber: viewZoneWhitespace.afterLineNumber,\n positionBefore: positionBefore,\n positionAfter: positionAfter,\n position: position\n };\n }\n return null;\n }\n getFullLineRangeAtCoord(mouseVerticalOffset) {\n if (this._context.viewLayout.isAfterLines(mouseVerticalOffset)) {\n // Below the last line\n const lineNumber = this._context.viewModel.getLineCount();\n const maxLineColumn = this._context.viewModel.getLineMaxColumn(lineNumber);\n return {\n range: new _common_core_range_js__WEBPACK_IMPORTED_MODULE_4__.Range(lineNumber, maxLineColumn, lineNumber, maxLineColumn),\n isAfterLines: true\n };\n }\n const lineNumber = this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);\n const maxLineColumn = this._context.viewModel.getLineMaxColumn(lineNumber);\n return {\n range: new _common_core_range_js__WEBPACK_IMPORTED_MODULE_4__.Range(lineNumber, 1, lineNumber, maxLineColumn),\n isAfterLines: false\n };\n }\n getLineNumberAtVerticalOffset(mouseVerticalOffset) {\n return this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);\n }\n isAfterLines(mouseVerticalOffset) {\n return this._context.viewLayout.isAfterLines(mouseVerticalOffset);\n }\n isInTopPadding(mouseVerticalOffset) {\n return this._context.viewLayout.isInTopPadding(mouseVerticalOffset);\n }\n isInBottomPadding(mouseVerticalOffset) {\n return this._context.viewLayout.isInBottomPadding(mouseVerticalOffset);\n }\n getVerticalOffsetForLineNumber(lineNumber) {\n return this._context.viewLayout.getVerticalOffsetForLineNumber(lineNumber);\n }\n findAttribute(element, attr) {\n return HitTestContext._findAttribute(element, attr, this._viewHelper.viewDomNode);\n }\n static _findAttribute(element, attr, stopAt) {\n while (element && element !== document.body) {\n if (element.hasAttribute && element.hasAttribute(attr)) {\n return element.getAttribute(attr);\n }\n if (element === stopAt) {\n return null;\n }\n element = element.parentNode;\n }\n return null;\n }\n getLineWidth(lineNumber) {\n return this._viewHelper.getLineWidth(lineNumber);\n }\n visibleRangeForPosition(lineNumber, column) {\n return this._viewHelper.visibleRangeForPosition(lineNumber, column);\n }\n getPositionFromDOMInfo(spanNode, offset) {\n return this._viewHelper.getPositionFromDOMInfo(spanNode, offset);\n }\n getCurrentScrollTop() {\n return this._context.viewLayout.getCurrentScrollTop();\n }\n getCurrentScrollLeft() {\n return this._context.viewLayout.getCurrentScrollLeft();\n }\n}\nclass BareHitTestRequest {\n constructor(ctx, editorPos, pos, relativePos) {\n this.editorPos = editorPos;\n this.pos = pos;\n this.relativePos = relativePos;\n this.mouseVerticalOffset = Math.max(0, ctx.getCurrentScrollTop() + this.relativePos.y);\n this.mouseContentHorizontalOffset = ctx.getCurrentScrollLeft() + this.relativePos.x - ctx.layoutInfo.contentLeft;\n this.isInMarginArea = (this.relativePos.x < ctx.layoutInfo.contentLeft && this.relativePos.x >= ctx.layoutInfo.glyphMarginLeft);\n this.isInContentArea = !this.isInMarginArea;\n this.mouseColumn = Math.max(0, MouseTargetFactory._getMouseColumn(this.mouseContentHorizontalOffset, ctx.typicalHalfwidthCharacterWidth));\n }\n}\nclass HitTestRequest extends BareHitTestRequest {\n constructor(ctx, editorPos, pos, relativePos, target) {\n super(ctx, editorPos, pos, relativePos);\n this._ctx = ctx;\n if (target) {\n this.target = target;\n this.targetPath = _view_viewPart_js__WEBPACK_IMPORTED_MODULE_1__.PartFingerprints.collect(target, ctx.viewDomNode);\n }\n else {\n this.target = null;\n this.targetPath = new Uint8Array(0);\n }\n }\n toString() {\n return `pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}\\n\\ttarget: ${this.target ? this.target.outerHTML : null}`;\n }\n _getMouseColumn(position = null) {\n if (position && position.column < this._ctx.viewModel.getLineMaxColumn(position.lineNumber)) {\n // Most likely, the line contains foreign decorations...\n return _common_core_cursorColumns_js__WEBPACK_IMPORTED_MODULE_5__.CursorColumns.visibleColumnFromColumn(this._ctx.viewModel.getLineContent(position.lineNumber), position.column, this._ctx.viewModel.model.getOptions().tabSize) + 1;\n }\n return this.mouseColumn;\n }\n fulfillUnknown(position = null) {\n return MouseTarget.createUnknown(this.target, this._getMouseColumn(position), position);\n }\n fulfillTextarea() {\n return MouseTarget.createTextarea(this.target, this._getMouseColumn());\n }\n fulfillMargin(type, position, range, detail) {\n return MouseTarget.createMargin(type, this.target, this._getMouseColumn(position), position, range, detail);\n }\n fulfillViewZone(type, position, detail) {\n return MouseTarget.createViewZone(type, this.target, this._getMouseColumn(position), position, detail);\n }\n fulfillContentText(position, range, detail) {\n return MouseTarget.createContentText(this.target, this._getMouseColumn(position), position, range, detail);\n }\n fulfillContentEmpty(position, detail) {\n return MouseTarget.createContentEmpty(this.target, this._getMouseColumn(position), position, detail);\n }\n fulfillContentWidget(detail) {\n return MouseTarget.createContentWidget(this.target, this._getMouseColumn(), detail);\n }\n fulfillScrollbar(position) {\n return MouseTarget.createScrollbar(this.target, this._getMouseColumn(position), position);\n }\n fulfillOverlayWidget(detail) {\n return MouseTarget.createOverlayWidget(this.target, this._getMouseColumn(), detail);\n }\n withTarget(target) {\n return new HitTestRequest(this._ctx, this.editorPos, this.pos, this.relativePos, target);\n }\n}\nconst EMPTY_CONTENT_AFTER_LINES = { isAfterLines: true };\nfunction createEmptyContentDataInLines(horizontalDistanceToText) {\n return {\n isAfterLines: false,\n horizontalDistanceToText: horizontalDistanceToText\n };\n}\nclass MouseTargetFactory {\n constructor(context, viewHelper) {\n this._context = context;\n this._viewHelper = viewHelper;\n }\n mouseTargetIsWidget(e) {\n const t = e.target;\n const path = _view_viewPart_js__WEBPACK_IMPORTED_MODULE_1__.PartFingerprints.collect(t, this._viewHelper.viewDomNode);\n // Is it a content widget?\n if (ElementPath.isChildOfContentWidgets(path) || ElementPath.isChildOfOverflowingContentWidgets(path)) {\n return true;\n }\n // Is it an overlay widget?\n if (ElementPath.isChildOfOverlayWidgets(path)) {\n return true;\n }\n return false;\n }\n createMouseTarget(lastRenderData, editorPos, pos, relativePos, target) {\n const ctx = new HitTestContext(this._context, this._viewHelper, lastRenderData);\n const request = new HitTestRequest(ctx, editorPos, pos, relativePos, target);\n try {\n const r = MouseTargetFactory._createMouseTarget(ctx, request, false);\n if (r.type === 6 /* MouseTargetType.CONTENT_TEXT */) {\n // Snap to the nearest soft tab boundary if atomic soft tabs are enabled.\n if (ctx.stickyTabStops && r.position !== null) {\n const position = MouseTargetFactory._snapToSoftTabBoundary(r.position, ctx.viewModel);\n const range = _common_core_range_js__WEBPACK_IMPORTED_MODULE_4__.Range.fromPositions(position, position).plusRange(r.range);\n return request.fulfillContentText(position, range, r.detail);\n }\n }\n // console.log(MouseTarget.toString(r));\n return r;\n }\n catch (err) {\n // console.log(err);\n return request.fulfillUnknown();\n }\n }\n static _createMouseTarget(ctx, request, domHitTestExecuted) {\n // console.log(`${domHitTestExecuted ? '=>' : ''}CAME IN REQUEST: ${request}`);\n // First ensure the request has a target\n if (request.target === null) {\n if (domHitTestExecuted) {\n // Still no target... and we have already executed hit test...\n return request.fulfillUnknown();\n }\n const hitTestResult = MouseTargetFactory._doHitTest(ctx, request);\n if (hitTestResult.type === 1 /* HitTestResultType.Content */) {\n return MouseTargetFactory.createMouseTargetFromHitTestPosition(ctx, request, hitTestResult.spanNode, hitTestResult.position, hitTestResult.injectedText);\n }\n return this._createMouseTarget(ctx, request.withTarget(hitTestResult.hitTarget), true);\n }\n // we know for a fact that request.target is not null\n const resolvedRequest = request;\n let result = null;\n result = result || MouseTargetFactory._hitTestContentWidget(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestOverlayWidget(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestMinimap(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestScrollbarSlider(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestViewZone(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestMargin(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestViewCursor(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestTextArea(ctx, resolvedRequest);\n result = result || MouseTargetFactory._hitTestViewLines(ctx, resolvedRequest, domHitTestExecuted);\n result = result || MouseTargetFactory._hitTestScrollbar(ctx, resolvedRequest);\n return (result || request.fulfillUnknown());\n }\n static _hitTestContentWidget(ctx, request) {\n // Is it a content widget?\n if (ElementPath.isChildOfContentWidgets(request.targetPath) || ElementPath.isChildOfOverflowingContentWidgets(request.targetPath)) {\n const widgetId = ctx.findAttribute(request.target, 'widgetId');\n if (widgetId) {\n return request.fulfillContentWidget(widgetId);\n }\n else {\n return request.fulfillUnknown();\n }\n }\n return null;\n }\n static _hitTestOverlayWidget(ctx, request) {\n // Is it an overlay widget?\n if (ElementPath.isChildOfOverlayWidgets(request.targetPath)) {\n const widgetId = ctx.findAttribute(request.target, 'widgetId');\n if (widgetId) {\n return request.fulfillOverlayWidget(widgetId);\n }\n else {\n return request.fulfillUnknown();\n }\n }\n return null;\n }\n static _hitTestViewCursor(ctx, request) {\n if (request.target) {\n // Check if we've hit a painted cursor\n const lastViewCursorsRenderData = ctx.lastRenderData.lastViewCursorsRenderData;\n for (const d of lastViewCursorsRenderData) {\n if (request.target === d.domNode) {\n return request.fulfillContentText(d.position, null, { mightBeForeignElement: false, injectedText: null });\n }\n }\n }\n if (request.isInContentArea) {\n // Edge has a bug when hit-testing the exact position of a cursor,\n // instead of returning the correct dom node, it returns the\n // first or last rendered view line dom node, therefore help it out\n // and first check if we are on top of a cursor\n const lastViewCursorsRenderData = ctx.lastRenderData.lastViewCursorsRenderData;\n const mouseContentHorizontalOffset = request.mouseContentHorizontalOffset;\n const mouseVerticalOffset = request.mouseVerticalOffset;\n for (const d of lastViewCursorsRenderData) {\n if (mouseContentHorizontalOffset < d.contentLeft) {\n // mouse position is to the left of the cursor\n continue;\n }\n if (mouseContentHorizontalOffset > d.contentLeft + d.width) {\n // mouse position is to the right of the cursor\n continue;\n }\n const cursorVerticalOffset = ctx.getVerticalOffsetForLineNumber(d.position.lineNumber);\n if (cursorVerticalOffset <= mouseVerticalOffset\n && mouseVerticalOffset <= cursorVerticalOffset + d.height) {\n return request.fulfillContentText(d.position, null, { mightBeForeignElement: false, injectedText: null });\n }\n }\n }\n return null;\n }\n static _hitTestViewZone(ctx, request) {\n const viewZoneData = ctx.getZoneAtCoord(request.mouseVerticalOffset);\n if (viewZoneData) {\n const mouseTargetType = (request.isInContentArea ? 8 /* MouseTargetType.CONTENT_VIEW_ZONE */ : 5 /* MouseTargetType.GUTTER_VIEW_ZONE */);\n return request.fulfillViewZone(mouseTargetType, viewZoneData.position, viewZoneData);\n }\n return null;\n }\n static _hitTestTextArea(ctx, request) {\n // Is it the textarea?\n if (ElementPath.isTextArea(request.targetPath)) {\n if (ctx.lastRenderData.lastTextareaPosition) {\n return request.fulfillContentText(ctx.lastRenderData.lastTextareaPosition, null, { mightBeForeignElement: false, injectedText: null });\n }\n return request.fulfillTextarea();\n }\n return null;\n }\n static _hitTestMargin(ctx, request) {\n if (request.isInMarginArea) {\n const res = ctx.getFullLineRangeAtCoord(request.mouseVerticalOffset);\n const pos = res.range.getStartPosition();\n let offset = Math.abs(request.relativePos.x);\n const detail = {\n isAfterLines: res.isAfterLines,\n glyphMarginLeft: ctx.layoutInfo.glyphMarginLeft,\n glyphMarginWidth: ctx.layoutInfo.glyphMarginWidth,\n lineNumbersWidth: ctx.layoutInfo.lineNumbersWidth,\n offsetX: offset\n };\n offset -= ctx.layoutInfo.glyphMarginLeft;\n if (offset <= ctx.layoutInfo.glyphMarginWidth) {\n // On the glyph margin\n return request.fulfillMargin(2 /* MouseTargetType.GUTTER_GLYPH_MARGIN */, pos, res.range, detail);\n }\n offset -= ctx.layoutInfo.glyphMarginWidth;\n if (offset <= ctx.layoutInfo.lineNumbersWidth) {\n // On the line numbers\n return request.fulfillMargin(3 /* MouseTargetType.GUTTER_LINE_NUMBERS */, pos, res.range, detail);\n }\n offset -= ctx.layoutInfo.lineNumbersWidth;\n // On the line decorations\n return request.fulfillMargin(4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */, pos, res.range, detail);\n }\n return null;\n }\n static _hitTestViewLines(ctx, request, domHitTestExecuted) {\n if (!ElementPath.isChildOfViewLines(request.targetPath)) {\n return null;\n }\n if (ctx.isInTopPadding(request.mouseVerticalOffset)) {\n return request.fulfillContentEmpty(new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(1, 1), EMPTY_CONTENT_AFTER_LINES);\n }\n // Check if it is below any lines and any view zones\n if (ctx.isAfterLines(request.mouseVerticalOffset) || ctx.isInBottomPadding(request.mouseVerticalOffset)) {\n // This most likely indicates it happened after the last view-line\n const lineCount = ctx.viewModel.getLineCount();\n const maxLineColumn = ctx.viewModel.getLineMaxColumn(lineCount);\n return request.fulfillContentEmpty(new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(lineCount, maxLineColumn), EMPTY_CONTENT_AFTER_LINES);\n }\n if (domHitTestExecuted) {\n // Check if we are hitting a view-line (can happen in the case of inline decorations on empty lines)\n // See https://github.com/microsoft/vscode/issues/46942\n if (ElementPath.isStrictChildOfViewLines(request.targetPath)) {\n const lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\n if (ctx.viewModel.getLineLength(lineNumber) === 0) {\n const lineWidth = ctx.getLineWidth(lineNumber);\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\n return request.fulfillContentEmpty(new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(lineNumber, 1), detail);\n }\n const lineWidth = ctx.getLineWidth(lineNumber);\n if (request.mouseContentHorizontalOffset >= lineWidth) {\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\n const pos = new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(lineNumber, ctx.viewModel.getLineMaxColumn(lineNumber));\n return request.fulfillContentEmpty(pos, detail);\n }\n }\n // We have already executed hit test...\n return request.fulfillUnknown();\n }\n const hitTestResult = MouseTargetFactory._doHitTest(ctx, request);\n if (hitTestResult.type === 1 /* HitTestResultType.Content */) {\n return MouseTargetFactory.createMouseTargetFromHitTestPosition(ctx, request, hitTestResult.spanNode, hitTestResult.position, hitTestResult.injectedText);\n }\n return this._createMouseTarget(ctx, request.withTarget(hitTestResult.hitTarget), true);\n }\n static _hitTestMinimap(ctx, request) {\n if (ElementPath.isChildOfMinimap(request.targetPath)) {\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\n const maxColumn = ctx.viewModel.getLineMaxColumn(possibleLineNumber);\n return request.fulfillScrollbar(new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(possibleLineNumber, maxColumn));\n }\n return null;\n }\n static _hitTestScrollbarSlider(ctx, request) {\n if (ElementPath.isChildOfScrollableElement(request.targetPath)) {\n if (request.target && request.target.nodeType === 1) {\n const className = request.target.className;\n if (className && /\\b(slider|scrollbar)\\b/.test(className)) {\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\n const maxColumn = ctx.viewModel.getLineMaxColumn(possibleLineNumber);\n return request.fulfillScrollbar(new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(possibleLineNumber, maxColumn));\n }\n }\n }\n return null;\n }\n static _hitTestScrollbar(ctx, request) {\n // Is it the overview ruler?\n // Is it a child of the scrollable element?\n if (ElementPath.isChildOfScrollableElement(request.targetPath)) {\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\n const maxColumn = ctx.viewModel.getLineMaxColumn(possibleLineNumber);\n return request.fulfillScrollbar(new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(possibleLineNumber, maxColumn));\n }\n return null;\n }\n getMouseColumn(relativePos) {\n const options = this._context.configuration.options;\n const layoutInfo = options.get(141 /* EditorOption.layoutInfo */);\n const mouseContentHorizontalOffset = this._context.viewLayout.getCurrentScrollLeft() + relativePos.x - layoutInfo.contentLeft;\n return MouseTargetFactory._getMouseColumn(mouseContentHorizontalOffset, options.get(48 /* EditorOption.fontInfo */).typicalHalfwidthCharacterWidth);\n }\n static _getMouseColumn(mouseContentHorizontalOffset, typicalHalfwidthCharacterWidth) {\n if (mouseContentHorizontalOffset < 0) {\n return 1;\n }\n const chars = Math.round(mouseContentHorizontalOffset / typicalHalfwidthCharacterWidth);\n return (chars + 1);\n }\n static createMouseTargetFromHitTestPosition(ctx, request, spanNode, pos, injectedText) {\n const lineNumber = pos.lineNumber;\n const column = pos.column;\n const lineWidth = ctx.getLineWidth(lineNumber);\n if (request.mouseContentHorizontalOffset > lineWidth) {\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\n return request.fulfillContentEmpty(pos, detail);\n }\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column);\n if (!visibleRange) {\n return request.fulfillUnknown(pos);\n }\n const columnHorizontalOffset = visibleRange.left;\n if (Math.abs(request.mouseContentHorizontalOffset - columnHorizontalOffset) < 1) {\n return request.fulfillContentText(pos, null, { mightBeForeignElement: !!injectedText, injectedText });\n }\n const points = [];\n points.push({ offset: visibleRange.left, column: column });\n if (column > 1) {\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column - 1);\n if (visibleRange) {\n points.push({ offset: visibleRange.left, column: column - 1 });\n }\n }\n const lineMaxColumn = ctx.viewModel.getLineMaxColumn(lineNumber);\n if (column < lineMaxColumn) {\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column + 1);\n if (visibleRange) {\n points.push({ offset: visibleRange.left, column: column + 1 });\n }\n }\n points.sort((a, b) => a.offset - b.offset);\n const mouseCoordinates = request.pos.toClientCoordinates();\n const spanNodeClientRect = spanNode.getBoundingClientRect();\n const mouseIsOverSpanNode = (spanNodeClientRect.left <= mouseCoordinates.clientX && mouseCoordinates.clientX <= spanNodeClientRect.right);\n let rng = null;\n for (let i = 1; i < points.length; i++) {\n const prev = points[i - 1];\n const curr = points[i];\n if (prev.offset <= request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset <= curr.offset) {\n rng = new _common_core_range_js__WEBPACK_IMPORTED_MODULE_4__.Range(lineNumber, prev.column, lineNumber, curr.column);\n // See https://github.com/microsoft/vscode/issues/152819\n // Due to the use of zwj, the browser's hit test result is skewed towards the left\n // Here we try to correct that if the mouse horizontal offset is closer to the right than the left\n const prevDelta = Math.abs(prev.offset - request.mouseContentHorizontalOffset);\n const nextDelta = Math.abs(curr.offset - request.mouseContentHorizontalOffset);\n pos = (prevDelta < nextDelta\n ? new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(lineNumber, prev.column)\n : new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(lineNumber, curr.column));\n break;\n }\n }\n return request.fulfillContentText(pos, rng, { mightBeForeignElement: !mouseIsOverSpanNode || !!injectedText, injectedText });\n }\n /**\n * Most probably WebKit browsers and Edge\n */\n static _doHitTestWithCaretRangeFromPoint(ctx, request) {\n // In Chrome, especially on Linux it is possible to click between lines,\n // so try to adjust the `hity` below so that it lands in the center of a line\n const lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\n const lineStartVerticalOffset = ctx.getVerticalOffsetForLineNumber(lineNumber);\n const lineEndVerticalOffset = lineStartVerticalOffset + ctx.lineHeight;\n const isBelowLastLine = (lineNumber === ctx.viewModel.getLineCount()\n && request.mouseVerticalOffset > lineEndVerticalOffset);\n if (!isBelowLastLine) {\n const lineCenteredVerticalOffset = Math.floor((lineStartVerticalOffset + lineEndVerticalOffset) / 2);\n let adjustedPageY = request.pos.y + (lineCenteredVerticalOffset - request.mouseVerticalOffset);\n if (adjustedPageY <= request.editorPos.y) {\n adjustedPageY = request.editorPos.y + 1;\n }\n if (adjustedPageY >= request.editorPos.y + request.editorPos.height) {\n adjustedPageY = request.editorPos.y + request.editorPos.height - 1;\n }\n const adjustedPage = new _editorDom_js__WEBPACK_IMPORTED_MODULE_0__.PageCoordinates(request.pos.x, adjustedPageY);\n const r = this._actualDoHitTestWithCaretRangeFromPoint(ctx, adjustedPage.toClientCoordinates());\n if (r.type === 1 /* HitTestResultType.Content */) {\n return r;\n }\n }\n // Also try to hit test without the adjustment (for the edge cases that we are near the top or bottom)\n return this._actualDoHitTestWithCaretRangeFromPoint(ctx, request.pos.toClientCoordinates());\n }\n static _actualDoHitTestWithCaretRangeFromPoint(ctx, coords) {\n const shadowRoot = _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_6__.getShadowRoot(ctx.viewDomNode);\n let range;\n if (shadowRoot) {\n if (typeof shadowRoot.caretRangeFromPoint === 'undefined') {\n range = shadowCaretRangeFromPoint(shadowRoot, coords.clientX, coords.clientY);\n }\n else {\n range = shadowRoot.caretRangeFromPoint(coords.clientX, coords.clientY);\n }\n }\n else {\n range = document.caretRangeFromPoint(coords.clientX, coords.clientY);\n }\n if (!range || !range.startContainer) {\n return new UnknownHitTestResult();\n }\n // Chrome always hits a TEXT_NODE, while Edge sometimes hits a token span\n const startContainer = range.startContainer;\n if (startContainer.nodeType === startContainer.TEXT_NODE) {\n // startContainer is expected to be the token text\n const parent1 = startContainer.parentNode; // expected to be the token span\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span\n const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div\n const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? parent3.className : null;\n if (parent3ClassName === _viewParts_lines_viewLine_js__WEBPACK_IMPORTED_MODULE_2__.ViewLine.CLASS_NAME) {\n return HitTestResult.createFromDOMInfo(ctx, parent1, range.startOffset);\n }\n else {\n return new UnknownHitTestResult(startContainer.parentNode);\n }\n }\n else if (startContainer.nodeType === startContainer.ELEMENT_NODE) {\n // startContainer is expected to be the token span\n const parent1 = startContainer.parentNode; // expected to be the view line container span\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line div\n const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? parent2.className : null;\n if (parent2ClassName === _viewParts_lines_viewLine_js__WEBPACK_IMPORTED_MODULE_2__.ViewLine.CLASS_NAME) {\n return HitTestResult.createFromDOMInfo(ctx, startContainer, startContainer.textContent.length);\n }\n else {\n return new UnknownHitTestResult(startContainer);\n }\n }\n return new UnknownHitTestResult();\n }\n /**\n * Most probably Gecko\n */\n static _doHitTestWithCaretPositionFromPoint(ctx, coords) {\n const hitResult = document.caretPositionFromPoint(coords.clientX, coords.clientY);\n if (hitResult.offsetNode.nodeType === hitResult.offsetNode.TEXT_NODE) {\n // offsetNode is expected to be the token text\n const parent1 = hitResult.offsetNode.parentNode; // expected to be the token span\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span\n const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div\n const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? parent3.className : null;\n if (parent3ClassName === _viewParts_lines_viewLine_js__WEBPACK_IMPORTED_MODULE_2__.ViewLine.CLASS_NAME) {\n return HitTestResult.createFromDOMInfo(ctx, hitResult.offsetNode.parentNode, hitResult.offset);\n }\n else {\n return new UnknownHitTestResult(hitResult.offsetNode.parentNode);\n }\n }\n // For inline decorations, Gecko sometimes returns the `` of the line and the offset is the `` with the inline decoration\n // Some other times, it returns the `` with the inline decoration\n if (hitResult.offsetNode.nodeType === hitResult.offsetNode.ELEMENT_NODE) {\n const parent1 = hitResult.offsetNode.parentNode;\n const parent1ClassName = parent1 && parent1.nodeType === parent1.ELEMENT_NODE ? parent1.className : null;\n const parent2 = parent1 ? parent1.parentNode : null;\n const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? parent2.className : null;\n if (parent1ClassName === _viewParts_lines_viewLine_js__WEBPACK_IMPORTED_MODULE_2__.ViewLine.CLASS_NAME) {\n // it returned the `` of the line and the offset is the `` with the inline decoration\n const tokenSpan = hitResult.offsetNode.childNodes[Math.min(hitResult.offset, hitResult.offsetNode.childNodes.length - 1)];\n if (tokenSpan) {\n return HitTestResult.createFromDOMInfo(ctx, tokenSpan, 0);\n }\n }\n else if (parent2ClassName === _viewParts_lines_viewLine_js__WEBPACK_IMPORTED_MODULE_2__.ViewLine.CLASS_NAME) {\n // it returned the `` with the inline decoration\n return HitTestResult.createFromDOMInfo(ctx, hitResult.offsetNode, 0);\n }\n }\n return new UnknownHitTestResult(hitResult.offsetNode);\n }\n static _snapToSoftTabBoundary(position, viewModel) {\n const lineContent = viewModel.getLineContent(position.lineNumber);\n const { tabSize } = viewModel.model.getOptions();\n const newPosition = _common_cursor_cursorAtomicMoveOperations_js__WEBPACK_IMPORTED_MODULE_7__.AtomicTabMoveOperations.atomicPosition(lineContent, position.column - 1, tabSize, 2 /* Direction.Nearest */);\n if (newPosition !== -1) {\n return new _common_core_position_js__WEBPACK_IMPORTED_MODULE_3__.Position(position.lineNumber, newPosition + 1);\n }\n return position;\n }\n static _doHitTest(ctx, request) {\n let result = new UnknownHitTestResult();\n if (typeof document.caretRangeFromPoint === 'function') {\n result = this._doHitTestWithCaretRangeFromPoint(ctx, request);\n }\n else if (document.caretPositionFromPoint) {\n result = this._doHitTestWithCaretPositionFromPoint(ctx, request.pos.toClientCoordinates());\n }\n if (result.type === 1 /* HitTestResultType.Content */) {\n const injectedText = ctx.viewModel.getInjectedTextAt(result.position);\n const normalizedPosition = ctx.viewModel.normalizePosition(result.position, 2 /* PositionAffinity.None */);\n if (injectedText || !normalizedPosition.equals(result.position)) {\n result = new ContentHitTestResult(normalizedPosition, result.spanNode, injectedText);\n }\n }\n return result;\n }\n}\nfunction shadowCaretRangeFromPoint(shadowRoot, x, y) {\n const range = document.createRange();\n // Get the element under the point\n let el = shadowRoot.elementFromPoint(x, y);\n if (el !== null) {\n // Get the last child of the element until its firstChild is a text node\n // This assumes that the pointer is on the right of the line, out of the tokens\n // and that we want to get the offset of the last token of the line\n while (el && el.firstChild && el.firstChild.nodeType !== el.firstChild.TEXT_NODE && el.lastChild && el.lastChild.firstChild) {\n el = el.lastChild;\n }\n // Grab its rect\n const rect = el.getBoundingClientRect();\n // And its font (the computed shorthand font property might be empty, see #3217)\n const fontStyle = window.getComputedStyle(el, null).getPropertyValue('font-style');\n const fontVariant = window.getComputedStyle(el, null).getPropertyValue('font-variant');\n const fontWeight = window.getComputedStyle(el, null).getPropertyValue('font-weight');\n const fontSize = window.getComputedStyle(el, null).getPropertyValue('font-size');\n const lineHeight = window.getComputedStyle(el, null).getPropertyValue('line-height');\n const fontFamily = window.getComputedStyle(el, null).getPropertyValue('font-family');\n const font = `${fontStyle} ${fontVariant} ${fontWeight} ${fontSize}/${lineHeight} ${fontFamily}`;\n // And also its txt content\n const text = el.innerText;\n // Position the pixel cursor at the left of the element\n let pixelCursor = rect.left;\n let offset = 0;\n let step;\n // If the point is on the right of the box put the cursor after the last character\n if (x > rect.left + rect.width) {\n offset = text.length;\n }\n else {\n const charWidthReader = CharWidthReader.getInstance();\n // Goes through all the characters of the innerText, and checks if the x of the point\n // belongs to the character.\n for (let i = 0; i < text.length + 1; i++) {\n // The step is half the width of the character\n step = charWidthReader.getCharWidth(text.charAt(i), font) / 2;\n // Move to the center of the character\n pixelCursor += step;\n // If the x of the point is smaller that the position of the cursor, the point is over that character\n if (x < pixelCursor) {\n offset = i;\n break;\n }\n // Move between the current character and the next\n pixelCursor += step;\n }\n }\n // Creates a range with the text node of the element and set the offset found\n range.setStart(el.firstChild, offset);\n range.setEnd(el.firstChild, offset);\n }\n return range;\n}\nclass CharWidthReader {\n static getInstance() {\n if (!CharWidthReader._INSTANCE) {\n CharWidthReader._INSTANCE = new CharWidthReader();\n }\n return CharWidthReader._INSTANCE;\n }\n constructor() {\n this._cache = {};\n this._canvas = document.createElement('canvas');\n }\n getCharWidth(char, font) {\n const cacheKey = char + font;\n if (this._cache[cacheKey]) {\n return this._cache[cacheKey];\n }\n const context = this._canvas.getContext('2d');\n context.font = font;\n const metrics = context.measureText(char);\n const width = metrics.width;\n this._cache[cacheKey] = width;\n return width;\n }\n}\nCharWidthReader._INSTANCE = null;\n\n\n//# sourceURL=webpack://abaplint-playground/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js?"); + +/***/ }), + +/***/ "./node_modules/monaco-editor/esm/vs/editor/browser/controller/pointerHandler.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/monaco-editor/esm/vs/editor/browser/controller/pointerHandler.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PointerEventHandler: () => (/* binding */ PointerEventHandler),\n/* harmony export */ PointerHandler: () => (/* binding */ PointerHandler)\n/* harmony export */ });\n/* harmony import */ var _base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../base/browser/dom.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/dom.js\");\n/* harmony import */ var _base_common_platform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../base/common/platform.js */ \"./node_modules/monaco-editor/esm/vs/base/common/platform.js\");\n/* harmony import */ var _base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../base/browser/touch.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/touch.js\");\n/* harmony import */ var _base_common_lifecycle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../base/common/lifecycle.js */ \"./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js\");\n/* harmony import */ var _mouseHandler_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mouseHandler.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js\");\n/* harmony import */ var _editorDom_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../editorDom.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/editorDom.js\");\n/* harmony import */ var _base_browser_canIUse_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../base/browser/canIUse.js */ \"./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js\");\n/* harmony import */ var _textAreaInput_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./textAreaInput.js */ \"./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaInput.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n/**\n * Currently only tested on iOS 13/ iPadOS.\n */\nclass PointerEventHandler extends _mouseHandler_js__WEBPACK_IMPORTED_MODULE_4__.MouseHandler {\n constructor(context, viewController, viewHelper) {\n super(context, viewController, viewHelper);\n this._register(_base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.Gesture.addTarget(this.viewHelper.linesContentDomNode));\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.linesContentDomNode, _base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Tap, (e) => this.onTap(e)));\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.linesContentDomNode, _base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Change, (e) => this.onChange(e)));\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.linesContentDomNode, _base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Contextmenu, (e) => this._onContextMenu(new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.EditorMouseEvent(e, false, this.viewHelper.viewDomNode), false)));\n this._lastPointerType = 'mouse';\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.linesContentDomNode, 'pointerdown', (e) => {\n const pointerType = e.pointerType;\n if (pointerType === 'mouse') {\n this._lastPointerType = 'mouse';\n return;\n }\n else if (pointerType === 'touch') {\n this._lastPointerType = 'touch';\n }\n else {\n this._lastPointerType = 'pen';\n }\n }));\n // PonterEvents\n const pointerEvents = new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.EditorPointerEventFactory(this.viewHelper.viewDomNode);\n this._register(pointerEvents.onPointerMove(this.viewHelper.viewDomNode, (e) => this._onMouseMove(e)));\n this._register(pointerEvents.onPointerUp(this.viewHelper.viewDomNode, (e) => this._onMouseUp(e)));\n this._register(pointerEvents.onPointerLeave(this.viewHelper.viewDomNode, (e) => this._onMouseLeave(e)));\n this._register(pointerEvents.onPointerDown(this.viewHelper.viewDomNode, (e, pointerId) => this._onMouseDown(e, pointerId)));\n }\n onTap(event) {\n if (!event.initialTarget || !this.viewHelper.linesContentDomNode.contains(event.initialTarget)) {\n return;\n }\n event.preventDefault();\n this.viewHelper.focusTextArea();\n const target = this._createMouseTarget(new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.EditorMouseEvent(event, false, this.viewHelper.viewDomNode), false);\n if (target.position) {\n // this.viewController.moveTo(target.position);\n this.viewController.dispatchMouse({\n position: target.position,\n mouseColumn: target.position.column,\n startedOnLineNumbers: false,\n revealType: 1 /* NavigationCommandRevealType.Minimal */,\n mouseDownCount: event.tapCount,\n inSelectionMode: false,\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n leftButton: false,\n middleButton: false,\n onInjectedText: target.type === 6 /* MouseTargetType.CONTENT_TEXT */ && target.detail.injectedText !== null\n });\n }\n }\n onChange(e) {\n if (this._lastPointerType === 'touch') {\n this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX, -e.translationY);\n }\n }\n _onMouseDown(e, pointerId) {\n if (e.browserEvent.pointerType === 'touch') {\n return;\n }\n super._onMouseDown(e, pointerId);\n }\n}\nclass TouchHandler extends _mouseHandler_js__WEBPACK_IMPORTED_MODULE_4__.MouseHandler {\n constructor(context, viewController, viewHelper) {\n super(context, viewController, viewHelper);\n this._register(_base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.Gesture.addTarget(this.viewHelper.linesContentDomNode));\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.linesContentDomNode, _base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Tap, (e) => this.onTap(e)));\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.linesContentDomNode, _base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Change, (e) => this.onChange(e)));\n this._register(_base_browser_dom_js__WEBPACK_IMPORTED_MODULE_0__.addDisposableListener(this.viewHelper.linesContentDomNode, _base_browser_touch_js__WEBPACK_IMPORTED_MODULE_2__.EventType.Contextmenu, (e) => this._onContextMenu(new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.EditorMouseEvent(e, false, this.viewHelper.viewDomNode), false)));\n }\n onTap(event) {\n event.preventDefault();\n this.viewHelper.focusTextArea();\n const target = this._createMouseTarget(new _editorDom_js__WEBPACK_IMPORTED_MODULE_5__.EditorMouseEvent(event, false, this.viewHelper.viewDomNode), false);\n if (target.position) {\n // Send the tap event also to the